# 5. Use Python for scripting inside and outside containers Date: 2022-11-30 ## Status Accepted ## Context Inside the container, we use the `ibek` tool for scripting. Outside we use `ec` from `epics-containers-cli`. Much of what these tools do is call command line tools like `docker`, `helm`, `kubectl`, compilers, etc. This seems like a natural fit for bash scripts. These features were originally implemented in bash but were converted to python for the following reasons: - python provides for much richer command line arguments - it is also much easier to provide rich help - managing errors is vastly improved with exception handling - the unit testing framework allows good test coverage in continuous integration - complex string handling is a common requirement and is much easier in python - there is a clear versioning strategy and packages can be installed with pip, meaning that you can check which version of the script you are running and report bugs against a specific version - the code is much easier to read and maintain - because the packages can be pip installed they can be used in CI and inside multiple containers without having to copy the scripts around ## Decision We always prefer Python and keep bash scripts to a minimum ## Consequences Scripting is much easier to maintain and is more reliable.