# bash_bundler [![Crates.io](https://img.shields.io/crates/v/bash_bundler)](https://crates.io/crates/bash_bundler) [![Documentation](https://docs.rs/bash_bundler/badge.svg)](https://docs.rs/bash_bundler) ![Crates.io](https://img.shields.io/crates/l/bash_bundler) Collects/bundles bash files into one file. By default uses the saver `# import ./filename.sh` syntax to include other bash files. But can be set to use the already existing `source ./filename.sh` syntax. ## Getting started ```sh cargo install bash_bundler ``` Once installed: ```sh bash_bundler your-main-file.sh > bundled.sh ``` Or with a config file: ```sh bash_bundler --config your-config.toml > bundled.sh ``` ## examples and style differences There is a difference between the `import` and `source` import statements. The `import` is relative to the current file, but the `source` is relative from the base/root file. for instance: your root file is in `src/my_project.sh` that looks like: ```sh # import ./utils/utils.sh my_func "hallo" ``` and utils.sh looks like: ```sh # import ./other.sh # other contains the my_func ``` this will import from file `./src/utils/other.sh` With the source it is relative from the root file so like: ```sh source ./utils/utils.sh my_func "hallo" ``` and `utils.sh` looks like: ```sh source ./utils/other.sh # other contains the my_func ``` This is done so that files containing the `source` can just be used in normal bash. ```sh cd src ./my_project.sh ``` Check the `tests` folder for more direct examples. ## Config Configs can be used to override/save arguments. Config should look like: ```toml [bundler] replace_source = true replace_comment = false root_path = "./tests/source.sh" ``` ## CLI helptext ```text USAGE: bash_bundler [FLAGS] [OPTIONS] FLAGS: -h, --help Prints help information --disable-comment disable the '# import ./file.sh` syntax --enable-source enable the 'source ./file.sh` syntax -V, --version Prints version information OPTIONS: -c, --config path to your toml config ARGS: starting or `main` bash file ```