Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/caiangums/boo
👻 Boo - Environment Diagnoser
https://github.com/caiangums/boo
bash productivity shell-script unix yaml zsh
Last synced: 2 months ago
JSON representation
👻 Boo - Environment Diagnoser
- Host: GitHub
- URL: https://github.com/caiangums/boo
- Owner: caiangums
- License: mit
- Created: 2022-06-29T16:25:35.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-07-02T01:30:35.000Z (over 2 years ago)
- Last Synced: 2024-07-30T20:58:26.209Z (5 months ago)
- Topics: bash, productivity, shell-script, unix, yaml, zsh
- Language: Shell
- Homepage: https://github.com/caiangums/boo
- Size: 145 KB
- Stars: 13
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 👻 boo [![Build Status](https://github.com/caiangums/boo/workflows/CI/badge.svg)](https://github.com/caiangums/boo/actions)
```
ヘ(◕。◕ヘ)
\ \
'~~~~'
````boo` is an environment diagnoser to easily check what's missing and what's not.
![Boo Dog](./boo-dog.jpg)
Photo by Karsten Winegeart on Unsplash
## Summary
- [Motivation](#motivation)
- [Use Cases](#use-cases)
- [Install](#install)
- [Usage](#usage)
- [Config File](#config-file)
- [Inpiration](#inpsiration)
- [Contributing](#contributing)
- [FAQ](#FAQ)## Motivation
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.
## Use Cases
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## Install
Installation can be done [automated](#automated) or [manually](#manual).
#### Automated
```sh
curl -Ls https://raw.githubusercontent.com/caiangums/boo/latest-release/install.sh | sudo bash
```#### Manual
Steps are:
- Download it and extract it somewhere (generally `/usr/local`)
- Create the `.boo_dir` at your `$HOME` directory with the path to `boo` installation
- Create the symlink to the `/usr/local/bin` or make it available at your `$PATH````sh
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
```## Usage
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](#config-file) written in `yaml`. Examples can be found inside the `config_examples/` directory.
`boo` commands are:
- [`d`|`diagnose`](#ddiagnose)
- [`l`|`list`](#llist)
- [`h`|`help`](#hhelp)
- [`v`|`version`](#vversion)#### `d`|`diagnose`
```sh
boo (d|diagnose)
```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 `` 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.
#### `l`|`list`
```sh
boo (l|list)
```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.
#### `h`|`help`
```sh
boo (h|help)
```Present information about the usage of `boo`.
#### `v`|`version`
```sh
boo (v|version)
```Present information about actual `boo` version.
## Config File
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:
```yaml
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 the `tag` inner value
- `tag`: **(required)** Should match the `tool` and will be used to identify that tool
- `name`: **(required)** Any given name that will be shown related to that tool
- `command`: **(required)** All commands will be placed inside here
- `check`: **(required)** Command to run a tool via terminal
- `validate`: Flag responsible for not checking that specific tool a `message` could be provided with more information. (default: `true`)
- `message`: All messages will be places inside here
- `not_validating`: In case of the tool not being validated, this message is shown together with the respective tool
- `not_present`: In case of missing tool, this message is shown together with the respective toolNote: In case of `validate: false` the tags `name`, `command` and `check` will not be used and can be empty.
## Inspiration
`boo` was inspired by [`notes`](https://github.com/pimterry/notes). If you like `boo`, you probably will like `notes`. Give it a star!
## Contributing
1. Fork it
2. Develop your idea. If you need some help, ask for it! :)
3. Create some tests
4. Open a PRAnd wait for a review.
## FAQ
### What about dotfiles or install scripts?
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.
### Does `boo` replaces X/Y/Z?
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.
### How can I help and improve `boo`?
PRs are welcomed. Issues tab are a good spot to start.