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