README.md in config_curator-0.2.4 vs README.md in config_curator-0.3.0

- old
+ new

@@ -1,12 +1,12 @@ # Config Curator [![Gem Version](https://img.shields.io/gem/v/config_curator.svg)](https://rubygems.org/gems/config_curator) -[![MIT License](https://img.shields.io/badge/license-MIT-red.svg)](./LICENSE.txt) +[![MIT License](https://img.shields.io/github/license/razor-x/config_curator.svg)](./LICENSE.txt) [![Dependency Status](https://img.shields.io/gemnasium/razor-x/config_curator.svg)](https://gemnasium.com/razor-x/config_curator) [![Build Status](https://img.shields.io/travis/razor-x/config_curator.svg)](https://travis-ci.org/razor-x/config_curator) -[![Coverage Status](https://img.shields.io/coveralls/razor-x/config_curator.svg)](https://coveralls.io/r/razor-x/config_curator) +[![Coverage Status](https://img.shields.io/codecov/c/github/razor-x/config_curator.svg)](https://codecov.io/github/razor-x/config_curator) [![Code Climate](https://img.shields.io/codeclimate/github/razor-x/config_curator.svg)](https://codeclimate.com/github/razor-x/config_curator) by Evan Boyd Sosenko. _Simple and intelligent configuration file management._ @@ -28,10 +28,28 @@ each type of configuration unit, e.g., file, directory, symbolic link, etc., is actually a subclass of the more generic `Unit` type. Other types can be added simply by adding more subclasses. +## Quick start + +1. Install the `config_curator` gem + (make sure installed gem binaries are in your PATH). + +2. Create a `manifest.yml` file, e.g., + + ```yaml + config_files: + - src: .config/git/config + ``` + +3. Add `.config/git/config` to your project and run + + ```bash + $ curate -v + ``` + ## Usage ### The `manifest.yml` file The `manifest.yml` file is a YAML file that defines @@ -43,30 +61,30 @@ #### Settings Optional global Config Curator settings. Defaults listed below. -````yaml +```yaml # All units installed relative to the root. root: "~/" # Package tool to use. # Will automatically detect if not explicitly set. # Available tools: pacman, dpkg, pkgng. package_tool: -```` +``` #### `defaults` Optional key that sets the default attribute values for each unit. Any per-unit attribute will override the value here. Any attribute not set here will use the Config Curator defined defaults below. -````yaml +```yaml defaults: # File and directory permissions. # Empty values will not change permissions. fmode: dmode: @@ -81,11 +99,11 @@ hosts: [] # Only install this unit if packages are present. # Empty array will not check for any packages. packages: [] -```` +``` #### Units Each unit must have a `src` which defines the source file or directory. @@ -107,20 +125,20 @@ Components are installed before other units. The source will be mirrored to the destination. **Any existing files in the destination will be lost.** -````yaml +```yaml components: - src: .config/terminator - src: bower_components/tmuxinator-profiles dst: .tmuxinator fmode: 640 dmode: 0750 packages: [ tmux ] -```` +``` ##### Config files are copied individually Files are installed after components. @@ -128,11 +146,11 @@ In this example, the files `.tmux.conf` and `.tmux.baz.conf` both exist: the first will be installed on hosts `foo` and `bar`, while the second will be installed on host `baz`. -````yaml +```yaml config_files: - src: .gitconfig - src: .bundle/config - src: bower_components/ssh-config/config @@ -140,38 +158,38 @@ fmode: 600 dmode: 0700 - src: .tmux.conf hosts: [ foo, bar, baz ] -```` +``` ##### Symlinks Symlinks create a symbolic link to the `src` at the `dst`. They are installed last. -````yaml +```yaml symlinks: - src: ~/Wallpaper/tux.png dst: .config/awesome/wall.png packages: [ awesome ] -```` +``` ### The `curate` command Once you have prepared your manifest, simply run -````bash +```bash $ curate -```` +``` Or if you prefer more verbose feedback -````bash +```bash $ curate -v -```` +``` You can always get help with ``` $ curate help @@ -184,16 +202,29 @@ v, [--verbose], [--no-verbose] q, [--quiet], [--no-quiet] [--debug], [--no-debug] ``` +#### Uninstalling units + +Currently all units have an uninstall method. +Smart uninstall via `curate uninstall` is planned for an +[upcoming release](https://github.com/razor-x/config_curator/issues/7). + ### Scripting Config Curator is fully scriptable for easy inclusion into other Ruby programs. The API is well documented for this purpose (see [Documentation](#documentation) above). +### Plugins + +Plugin support is +[planned for an upcoming release](https://github.com/razor-x/config_curator/issues/8). +If you like Config Curator and want to write a plugin, +please let me know! + ## Installation You can install the gem either with Bundler or directly. Bundler is preferred, however the direct method may be convenient when initially bootstrapping a system with an initial configuration. @@ -201,66 +232,67 @@ The recommend setup is to check your configuration along with `manifest.yml` into version control. Add this line to your application's Gemfile: -````ruby +```ruby gem 'config_curator' -```` +``` And then execute: -````bash +```bash $ bundle -```` +``` Or install it yourself as: -````bash +```bash $ gem install config_curator -```` +``` ## Documentation The primary documentation for Config Curator is this README and the YARD source documentation. YARD documentation for all gem versions is hosted on the [Config Curator gem page](https://rubygems.org/gems/config_curator). -Documentation for the latest commits is hosted on -[the RubyDoc.info project page](http://rubydoc.info/github/razor-x/config_curator/frames). +Also checkout +[Omniref's interactive documentation](https://www.omniref.com/ruby/gems/config_curator). ## Development and Testing ### Source Code The [Config Curator source](https://github.com/razor-x/config_curator) is hosted on GitHub. To clone the project run -````bash +```bash $ git clone https://github.com/razor-x/config_curator.git -```` +``` ### Rake Run `rake -T` to see all Rake tasks. -```` +``` rake all # Run all tasks -rake build # Build config_curator-0.0.0.gem into the pkg directory -rake bump:current # Show current gem version -rake bump:major # Bump major part of gem version -rake bump:minor # Bump minor part of gem version -rake bump:patch # Bump patch part of gem version -rake bump:pre # Bump pre part of gem version +rake build # Build config_curator-0.3.0.gem into the pkg directory +rake bump:current[tag] # Show current gem version +rake bump:major[tag] # Bump major part of gem version +rake bump:minor[tag] # Bump minor part of gem version +rake bump:patch[tag] # Bump patch part of gem version +rake bump:pre[tag] # Bump pre part of gem version rake bump:set # Sets the version number using the VERSION environment variable -rake install # Build and install config_curator-0.0.0.gem into system gems -rake release # Create tag v0.0.0 and build and push config_curator-0.0.0.gem to Rubygems +rake install # Build and install config_curator-0.3.0.gem into system gems +rake install:local # Build and install config_curator-0.3.0.gem into system gems without network access +rake release # Create tag v0.3.0 and build and push config_curator-0.3.0.gem to Rubygems rake rubocop # Run RuboCop rake rubocop:auto_correct # Auto-correct RuboCop offenses rake spec # Run RSpec code examples rake yard # Generate YARD Documentation -```` +``` ### Guard Guard tasks have been separated into the following groups: