diff options
Diffstat (limited to 'src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java')
-rw-r--r-- | src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java index e06f067d60..84bbc0b6eb 100644 --- a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java +++ b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.JavaIoFileSystem; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.UnixFileSystem; +import com.google.devtools.build.workspace.maven.Resolver; import com.google.devtools.common.options.OptionsParser; import java.io.File; @@ -41,14 +42,16 @@ public class GenerateWorkspace { private final EventHandler handler; private final FileSystem fileSystem; - private final com.google.devtools.build.workspace.maven.Resolver resolver; + private final Resolver resolver; private final Path outputDir; public static void main(String[] args) { OptionsParser parser = OptionsParser.newOptionsParser(GenerateWorkspaceOptions.class); parser.parseAndExitUponError(args); GenerateWorkspaceOptions options = parser.getOptions(GenerateWorkspaceOptions.class); - if (options.mavenProjects.isEmpty() && options.bazelProjects.isEmpty()) { + if (options.mavenProjects.isEmpty() + && options.bazelProjects.isEmpty() + && options.artifacts.isEmpty()) { printUsage(parser); return; } @@ -56,6 +59,7 @@ public class GenerateWorkspace { GenerateWorkspace workspaceFileGenerator = new GenerateWorkspace(options.outputDir); workspaceFileGenerator.generateFromWorkspace(options.bazelProjects); workspaceFileGenerator.generateFromPom(options.mavenProjects); + workspaceFileGenerator.generateFromArtifacts(options.artifacts); if (!workspaceFileGenerator.hasErrors()) { workspaceFileGenerator.writeResults(); } @@ -66,11 +70,11 @@ public class GenerateWorkspace { } private static void printUsage(OptionsParser parser) { - System.out.println("Usage: generate_workspace (-b PATH|-m PATH)+ [-o PATH]\n\n" + System.out.println("Usage: generate_workspace (-b PATH|-m PATH|-a coord)+ [-o PATH]\n\n" + "Generates a WORKSPACE file from the given projects and a BUILD file with a rule that " - + "contains all of the transitive dependencies. At least one bazel_project or " - + "maven_project must be specified. If output_dir is not specified, the generated files " - + "will be written to a temporary directory.\n"); + + "contains all of the transitive dependencies. At least one bazel_project, " + + "maven_project, or artifact coordinate must be specified. If output_dir is not " + + "specified, the generated files will be written to a temporary directory.\n"); System.out.println(parser.describeOptions(Collections.<String, String>emptyMap(), OptionsParser.HelpVerbosity.LONG)); } @@ -78,7 +82,7 @@ public class GenerateWorkspace { private GenerateWorkspace(String outputDir) { this.handler = new EventHandler(); this.fileSystem = getFileSystem(); - this.resolver = new com.google.devtools.build.workspace.maven.Resolver(handler); + this.resolver = new Resolver(handler); if (outputDir.isEmpty()) { this.outputDir = fileSystem.getPath(Files.createTempDir().toString()); } else { @@ -93,7 +97,7 @@ public class GenerateWorkspace { private void generateFromWorkspace(List<String> projects) { for (String project : projects) { - Resolver workspaceResolver = new Resolver(resolver, handler); + WorkspaceResolver workspaceResolver = new WorkspaceResolver(resolver, handler); Path projectPath = fileSystem.getPath(getAbsolute(project)); Package externalPackage = workspaceResolver.parse(projectPath.getRelative("WORKSPACE")); workspaceResolver.resolveTransitiveDependencies(externalPackage); @@ -106,6 +110,12 @@ public class GenerateWorkspace { } } + private void generateFromArtifacts(List<String> artifacts) { + for (String artifactCoord : artifacts) { + resolver.resolveArtifact(artifactCoord); + } + } + private String getAbsolute(String path) { return Paths.get(System.getProperty("user.dir")).resolve(path).toString(); } |