如何为中型开发团队组织所有 bash 别名(工具链)?

如何为中型开发团队组织所有 bash 别名(工具链)?

在过去的几年里,我在工作中开发了很多有用的脚本和别名,它已经慢慢发展成为多个组织中许多人使用的工具链。

我已尽力记录这一点,但事情发展得太快了,我不断在不同的地方添加新的助手。

开发人员可以根据他们想要的帮助程序在他们的 *rc 中获取大约十几个不同的 bash 文件。

有些文件包含一堆小别名,如下所示:

alias a1="";
alias a2="";
alias a3="";
alias a4="";

有些文件包含更高级的帮助程序,如下所示:

function complex_helper {
  ENV1=()
  ENV2=0
  while :; do
      case $1 in
          -h|-\?|--help)
            show_help
            HELP=1
            break # Not calling exit here because it's a function and we want to keep the current shell open
            ;;
          -i|--id)
              ENV1+=("$2")
              shift
              ;;
          -t|--test)
              ENV2=1
              ;;
          --) # End of all options.
              shift
              break
              ;;
          -?*)
              printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
              ;;
          *) # Default case: No more options, so break out of the loop.
              break
      esac

      shift
  done

  # Some logic here
}

理想情况下,我希望实现以下目标:

  • 有一个统一的cli命令来封装一切
  • 能够输入 --help 并查看所有可用的命令。例如,如果我添加别名 a5,它也会显示
  • 选项卡已完成
  • 让其他人可以轻松添加自己的助手以及快速的“帮助”命令

过去,我开始制作一个 python 二进制文件,它将使用 argparser + tab 完成,并使用该os模块来执行 bash 命令,并且我愿意重新审视这种方法。我也愿意进行任何必要的重构,只要它最终以可维护的长期方法结束。

我真的很期待社区提出任何有趣的建议或想法!

相关内容