Fig is a utility for configuring environments and managing dependencies across a team of developers.
Ruby Other
Latest commit 271b9bc Oct 20, 2016 @clonezone clonezone Log when a retrieval removes a symlink or overwrites a file.
Logging happens at the INFO level so that anyone running with
«--log-level warn» will still not see the messages.
Permalink
Failed to load latest commit information.
bin Deal with IO#readpartial returning a byte array in a String with a bo… Jan 9, 2015
doc Save the variables proposal from a year ago in case we want to refer … Apr 23, 2015
inc Require Ruby v2.0.0. Jun 3, 2015
lib Log when a retrieval removes a symlink or overwrites a file. Oct 20, 2016
spec Require Ruby v2.0.0. Jun 3, 2015
support/vim Fix leftover of renaming Vim syntax group for TODOs. Dec 29, 2014
.document
.gitignore Have Treetop generate its code to disk in the Rakefile. Jul 6, 2012
.simplecov Missed .simplecov in Unparser renaming. Apr 3, 2013
.vimrc Add .vimrc. Nov 8, 2011
BUGS.md Require Ruby v2.0.0. Jun 3, 2015
Changes Log when a retrieval removes a symlink or overwrites a file. Oct 20, 2016
Gemfile Bump JSON and RDoc gem dependencies to be compatible with MRI v2.3.1. Jul 19, 2016
Gemfile.lock Bump JSON and RDoc gem dependencies to be compatible with MRI v2.3.1. Jul 19, 2016
Gemfile.lock.win Bump JSON and RDoc gem dependencies to be compatible with MRI v2.3.1. Jul 19, 2016
LICENSE Update copyright year. Sep 30, 2013
README.md Mention the Vim plugin in README.md. Jan 13, 2015
README_DEVELOPER.md Get SimpleCov to group files in its output. Jul 12, 2012
Rakefile Add «coding: utf-8» comment to the top of all Ruby code to satisfy Ru… Jan 7, 2015
TODO.md Add todo for detecting self-including configs. Aug 8, 2016

README.md

Description

Fig is a utility for configuring environments and managing dependencies across a team of developers.

An "environment" in fig is a set of environment variables. A "package" is a collection of files, along with some metadata describing which environment variables should be modified when the package is included. For instance, each dependency may prepend its corresponding jar to CLASSPATH. The metadata may also list that package's lower-level Fig package dependencies.

Fig recursively builds an environment consisting of package dependencies (typically specified via command-line options or a package.fig file), each of which as noted above may have its own dependencies, and optionally executes a shell command in that environment. The caller's environment is not affected.

Developers can use package.fig files to specify the list of dependencies to use for different tasks. This file will typically be versioned along with the rest of the source files, ensuring that all developers on a team are using the same environments.

Packages exist in two places: a "local" repository cache in the user's home directory-- also called the fig-home --and a "remote" repository on a shared server. Fig will automatically download packages from the remote repository and install them in the fig-home as needed. Fig does not contact the remote repository unless it needs to. The default fig-home is $HOME/.fighome, but may be changed by setting the $FIG_HOME environment variable.

Full documentation

https://github.com/mfoemmel/fig/wiki

Community

#fig on irc.freenode.net

Fig Mailing List

Extensions for other tools

These live in the support directory within the repository. For example, there's a Vim plugin in support/vim.

Copyright

Copyright (c) 2009-2015 Matthew Foemmel. See LICENSE for details.