YASLI (in Russian, "yasli", "ясли", means "crib" or "nursery" - something from where the new life is bootstrapped) – Yet Another Setup Linker and Installer for your dotfiles and/or tools environment.
As software engineers, we set up our terminal tooling and dotfiles in new environments - every now and then. This simple yet ready-to-use boilerplate, called "Yasli", automates the two main points a typical terminal user performs to set up a new machine:
- Links config files from a given source (e.g. your repository) into
$HOME
. Linking is non-invasive: if something is already there, it can be chosen to stay or be overwritten. - Performs installs (priority control included) from a given source, written in the form of dead-simple script files. This reflects how we usually do our installations ourselves,
brew install
,apt-get install
, or build from source. Just automated and- with basic priority (but not dependency) control - you want
curl
installed before you build other tools, right? - with built-in check for
Darwin
vsUbuntu
platforms. Adding others is simple.
- with basic priority (but not dependency) control - you want
Additionally,
- Comprehensive, indent-based logging
- Handles errors nicely. Yes, you don't need to think about "Why this failing script does not fail?"
- Wrappers for common operations
Yasli runs as Bash framework just because it is 100% present on the target system, even though you can use it for setting up your favorite .zshrc
or anything else.
To enable your new config file or another installer, you just add that file (with special extension) - Yasli will pick it up.
It is not replacement for Ansible or other provisioning software. It just automates what you otherwise would have typed into your command line. Thus saving you time to properly store your favorite configs and tools as persistent files in a repo, not as a set of steps in some readme.
Clone repo to the location of your liking, such as ~/.yasli
:
git clone https://github.com/agronskiy/yasli.git ~/.yasli
Run linkers and insallers that are located in <any_path>
:
DOTFILES=<any_path> ~/.yasli/yasli-main
This started as a heavily adjusted version by @holman.