2 releases

0.1.1 May 24, 2021
0.1.0 May 24, 2021

#1839 in Development tools

Unlicense

16KB
320 lines

bash_bundler

Crates.io Documentation Crates.io

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

cargo install bash_bundler

Once installed:

bash_bundler your-main-file.sh > bundled.sh

Or with a config file:

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:

# import ./utils/utils.sh

my_func "hallo"

and utils.sh looks like:

# 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:

source ./utils/utils.sh

my_func "hallo"

and utils.sh looks like:

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.

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:


[bundler]
replace_source = true
replace_comment = false
root_path = "./tests/source.sh"

CLI helptext

USAGE:
    bash_bundler [FLAGS] [OPTIONS] <root-path>

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 <config>
            path to your toml config


ARGS:
    <root-path>
            starting or `main` bash file

Dependencies

~2.3–3MB
~53K SLoC