Skip to content

CLI utility and a Python based framework for creating and loading dynamic plugins extensions.

License

Notifications You must be signed in to change notification settings

ZachiNachshon/provisioner

Repository files navigation

RequirementsQuickStartOverviewContributeSupportLicense


Provisioner is a CLI utility and a Python based framework for creating and loading dynamic plugins extensions.

It is dynamic because it detects installed plugins as pip packages and dynamically load their declared commands into Provisioner's CLI main menu.

It comes with built-in CLI capabilities, such as:

  • Flag modifiers (verbose, dry-run, auto-prompt)
  • Self update
  • Config management
  • Auto completions
  • Version command
❗ WARNING
Provisioner is still in alpha stage, breaking changes might occur.

🏴‍☠️ Requirements

  • A Unix-like operating system: macOS, Linux
  • Python v3.10 and above

⚡️ QuickStart

The fastest way (for macOS and Linux) to install anchor is from PyPi via pip:

pip install provisioner-runtime

For additional installation methods read here.


⚓️ Overview

Maintainers / Contributors:


⛵ Why Creating Provisioner?

  1. Allow a better experience for teams using multiple sources of managed scripts, make them approachable and safe to use by having a tested, documented and controlled process with minimum context switches, increasing engineers velocity

  2. Allowing to compose different actions from multiple channels (shell scripts, CLI utilities, repetitive commands etc..) into a coherent well documented plugin

  3. Having the ability to run the same action from CI on a local machine and vice-versa. Execution is controlled with flavored flags or differnet configuration set per environment

  4. Remove the fear of running an arbitrary undocumeted script that relies on ENV vars to control its execution

  5. Use only the plugins that you care about, search the plugins marketplace and install (or pre-install) based on needs

  6. Reduce the amount of CLI utilities created in a variety of languages in an organization


📖 Documentation

Please refer to the documentation for detailed explanation on how to configure and use provisioner.


🐳 Playground

Using provisioner, every command is a playground.

Use the --dry-run (short: -d) to check command exeuction breakdown, you can also add the --verbose (short: -v) flag to read DEBUG information.

All dry-run actions are no-op, you can safely run them as they only print to stdout.


Contribute

Please follow our contribution guidelines if you with to contribute:

  • PRs need to have a clear description of the problem they are solving
  • PRs should be small
  • Code without tests is not accepted, code coverage should keep the same level or higher
  • Contributions must not add additional dependencies
  • Before creating a PR, make sure your code is well formatted, abstractions are named properly and design is simple
  • In case your contribution can't comply with any of the above please start a github issue for discussion

Support

Provisioner is an open source project that is currently self maintained in addition to my day job, you are welcome to show your appreciation by sending me cups of coffee using the the following link as it is a known fact that it is the fuel that drives software engineering ☕

Buy Me A Coffee


License

MIT