Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

Internal Run Example

This example demonstrates how to use the run function to call commands internally, using the exact same syntax as a user would in the CLI. This approach can be useful for chaining commands or reusing logic without duplicating code.

This example was generated with:

$ bashly init
# ... now edit src/bashly.yml to match the example ...
$ bashly generate
# ... now edit the generated command files to match the example ...
$ bashly generate

Note that while this pattern of calling run internally is supported, you may want to consider using [lib functions] instead, for a more robust codebase.

While this pattern of calling run internally is supported, you may want to consider using lib functions instead. lib functions can help create a more robust and maintainable codebase by centralizing reusable logic.


bashly.yml

name: cli
help: Internal run test
version: 0.1.0

commands:
- name: build
  help: Build code
  args:
  - name: env
    help: Build environment
    default: development
    allowed: [development, production]

- name: test
  help: Test code
  flags:
  - long: --full
    help: Run all tests

- name: deploy
  help: Deploy code
  flags:
  - long: --build
    help: Build before deploying
  - long: --test
    help: Test before deploying

src/build_command.sh

echo "BUILD complete"
inspect_args
echo

Output

$ ./cli -h

cli - Internal run test

Usage:
  cli COMMAND
  cli [COMMAND] --help | -h
  cli --version | -v

Commands:
  build    Build code
  test     Test code
  deploy   Deploy code

Options:
  --help, -h
    Show this help

  --version, -v
    Show version number


$ ./cli deploy -h

cli deploy - Deploy code

Usage:
  cli deploy [OPTIONS]
  cli deploy --help | -h

Options:
  --build
    Build before deploying

  --test
    Test before deploying

  --help, -h
    Show this help


$ ./cli deploy --build --test

BUILD complete
args:
- ${args[env]} = production

TEST complete
args:
- ${args[--full]} = 1

DEPLOY complete
args:
- ${args[--full]} = 1