aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspace.java
diff options
context:
space:
mode:
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.java26
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();
}