diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d3c4db3..4ba2d386 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,16 @@
+
+## v2.5.0 (2016-05-10)
+
+
+#### Improvements
+
+* **SubCommand Aliases:** adds feature to yaml configs too ([69592195](https://github.com/kbknapp/clap-rs/commit/695921954dde46dfd483399dcdef482c9dd7f34a))
+
+#### Features
+
+* **SubCommands:** adds support for subcommand aliases ([66b4dea6](https://github.com/kbknapp/clap-rs/commit/66b4dea65c44d8f77ff522238a9237aed1bcab6d), closes [#469](https://github.com/kbknapp/clap-rs/issues/469))
+
+
### v2.4.3 (2016-05-10)
diff --git a/Cargo.toml b/Cargo.toml
index 052ba316..39d00ccc 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "clap"
-version = "2.4.3"
+version = "2.5.0"
authors = ["Kevin K. "]
exclude = ["examples/*", "clap-test/*", "tests/*", "benches/*", "*.png", "clap-perf/*", "*.dot"]
description = "A simple to use, efficient, and full featured Command Line Argument Parser"
diff --git a/README.md b/README.md
index 668bf6d4..62cce930 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,10 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
## What's New
+Here's what's new in v.2.5.0
+
+* Subcommands now support aliases - think of them as hidden subcommands that dispatch to said subcommand automatically
+
Here's what's new in v2.4.3
* Bug Fixes
@@ -499,7 +503,6 @@ The following graphic depicts `clap`s dependency graph (generated using [cargo-g
* **Blue** Color: Dev dependency, only used while developing.
![clap dependencies](clap_dep_graph.png)
-
### More Information
You can find complete documentation on the [github-pages site](http://kbknapp.github.io/clap-rs/clap/index.html) for this project.
@@ -508,11 +511,9 @@ You can also find usage examples in the [examples/](examples) directory of this
#### Video Tutorials
-There's also the video tutorial series [Argument Parsing with Rust](https://www.youtube.com/playlist?list=PLza5oFLQGTl0Bc_EU_pBNcX-rhVqDTRxv) that I've been working on.
+There's also the video tutorial series [Argument Parsing with Rust](https://www.youtube.com/playlist?list=PLza5oFLQGTl0Bc_EU_pBNcX-rhVqDTRxv).
-*Note*: Two new videos have just been added ([08 From Usage](https://youtu.be/xc6VdedFrG0), and [09 Typed Values](https://youtu.be/mZn3C1DnD90)), if you're already familiar with `clap` but want to know more about these two details you can check out those videos without watching the previous few.
-
-*Note*: Apologies for the resolution of the first video, it will be updated to a better resolution soon. The other videos have a proper resolution.
+**NOTE:** This series is getting out of date and needs to be updated
## How to Contribute
@@ -527,7 +528,9 @@ Please read [CONTRIBUTING.md](.github/CONTRIBUTING.md) before you start contribu
If contributing, you can run the tests as follows (assuming you're in the `clap-rs` directory)
```
-$ cargo test && make -C clap-tests test
+$ cargo test
+
+# If your tests affect the YAML feature set
$ cargo test --features yaml
# Only on nightly compiler:
diff --git a/src/app/mod.rs b/src/app/mod.rs
index b3db3390..dec9c72d 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -974,6 +974,13 @@ impl<'a> From<&'a Yaml> for App<'a, 'a> {
}
}
}
+ if let Some(v) = yaml["aliases"].as_vec() {
+ for ys in v {
+ if let Some(s) = ys.as_str() {
+ a = a.alias(s);
+ }
+ }
+ }
if let Some(v) = yaml["args"].as_vec() {
for arg_yaml in v {
a = a.arg(Arg::from_yaml(&arg_yaml.as_hash().unwrap()));