Summary: | hsh-install раскрывает имя пакета в каталог | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Anton Farygin <rider> |
Component: | hasher | Assignee: | Dmitry V. Levin <ldv> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | at, glebfm, ldv, legion, placeholder |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Anton Farygin
2019-09-23 21:45:35 MSK
Да, это так, $ hsh --help |grep ^Usage: Usage: hsh [options] [<path-to-workdir>] <package>... Может, не очень удобно, но ничего не поделаешь. (In reply to comment #1) > Да, это так, > $ hsh --help |grep ^Usage: > Usage: hsh [options] [<path-to-workdir>] <package>... > > Может, не очень удобно, но ничего не поделаешь. Насколько я понимаю hsh-install делается после создания workdir и устанавливается только один пакет. По идее это должно укладываться в usage и скрипт не должен проверять первый аргумент как директорию. В следующем if-e мы очевидно проходим по "else". if [ -z "$workdir" ]; then # At least two arguments. [ "$#" -ge 2 ] || show_usage 'Insufficient arguments.' else # At least one argument. [ "$#" -ge 1 ] || show_usage 'Insufficient arguments.' fi А вот тут интересно. workdir по умолчанию не пустая. Таким образом мы всегда проверяем первый аргумент. if [ -z "$workdir" -o -d "${1:-}" ]; then set_workdir "${1:-}" shift else set_workdir fi Дим, почему бы не добавить обработку очевидной ситуации, когда аргумент один ? Например, так: workdir_autodetect=1 if [ -z "$workdir" ]; then # At least two arguments. [ "$#" -ge 2 ] || show_usage 'Insufficient arguments.' else # At least one argument. [ "$#" -ge 1 ] || show_usage 'Insufficient arguments.' [ "$#" -gt 1 ] || workdir_autodetect= fi if [ -n "$workdir_autodetect" ] && [ -d "${1:-}" ]; then set_workdir "${1:-}" shift else set_workdir fi (In reply to comment #2) > (In reply to comment #1) > > Да, это так, > > $ hsh --help |grep ^Usage: > > Usage: hsh [options] [<path-to-workdir>] <package>... > > > > Может, не очень удобно, но ничего не поделаешь. > > Насколько я понимаю hsh-install делается после создания workdir и > устанавливается только один пакет. По идее это должно укладываться в usage и > скрипт не должен проверять первый аргумент как директорию. Я не случайно вспомнил про hsh. Полагаешь, станет лучше, если у hsh и hsh-install будет разная семантика? (In reply to comment #3) > (In reply to comment #2) > > (In reply to comment #1) > > > Да, это так, > > > $ hsh --help |grep ^Usage: > > > Usage: hsh [options] [<path-to-workdir>] <package>... > > > > > > Может, не очень удобно, но ничего не поделаешь. > > > > Насколько я понимаю hsh-install делается после создания workdir и > > устанавливается только один пакет. По идее это должно укладываться в usage и > > скрипт не должен проверять первый аргумент как директорию. > > Я не случайно вспомнил про hsh. > Полагаешь, станет лучше, если у hsh и hsh-install будет разная семантика? Или ты предлагаешь каким-нибудь образом распространиить это изменение на все остальные hsh-*? (In reply to comment #3) > Я не случайно вспомнил про hsh. > Полагаешь, станет лучше, если у hsh и hsh-install будет разная семантика? Я не вижу в этом плохого. Это разные утилиты хоть и связанные. У них уже несколько разная семантика т.к. hsh требует, чтобы все аргументы присутствовали на файловой системе, а hsh-install нет. Мы просто уточняем поведение с единственным аргументом. (In reply to comment #4) > Или ты предлагаешь каким-нибудь образом распространиить это изменение на все > остальные hsh-*? Я думал об этом т.к. в hsh есть очень похожий код поиска workdir, но не стал предлагать т.к. у остальных утилит нет таких проблем поскольку у них workdir это один опциональный аргумент. Это разумно разве что в hsh-run. |