Есть ли способ изменить OUT_DIR для build.rs

#rust #rust-cargo #clap #structopt

#Ржавчина #rust-cargo #хлоп #structopt

Вопрос:

В настоящее время я пытаюсь написать build.rs , который создает кучу сценариев автозаполнения для cli-приложения.

 // build.rs
fn main() {
    let outdir = match std::env::var_os("OUT_DIR") {
        None => return,
        Some(outdir) => outdir,
    };

    Args::clap().gen_completions("monk", structopt::clap::Shell::Bash, outdir.clone());
    ...
}
  

В настоящее время это выводит сценарии автозаполнения в ./target/debug/build/monk-cli-43148fdfeeafb947/out/monk.bash . Я хотел бы упаковать эти скрипты в конвейер CICD, но путь к скриптам непоследователен. Есть ли способ, которым я мог бы выводить эти файлы в согласованный каталог, например ./target/completions/monk.bash , или я должен выполнять генерацию сценария автозаполнения где-то еще, кроме build.rs ?

Комментарии:

1. для этого в cargo —out-dir есть флаг, но он все еще находится в ночной версии, см. doc.rust-lang.org/cargo/commands/cargo-build.html

2. Я не могу использовать nightly в коде, над которым я работаю.