Package com.google.devtools.moe.client.svn

Source Code of com.google.devtools.moe.client.svn.SvnCodebaseCreator

// Copyright 2011 The MOE Authors All Rights Reserved.

package com.google.devtools.moe.client.svn;

import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.devtools.moe.client.AppContext;
import com.google.devtools.moe.client.CommandRunner;
import com.google.devtools.moe.client.MoeProblem;
import com.google.devtools.moe.client.Utils;
import com.google.devtools.moe.client.codebase.Codebase;
import com.google.devtools.moe.client.codebase.CodebaseCreationError;
import com.google.devtools.moe.client.codebase.CodebaseCreator;
import com.google.devtools.moe.client.parser.RepositoryExpression;
import com.google.devtools.moe.client.parser.Term;
import com.google.devtools.moe.client.project.RepositoryConfig;
import com.google.devtools.moe.client.repositories.Revision;

import java.io.File;
import java.util.Map;

/**
* {@link CodebaseCreator} for svn.
*
* @author dbentley@google.com (Daniel Bentley)
*/
public class SvnCodebaseCreator implements CodebaseCreator {

  private final String name;
  private final RepositoryConfig config;
  private final SvnRevisionHistory revisionHistory;

  public SvnCodebaseCreator(
      String repositoryName, RepositoryConfig config, SvnRevisionHistory revisionHistory) {
    this.name = repositoryName;
    this.config = config;
    this.revisionHistory = revisionHistory;
  }

  @Override
  public Codebase create(Map<String, String> options) throws CodebaseCreationError{
    String revId = options.get("revision");
    if (revId == null) {
      revId = "HEAD";
    }

    Revision rev = revisionHistory.findHighestRevision(revId);

    File exportPath = AppContext.RUN.fileSystem.getTemporaryDirectory(
        String.format("svn_export_%s_%s_", name, rev.revId));

    try {
      SvnRepository.runSvnCommand(ImmutableList.of(
          "export", config.getUrl(), "-r", rev.revId, exportPath.getAbsolutePath()), "");
    } catch (CommandRunner.CommandException e) {
      throw new MoeProblem("could not export from svn" + e.getMessage());
    }

    // Filter codebase by ignore_file_res.
    final Predicate<CharSequence> nonIgnoredFilePred =
        Utils.nonMatchingPredicateFromRes(config.getIgnoreFileRes());
    Utils.filterFiles(exportPath, nonIgnoredFilePred);

    return new Codebase(
        exportPath, config.getProjectSpace(), new RepositoryExpression(new Term(name, options)));
  }
}
TOP

Related Classes of com.google.devtools.moe.client.svn.SvnCodebaseCreator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.