Major upgrade

I've attempted to pull in what I could from other open PRs, added tests, and made everything idempotent.  Take a look.
Constructing sequences that yield a properly partially ordered dependency hierarchy is a problem that appears in other configuration chores. Two come to mind: Linux Kernel Module loading and Unix run-control startup scripts. The problem is especially complex because the proper sequence is arrived at through a decoupled, distributed, parallel algorithm: each provider of a module or script states only where that entry belongs relative to the peer elements of which it has a known dependency. Rather than request absolute locations in the unknown final sequence, the configurations request only that their element be placed before or after dependent elements.




(See http://linux.about.com/od/commands/l/blcmdl5_modules.htm for one Googled-up site that describes the LKM ordering process, somewhat.)




So, here, we would say something like:

```ruby

ssh_config “github.org” do

  position " :after => [“bitbucket.org”], :before => [“*”, “gitolite.com” ] "

  action :create_if_missing

end

```




(This drops the relative_target and uses a Hash of targets instead.)




Yes, asking for first or last cannot be guaranteed when multiple configurators ask for that spot. Then one has to fallback to a last-requested, last-wins policy.


—Lonnie VanZandt

303-900-3048
Sent from Dropbox's Mailbox on Mac

On Fri, Dec 5, 2014 at 12:03 PM, Tejay Cardon <notifications@github.com>
wrote:

>> +* Kitchen for anything we can't chefspec (hopefully that's nothing)
>> +* use_inline_resources
>> +* support why_run
>> +* Merge any outstanding PR's I'm comfortable with
>> +* Add CONTRIBUTING.md
>> +
>> +v0.10.1
>> +==========
>> +* add foodcritic support
>> +
>> +
>> +Eventually (PRs are VERY welcome)
>> +===========
>> +* Add a authorized_keys resource
>> +* Get guardfile figured out
>> +* The order of entries in ssh_config matters.  So we need to support a priority or something to set it with.
> Position might be doable, but won't be super easy.  We're currently parsing the current config into a Hash, and then appending any needed additions.  `First` and `Last` would be pretty easy, but would not be idempotent (if two entries both ask to be last, they'll cause thrashing).  `before` and `after` require a target of some kind (I assume).  
> I'm not sure what you mean by relative_target.
> Feel free to submit an issue with requests for each feature, and we can continue the discussion there.
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/markolson/chef-ssh/pull/30/files#r21392031