From 6746557d05b2b1c207aa5d1a03e5426694c5bf2b Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Mon, 5 Mar 2012 13:40:17 -0500 Subject: [PATCH] addCommandAlias method for defining command aliases in build definitions. fixes #388 --- main/Defaults.scala | 12 ++++++++++++ sbt/src/sbt-test/actions/add-alias/A.scala | 3 +++ sbt/src/sbt-test/actions/add-alias/build.sbt | 2 ++ sbt/src/sbt-test/actions/add-alias/test | 2 ++ 4 files changed, 19 insertions(+) create mode 100644 sbt/src/sbt-test/actions/add-alias/A.scala create mode 100644 sbt/src/sbt-test/actions/add-alias/build.sbt create mode 100644 sbt/src/sbt-test/actions/add-alias/test diff --git a/main/Defaults.scala b/main/Defaults.scala index fd7e43b73..96cb14550 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -1139,6 +1139,18 @@ trait BuildExtra extends BuildCommon { import Defaults._ + /** Defines an alias given by `name` that expands to `value`. + * This alias is defined globally after projects are loaded. + * The alias is undefined when projects are unloaded. + * Names are restricted to be either alphanumeric or completely symbolic. + * As an exception, '-' and '_' are allowed within an alphanumeric name.*/ + def addCommandAlias(name: String, value: String): Seq[Setting[State => State]] = + { + val add = (s: State) => BasicCommands.addAlias(s, name, value) + val remove = (s: State) => BasicCommands.removeAlias(s, name) + def compose(setting: SettingKey[State => State], f: State => State) = setting in Global ~= (_ compose f) + Seq( compose(onLoad, add), compose(onUnload, remove) ) + } def addSbtPlugin(dependency: ModuleID): Setting[Seq[ModuleID]] = libraryDependencies <+= (sbtBinaryVersion in update,scalaBinaryVersion in update) { (sbtV, scalaV) => sbtPluginExtra(dependency, sbtV, scalaV) } diff --git a/sbt/src/sbt-test/actions/add-alias/A.scala b/sbt/src/sbt-test/actions/add-alias/A.scala new file mode 100644 index 000000000..a5cd1ae25 --- /dev/null +++ b/sbt/src/sbt-test/actions/add-alias/A.scala @@ -0,0 +1,3 @@ +object A extends App { + if(args(0).toBoolean) () else error("Fail") +} diff --git a/sbt/src/sbt-test/actions/add-alias/build.sbt b/sbt/src/sbt-test/actions/add-alias/build.sbt new file mode 100644 index 000000000..451b72246 --- /dev/null +++ b/sbt/src/sbt-test/actions/add-alias/build.sbt @@ -0,0 +1,2 @@ +addCommandAlias("demo-success", "run true") ++ +addCommandAlias("demo-failure", "run false") diff --git a/sbt/src/sbt-test/actions/add-alias/test b/sbt/src/sbt-test/actions/add-alias/test new file mode 100644 index 000000000..b82ec3f27 --- /dev/null +++ b/sbt/src/sbt-test/actions/add-alias/test @@ -0,0 +1,2 @@ +> demo-success +-> demo-failure