-
Notifications
You must be signed in to change notification settings - Fork 2
reusable, convenience bash script functions
License
zbigg/bashfoo
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
bashfoo - bash helper library This is next attempt to create reusabble shell script function helper. Currently it targets only bash, bash-3.x. It works also with bash4, but it's not officially tested. In future it shall support also generic POSIX shell. 1. General usage. 1.2 Initialize bashfoo in script. In system-based deployments: eval `bashfoo --eval-out` In local deployments: bashfoo_source_path=$lib_dir/bashfoo source $lib_dir/bashfoo/bashfoo.sh 1.3 Use modules: In script: bashfoo_require MODULE_NAME imports module. 2. Modules 2.1 log Log a message prefixed with script name to stderr. script synopsis: bashfoo_require log log_info "removing user $user from LDAP" CLI synopsis $ SCRIPT -d|--debug -- enable debug mode $ SCRIPT -q|--quiet -- enable quiet mode Functions: log_process_options -- process, -d|--debug, -q|--quiet log_debug -- only if debug mode is on log_info -- when not in quiet mode log_error -- always logged 2.2 introspection Allows execution of internal bash functions (for debugging) Script synopsis: bashfoo_require introspection maybe_invoke_introspection "$@" CLI synopsis $ SCRIPT --int-call FUN ARGS $ SCRIPT --int-list First form, calls FUN with ARGS or lists available functions when bad FUN name specified. Second form just lists names of available functions to be called by introspection. 2.3 run Run commands in specific environment (quiet, verbose or changed folder). Script synopsis: bashfoo_require run run_in SOME_FOLDER log_run quiet git pull # run git pull with stdout/err discarded # in changed folder # logs: $SCRIPT ! quiet git pull if quiet diff A B ; then ... # more or less equal to if diff -q A B but useful for command that # doesn't suppor -q quiet_if_success git pull # cached stdout/err till command end and discard output # if command succeeds # in case of exit_code != log message and whole output is printed 2.4 memoize Memoized call. Call a COMMAND with caching it's results. Results are cached for execution time of this script. All cached files are removed using cleanup module. Script usage: bashfoo_require memoize check_if_tag_exists() { memoized git ls-remotes URL | grep -q "tags/$TAG" } 2.5 cleanup Register cleanup actions. Sctipt usage bashfoo_require cleanup cleanup_cmd add CMD cleanup_file FILE cleanup_folder cleanup_process_options CLI usage: --no-cleanup -- don't execute cleanup options, so intermediate files/state is left for debugging It adds "script" global list of cleanup actions irrelevant of "subprocess" level. All cleanup actions are executed upon EXIT trap in reverse order to declaration.
About
reusable, convenience bash script functions
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published