γ(βγβγ)
\ \
'~~~~'
boo
is an environment diagnoser to easily check what's missing and what's not.
Photo by Karsten Winegeart on Unsplash
Configuring new machines from scratch eventually leads to missing tools, libs or dependencies. boo
helps on diagnose, list and could provide guidance on how to fix it.
Also, when on starting new projects on totally new codebases or even when something got updated and the logs are not helping(maybe everything is broken?), boo
can give a direction if something is missing.
Here are some use cases for boo
:
- Diagnose your local environment on missing dependencies
- Diagnose created containers for missing dependencies without pain
- Diagnose new configured machines for eventually missing dependencies
Installation can be done automated or manually.
curl -Ls https://raw.githubusercontent.com/caiangums/boo/latest-release/install.sh | sudo bash
Steps are:
- Download it and extract it somewhere (generally
/usr/local
) - Create the
.boo_dir
at your$HOME
directory with the path toboo
installation - Create the symlink to the
/usr/local/bin
or make it available at your$PATH
curl https://raw.githubusercontent.com/caiangums/boo/latest-release/boo > /usr/local/bin/boo
echo "/usr/local/boo" > $HOME/.boo_dir
ln -s /usr/local/boo/boo /usr/local/bin/boo
Once installed, just run boo
and check for available commands. But remember: boo
doesn't work alone. It needs to know what to search and relies on a provided config file written in yaml
. Examples can be found inside the config_examples/
directory.
boo
commands are:
boo (d|diagnose) <config-file>
Based on the provided config file, diagnose the environment for present (installed) and not present (missing) tools. More information could be provided if defined at the <config-file>
such as install command or a message.
Under development: If the command for checking the tool version and the desired version also provide information about matching versions from installed libs.
Note: It also provides information about the config file malformed yaml tags or missing essential tags on each tool.
boo (l|list) <config-file>
Based on the provided config file, list the environment for not present (missing) tools.
Note: It also provides information about the config file malformed yaml tags or missing essential tags on each tool.
boo (h|help)
Present information about the usage of boo
.
boo (v|version)
Present information about actual boo
version.
The Config File should be written in Yaml with some specific tags. Examples can be found at config_examples/
directory. The file should respect this pattern and have those tags:
tool:
tag: "tool"
name: "Tool Name"
command:
check: "tool"
validate: true
message:
not_validating: "Message for not validating tool"
not_present: "Message for missing tool"
tool
: (required) The tag for that tool. Should match thetag
inner valuetag
: (required) Should match thetool
and will be used to identify that toolname
: (required) Any given name that will be shown related to that toolcommand
: (required) All commands will be placed inside herecheck
: (required) Command to run a tool via terminal
validate
: Flag responsible for not checking that specific tool amessage
could be provided with more information. (default:true
)message
: All messages will be places inside herenot_validating
: In case of the tool not being validated, this message is shown together with the respective toolnot_present
: In case of missing tool, this message is shown together with the respective tool
Note: In case of validate: false
the tags name
, command
and check
will not be used and can be empty.
boo
was inspired by notes
. If you like boo
, you probably will like notes
. Give it a star!
- Fork it
- Develop your idea. If you need some help, ask for it! :)
- Create some tests
- Open a PR
And wait for a review.
Those are solutions for when you know what you need to install. Eventually, things change and boo
can help you on how to keep that in sync.
Probably not. boo
is just the diagnoser and not the solver. Once the issue is identified, it can be fix'd and that could be a whole different job.
PRs are welcomed. Issues tab are a good spot to start.