Fix handling of argument aliases

finchie
Nov 25, 2023, 10:17 AM
YBAXVS44BAEHH6KDZRQEYKRCYZPKDEQ2TFOXAPGHQNZOBYWVUGWAC

Dependencies

  • [2] LEJN3E4Q Generate more semantic HTML
  • [3] BMG4FSHN Add basic `clap` support
  • [4] MIY7QPYK Refactor argument handling into a separate file
  • [5] YTW5RB26 Refactor argument type handling into enum

Change contents

  • replacement in src/cli.rs at line 12
    [3.541][3.541:608]()
    #[arg(short = 'n', long, alias = "nom", env = "NAME_ENV_VAR")]
    [3.541]
    [3.753]
    #[arg(
    short = 'n',
    long,
    visible_alias = "nom",
    alias = "hidden-should-not-appear",
    env = "NAME_ENV_VAR"
    )]
  • edit in src/arg.rs at line 92
    [3.1518]
    [3.1518]
    fn aliases(arg: &Arg) -> impl ViewSequence<Arg> {
    let mut aliases = Vec::new();
    // Handle short aliases (-a, -b etc)
    if let Some(long_aliases) = arg.get_short_and_visible_aliases() {
    aliases.extend(
    long_aliases
    .iter()
    .map(|alias| alias.to_string())
    .filter(|alias| alias != arg.get_id()),
    );
    }
  • replacement in src/arg.rs at line 106
    [3.1519][3.1519:1647](),[3.1647][2.128:151](),[2.151][3.1647:1649](),[3.1647][3.1647:1649]()
    fn env(arg: &Arg) -> impl ViewSequence<Arg> {
    arg.get_env()
    .map(|variable| variable.to_string_lossy().to_string())
    .map(el::span)
    }
    [3.1519]
    [3.1649]
    // Handle long aliases (--alias1, --alias2 etc)
    if let Some(long_aliases) = arg.get_long_and_visible_aliases() {
    aliases.extend(
    long_aliases
    .iter()
    .map(|alias| alias.to_string())
    .filter(|alias| alias != arg.get_id()),
    );
    }
  • replacement in src/arg.rs at line 116
    [3.1650][3.1650:1700](),[3.1700][3.1700:2015]()
    fn aliases(arg: &Arg) -> impl ViewSequence<Arg> {
    let aliases = if let Some(aliases) = arg.get_all_aliases() {
    aliases
    .iter()
    .map(|alias| alias.to_string())
    .filter(|alias| alias != arg.get_id())
    .collect::<Vec<String>>()
    } else {
    // Ignore if there's no aliases
    return None;
    };
    [3.1650]
    [3.2015]
    // Handle environment variables
    if let Some(env_var) = arg.get_env() {
    aliases.push(env_var.to_string_lossy().to_string())
    }
  • edit in src/arg.rs at line 188
    [3.4067][2.740:758]()
    env(arg),