furnish

module
v0.0.0-...-7457a68 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2022 License: GPL-2.0

README

furnish

A provisioning tool written in go enabling you to provision your local machine. Currently in alpha and supporting macOS only.

Go Report Card GitHub go.mod Go version of a Go module GitHub license

Getting started

To get started edit the furnish.yaml file and add the packages you want to install.

Currently, the supported package manager is brew and if you don't have brew installed, we can install it for you if you're using the binary distribution.

package-managers field under global is used to specify the package managers you want to use. The package manager whose default field is set to true will be used by default without specifying the manager in the packages module.

furnish.yaml is seperated into something called Stages. Every can have one or many modules. Modules themselves can have dependencies on other modules. Every module can be optional which prompts the user if they want to apply it or not. Every module can be mandatory which stops the script if it fails applying the module. A module must be enabled with enabled: true for it to execute. Setting enabled to false will skip applying the module

Currently available modules are:

  • packages
  • xcode-select
  • shell
  • ssh

Installing Xcode command line tools

xcode-select can be installed by specifying xcode-select as a module. It has the following properties

  • enabled - A boolean specifying if we should install xcode-select. Defaults to true.
  • update - A boolean specifying if we should update the
  • mandatory - A boolean specifying if the module is mandatory. Defaults to false.

Installing packages

To install packages use the packages module.

Each packages module is an array of objects, which have the following fields:

  • name - The name of the module. You can use --cask <name> as the name to install cask packages.
  • applier - This is the applier of the package. These three appliers are available. Excluding the applier will default it to install
    • install - Installs the package
    • delete - Deletes the package
    • update - Updates the package
  • manager The manager which will be used to install the package. If not specified, the default manager will be used.
  • optional - A boolean field that if set to true will prompt the user if they want to install the package.
  • mandatory - A boolean field that if set to true will stop the script if it fails to install the package.
  • dependencies - An array of modules that are mandatory to finish before this module can be installed.

Executing shell commands

We allow executing shell commands with the shell module. This module is an array of objects, which have the following fields:

  • name - The name of the module.
  • cmd - The command to execute. Piping is supported.
  • silent - A boolean field that if set to true will not print the output of the command.

Directories

Path Synopsis
pkg
log
Package log contains the improved logger interface and it's nil implementation Log levels / verbosity go from lowest to highest: Debug, Info, Warn, Error.
Package log contains the improved logger interface and it's nil implementation Log levels / verbosity go from lowest to highest: Debug, Info, Warn, Error.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL