diff options
author | 2016-01-15 19:21:03 +0000 | |
---|---|---|
committer | 2016-01-15 22:29:53 +0000 | |
commit | c5ac4308655cbd7eebb70efde3ce1b9450133aec (patch) | |
tree | 4f78d35486d45b127a9c1990c4333d9a3991a23d /src/main/java/com/google/devtools/build | |
parent | da1e38736daa2f4187525421308054d4a489ca1a (diff) |
Adds support for invocation policy to the canonicalize-flags command.
--
MOS_MIGRATED_REVID=112267123
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java | 6 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java | 20 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java b/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java index de235eb09c..edd367830e 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java @@ -70,6 +70,12 @@ public final class InvocationPolicyEnforcer { return new InvocationPolicyEnforcer(parsePolicy(blazeServerStartupOptions.invocationPolicy)); } + public static InvocationPolicyEnforcer create(String invocationPolicy) + throws OptionsParsingException { + + return new InvocationPolicyEnforcer(parsePolicy(invocationPolicy)); + } + /** * Parses the given InvocationPolicy string, which may be a base64-encoded binary-serialized * InvocationPolicy message, or a text formatted InvocationPolicy message. Note that the diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java index 9e1a2c269b..290995e9e2 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CanonicalizeCommand.java @@ -20,6 +20,7 @@ import com.google.devtools.build.lib.runtime.BlazeCommandUtils; import com.google.devtools.build.lib.runtime.BlazeRuntime; import com.google.devtools.build.lib.runtime.Command; import com.google.devtools.build.lib.runtime.CommandEnvironment; +import com.google.devtools.build.lib.runtime.InvocationPolicyEnforcer; import com.google.devtools.build.lib.util.ExitCode; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionsBase; @@ -49,12 +50,17 @@ public final class CanonicalizeCommand implements BlazeCommand { category = "misc", help = "The command for which the options should be canonicalized.") public String forCommand; + + @Option(name = "invocation_policy", + defaultValue = "null") + public String invocationPolicy; } @Override public ExitCode exec(CommandEnvironment env, OptionsProvider options) { BlazeRuntime runtime = env.getRuntime(); - String commandName = options.getOptions(Options.class).forCommand; + Options canonicalizeOptions = options.getOptions(Options.class); + String commandName = canonicalizeOptions.forCommand; BlazeCommand command = runtime.getCommandMap().get(commandName); if (command == null) { env.getReporter().handle(Event.error("Not a valid command: '" + commandName @@ -65,7 +71,17 @@ public final class CanonicalizeCommand implements BlazeCommand { BlazeCommandUtils.getOptions( command.getClass(), runtime.getBlazeModules(), runtime.getRuleClassProvider()); try { - List<String> result = OptionsParser.canonicalize(optionsClasses, options.getResidue()); + + OptionsParser parser = OptionsParser.newOptionsParser(optionsClasses); + parser.setAllowResidue(false); + parser.parse(options.getResidue()); + + InvocationPolicyEnforcer invocationPolicyEnforcer = InvocationPolicyEnforcer.create( + canonicalizeOptions.invocationPolicy); + invocationPolicyEnforcer.enforce(parser, commandName); + + List<String> result = parser.canonicalize(); + for (String piece : result) { env.getReporter().getOutErr().printOutLn(piece); } |