exogenesis 0.0.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.hound.yml +117 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +16 -0
  5. data/CHANGELOG.md +6 -0
  6. data/README.md +70 -8
  7. data/Rakefile +6 -1
  8. data/exogenesis.gemspec +10 -8
  9. data/lib/exogenesis.rb +14 -6
  10. data/lib/exogenesis/passengers/dotfile.rb +28 -0
  11. data/lib/exogenesis/passengers/fonts.rb +44 -0
  12. data/lib/exogenesis/passengers/git_repo.rb +36 -0
  13. data/lib/exogenesis/passengers/homebrew.rb +78 -0
  14. data/lib/exogenesis/passengers/homebrew_cask.rb +70 -0
  15. data/lib/exogenesis/passengers/npm.rb +43 -0
  16. data/lib/exogenesis/passengers/python.rb +37 -0
  17. data/lib/exogenesis/passengers/rbenv.rb +51 -0
  18. data/lib/exogenesis/passengers/rvm.rb +55 -0
  19. data/lib/exogenesis/passengers/vundle.rb +37 -0
  20. data/lib/exogenesis/support/executor.rb +195 -0
  21. data/lib/exogenesis/support/output.rb +93 -0
  22. data/lib/exogenesis/support/passenger.rb +57 -0
  23. data/lib/exogenesis/support/ship.rb +30 -0
  24. data/lib/exogenesis/support/spacesuit.rb +31 -0
  25. data/lib/exogenesis/support/task_skipped.rb +9 -0
  26. data/lib/exogenesis/version.rb +1 -1
  27. data/spec/spec_helper.rb +20 -0
  28. data/spec/support/executor_double.rb +28 -0
  29. data/spec/unit/dotfile_spec.rb +40 -0
  30. data/spec/unit/fonts_spec.rb +54 -0
  31. data/spec/unit/git_repo_spec.rb +44 -0
  32. data/spec/unit/homebrew_cask_spec.rb +96 -0
  33. data/spec/unit/homebrew_spec.rb +107 -0
  34. data/spec/unit/npm_spec.rb +58 -0
  35. data/spec/unit/python_spec.rb +64 -0
  36. data/spec/unit/rbenv_spec.rb +52 -0
  37. data/spec/unit/rvm_spec.rb +79 -0
  38. data/spec/unit/vundle_spec.rb +62 -0
  39. metadata +89 -30
  40. data/lib/exogenesis/abstract_package_manager.rb +0 -25
  41. data/lib/exogenesis/dotfile.rb +0 -45
  42. data/lib/exogenesis/homebrew.rb +0 -45
  43. data/lib/exogenesis/oh-my-zsh.rb +0 -28
  44. data/lib/exogenesis/rvm.rb +0 -32
  45. data/lib/exogenesis/vundle.rb +0 -53
@@ -0,0 +1,107 @@
1
+ require 'spec_helper'
2
+ require 'exogenesis/passengers/homebrew'
3
+
4
+ describe Homebrew do
5
+ let(:brews) { %w(vim chicken) }
6
+
7
+ let(:config) { double }
8
+ before { allow(config).to receive(:brews).and_return(brews) }
9
+
10
+ let(:executor) { executor_double }
11
+
12
+ subject { Homebrew.new(config, executor) }
13
+
14
+ describe :up do
15
+ before do
16
+ allow(executor).to receive(:silent_execute).with('brew ls').and_return(" vim\n emacs")
17
+ allow(executor).to receive(:silent_execute).with('brew outdated').and_return('')
18
+ end
19
+
20
+ describe 'set up homebrew' do
21
+ context 'brew is available' do
22
+ before { allow(executor).to receive(:command_exists?).and_return(true) }
23
+
24
+ it 'should not attempt to install homebrew' do
25
+ expect(executor).to_not receive(:execute_interactive)
26
+ .with('Install Homebrew', anything)
27
+ subject.up
28
+ end
29
+ end
30
+
31
+ context 'brew is not available' do
32
+ before { allow(executor).to receive(:command_exists?).and_return(false) }
33
+
34
+ it 'should install homebrew' do
35
+ expect(executor).to receive(:execute_interactive)
36
+ .with('Install Homebrew', 'ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"')
37
+ subject.up
38
+ end
39
+ end
40
+ end
41
+
42
+ describe 'install missing brews' do
43
+ it 'should install the missing package' do
44
+ expect(executor).to receive(:execute).with('Installing chicken', /\Abrew install chicken\s*\z/)
45
+ subject.up
46
+ end
47
+
48
+ it 'should not install the already installed package' do
49
+ expect(executor).to_not receive(:execute).with('Installing vim', /\Abrew install vim\s*\z/)
50
+ subject.up
51
+ end
52
+
53
+ it 'should pass on the options if it has any' do
54
+ allow(config).to receive(:brews).and_return([{ chicken: ['option'] }])
55
+ expect(executor).to receive(:execute).with('Installing chicken', /\Abrew install chicken option\s*\z/)
56
+ subject.up
57
+ end
58
+ end
59
+
60
+ describe 'update outdated brews' do
61
+ it 'should update homebrew' do
62
+ expect(executor).to receive(:execute).with('Updating Homebrew', 'brew update')
63
+ subject.up
64
+ end
65
+
66
+ context 'no package is outdated' do
67
+ it 'should inform the user that all packages are up to date' do
68
+ expect(executor).to receive(:skip_task).with('Upgrade Brews')
69
+ subject.up
70
+ end
71
+
72
+ it 'should not execute brew upgrade' do
73
+ expect(executor).to_not receive(:execute).with('Upgrade Brews', 'brew upgrade')
74
+ subject.up
75
+ end
76
+ end
77
+
78
+ context 'a package is outdated' do
79
+ before { allow(executor).to receive(:silent_execute).with('brew outdated').and_return('vim') }
80
+
81
+ it 'should inform the user about the outdated packages' do
82
+ expect(executor).to receive(:info).with('Outdated Brews', 'vim')
83
+ subject.up
84
+ end
85
+
86
+ it 'should execute brew upgrade' do
87
+ expect(executor).to receive(:execute).with('Upgrade Brews', 'brew upgrade')
88
+ subject.up
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+ describe :clean do
95
+ it 'should execute the cleanup task from homebrew' do
96
+ expect(executor).to receive(:execute).with('Clean Up', 'brew cleanup')
97
+ subject.clean
98
+ end
99
+ end
100
+
101
+ describe :down do
102
+ it 'should execute the teardown script from mxcl' do
103
+ expect(executor).to receive(:execute).with('Teardown', '\\curl -L https://gist.github.com/mxcl/1173223/raw/a833ba44e7be8428d877e58640720ff43c59dbad/uninstall_homebrew.sh | bash -s')
104
+ subject.down
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,58 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'spec_helper'
3
+ require 'exogenesis/passengers/npm'
4
+
5
+ describe Npm do
6
+ let(:config) { double }
7
+ before { allow(config).to receive(:npms).and_return(npms) }
8
+
9
+ let(:executor) { executor_double }
10
+ let(:npms) { %w(bower buster) }
11
+
12
+ let(:raw_installed) { "/usr/local/share/npm/lib\n├── bower@1.2.8\n├── docco@0.6.3" }
13
+
14
+ subject { Npm.new(config, executor) }
15
+
16
+ describe :up do
17
+ before { allow(executor).to receive(:silent_execute).with('npm ls -g --depth=0').and_return(raw_installed) }
18
+
19
+ describe 'install Node if necessary' do
20
+ context 'when npm command was not found' do
21
+ before { allow(executor).to receive(:command_exists?).with('npm').and_return(false) }
22
+
23
+ it 'should install node via homebrew' do
24
+ expect(executor).to receive(:execute).with('Install Node', 'brew install node')
25
+ subject.up
26
+ end
27
+ end
28
+
29
+ context 'when npm command was found' do
30
+ before { allow(executor).to receive(:command_exists?).with('npm').and_return(true) }
31
+
32
+ it 'should not install node via homebrew' do
33
+ expect(executor).to_not receive(:execute).with('Install Node', 'brew install node')
34
+ subject.up
35
+ end
36
+
37
+ it 'should indicate that it skipped installing Node' do
38
+ expect(executor).to receive(:skip_task).with('Install Node')
39
+ subject.up
40
+ end
41
+ end
42
+ end
43
+
44
+ describe 'install or update packages' do
45
+ before { allow(executor).to receive(:command_exists?).with('npm').and_return(true) }
46
+
47
+ it 'should install missing packages' do
48
+ executor.should_receive(:execute).with('Install buster', 'npm install -g buster')
49
+ subject.up
50
+ end
51
+
52
+ it 'should update installed packages' do
53
+ executor.should_receive(:execute).with('Update bower', 'npm update -g bower')
54
+ subject.up
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ require 'exogenesis/passengers/python'
3
+
4
+ describe Python do
5
+ let(:config) { double }
6
+ before { allow(config).to receive(:pips).and_return(required_pips) }
7
+ let(:executor) { executor_double }
8
+
9
+ subject { Python.new(config, executor) }
10
+
11
+ describe :up do
12
+ before do
13
+ allow(executor).to receive(:command_exists?).and_return(true)
14
+ allow(executor).to receive(:silent_execute).with('pip list').and_return(installed_pips)
15
+ end
16
+
17
+ let(:required_pips) { %w(pygments buildbot) }
18
+ let(:installed_pips) { "buildbot (0.8.8)\nbuildbot-slave (0.8.8)" }
19
+
20
+ describe 'installing Python' do
21
+ context 'when pip already exists' do
22
+ before { allow(executor).to receive(:command_exists?).and_return(true) }
23
+
24
+ it 'should skip installing Python' do
25
+ expect(executor).to receive(:skip_task).with('Install Python')
26
+ subject.up
27
+ end
28
+
29
+ it 'should not install Python via brew' do
30
+ expect(executor).to_not receive(:execute).with('Install Python', 'brew install python')
31
+ subject.up
32
+ end
33
+ end
34
+
35
+ context 'when pip does not exist' do
36
+ before { allow(executor).to receive(:command_exists?).and_return(false) }
37
+
38
+ it 'should install Python via brew' do
39
+ expect(executor).to receive(:execute).with('Install Python', 'brew install python')
40
+ subject.up
41
+ end
42
+ end
43
+ end
44
+
45
+ describe 'link Python' do
46
+ it 'should link Python' do
47
+ expect(executor).to receive(:execute).with('Link Python', 'brew link --overwrite python')
48
+ subject.up
49
+ end
50
+
51
+ it 'should skip the task if it is already linked' do
52
+ allow(executor).to receive(:execute).with('Link Python', 'brew link --overwrite python').and_yield('Warning: Already linked: /usr/local/Cellar/python/2.7.6')
53
+ expect { subject.up }.to raise_exception(TaskSkipped, 'Already linked')
54
+ end
55
+ end
56
+
57
+ describe 'installing and updating pips' do
58
+ it 'should update pip itself'
59
+ it 'should update installed pips' # Update buildbot
60
+ it 'should install missing pips' # Install pygments
61
+ it 'should skip the update if it is up to date'
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'exogenesis/passengers/rbenv'
3
+
4
+ describe Rbenv do
5
+ let(:config) { double }
6
+ before { allow(config).to receive(:rubies).and_return(rubies) }
7
+
8
+ let(:executor) { executor_double }
9
+ let(:rubies) { ['2.0.0-p353'] }
10
+
11
+ subject { Rbenv.new(config, executor) }
12
+
13
+ describe :up do
14
+
15
+ before do
16
+ allow(executor).to receive(:command_exists?).and_return(true)
17
+ end
18
+
19
+ context 'when rbenv does exist' do
20
+ before { allow(executor).to receive(:command_exists?).and_return(false) }
21
+
22
+ it 'should install rbenv into ~/.rbenv via git clone.' do
23
+ executor.should_receive(:execute).with('Install rbenv', 'git clone https://github.com/sstephenson/rbenv.git ~/.rbenv')
24
+ executor.should_receive(:execute).with('Install ruby-build plugin', 'git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build')
25
+ subject.up
26
+ end
27
+ end
28
+
29
+ it 'should update the rubies provided when initialized' do
30
+ allow(executor).to receive(:execute).with('Getting Installed Verisons', 'rbenv versions').and_yield " 1.9.3-p448\n 2.0.0-p247"
31
+ executor.should_receive(:execute).with('Update rbenv', 'cd ~/.rbenv && git pull')
32
+ executor.should_receive(:execute).with('Update ruby-build', 'cd ~/.rbenv/plugins/ruby-build && git pull')
33
+ executor.should_receive(:execute).with('Installing 2.0.0-p353', 'rbenv install 2.0.0-p353')
34
+ executor.should_receive(:execute).with('Rehash', 'rbenv rehash')
35
+ subject.up
36
+ end
37
+
38
+ it 'should install the rubies provided when initialized' do
39
+ executor.should_receive(:execute).with('Installing 2.0.0-p353', 'rbenv install 2.0.0-p353')
40
+ executor.should_receive(:execute).with('Rehash', 'rbenv rehash')
41
+ subject.up
42
+ end
43
+ end
44
+
45
+ describe :down do
46
+ it 'should ask to remove the rbenv directory on down' do
47
+ executor.should_receive(:execute_interactive).with('Teardown', 'rm -r ~/.rbenv')
48
+ subject.down
49
+ end
50
+ end
51
+
52
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+ require 'exogenesis/passengers/rvm'
3
+
4
+ describe Rvm do
5
+ let(:rubies) { ['ruby-1.9.3', 'ruby-2.0.0'] }
6
+ let(:config) { double('Config', rubies: rubies) }
7
+ let(:executor) { executor_double }
8
+
9
+ let(:rvm_list_output) { "rvm rubies\n\nruby-2.0.0-p353 [ x86_64 ]\n=* ruby-2.1.0 [ x86_64 ]\n\n# => - current\n# # =* - current && default\n# # * - default" }
10
+
11
+ subject { Rvm.new(config, executor) }
12
+
13
+ describe :up do
14
+ before do
15
+ allow(executor).to receive(:command_exists?).and_return(true)
16
+ allow(executor).to receive(:execute).with(anything, 'rvm list').and_yield(rvm_list_output)
17
+ end
18
+
19
+ describe 'install RVM if necessary' do
20
+ context 'when RVM does exist' do
21
+ before { allow(executor).to receive(:command_exists?).and_return(false) }
22
+
23
+ it 'should execute the RVM setup' do
24
+ expect(executor).to receive(:execute_interactive).with('Setup', '\\curl -L https://get.rvm.io | bash -s')
25
+ subject.up
26
+ end
27
+ end
28
+
29
+ context 'when RVM does not exist' do
30
+ it 'should skip the task' do
31
+ expect(executor).to receive(:skip_task).with('Setup')
32
+ subject.up
33
+ end
34
+
35
+ it 'should not execute the RVM setup' do
36
+ expect(executor).to_not receive(:execute_interactive).with('Setup', '\\curl -L https://get.rvm.io | bash -s')
37
+ subject.up
38
+ end
39
+ end
40
+ end
41
+
42
+ it 'should update RVM' do
43
+ expect(executor).to receive(:execute).with('Update', 'rvm get head')
44
+ subject.up
45
+ end
46
+
47
+ describe 'install or update rubies' do
48
+ it 'should install a missing Ruby' do
49
+ expect(executor).to receive(:execute).with('Installing ruby-1.9.3', 'rvm install ruby-1.9.3 --with-gcc=gcc-4.2')
50
+ subject.up
51
+ end
52
+
53
+ it 'should update an installed Ruby' do
54
+ expect(executor).to receive(:execute).with('Upgrading ruby-2.0.0', 'rvm upgrade ruby-2.0.0-p353 ruby-2.0.0 --force --with-gcc=gcc-4.2')
55
+ subject.up
56
+ end
57
+
58
+ it 'should skip the update of an installed Ruby if already installed' do
59
+ allow(executor).to receive(:execute)
60
+ .with('Upgrading ruby-2.0.0', 'rvm upgrade ruby-2.0.0-p353 ruby-2.0.0 --force --with-gcc=gcc-4.2')
61
+ .and_yield(nil, "Source and Destination Ruby are the same (ruby-2.0.0-p353)\nError migrating gems.")
62
+
63
+ expect { subject.up }.to raise_exception(TaskSkipped, 'Already Up to Date')
64
+ end
65
+ end
66
+
67
+ it 'should reload RVM' do
68
+ expect(executor).to receive(:execute).with('Reload', 'rvm reload')
69
+ subject.up
70
+ end
71
+ end
72
+
73
+ describe :down do
74
+ it 'should implode RVM' do
75
+ expect(executor).to receive(:execute_interactive).with('Teardown', 'rvm implode')
76
+ subject.down
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+ require 'exogenesis/passengers/vundle'
3
+
4
+ describe Vundle do
5
+ let(:config) { double }
6
+ let(:executor) { executor_double }
7
+
8
+ let(:vundle_folder) { double('VundleFolder', to_s: 'VUNDLE_FOLDER') }
9
+
10
+ subject { Vundle.new(config, executor) }
11
+
12
+ describe :up do
13
+ before { allow(executor).to receive('get_path_in_home').with('.vim', 'bundle', 'vundle').and_return(vundle_folder) }
14
+ before { allow(vundle_folder).to receive('exist?').and_return(true) }
15
+
16
+ describe 'install Vundle if necessary' do
17
+ context 'vundle folder exists' do
18
+ before { allow(vundle_folder).to receive('exist?').and_return(true) }
19
+
20
+ it 'should skip cloning vundle' do
21
+ expect(executor).to receive(:skip_task).with('Cloning Vundle')
22
+ subject.up
23
+ end
24
+
25
+ it 'should not clone vundle' do
26
+ expect(executor).to_not receive(:execute).with(anything, 'git clone git://github.com/gmarik/vundle.git VUNDLE_FOLDER').ordered
27
+ subject.up
28
+ end
29
+ end
30
+
31
+ context 'vundle folder does not exist' do
32
+ before { allow(vundle_folder).to receive('exist?').and_return(false) }
33
+
34
+ it 'should make a path and clone vundle' do
35
+ expect(executor).to receive(:mkpath).with(vundle_folder).ordered
36
+ expect(executor).to receive(:execute).with('Cloning Vundle', 'git clone git://github.com/gmarik/vundle.git VUNDLE_FOLDER').ordered
37
+ subject.up
38
+ end
39
+ end
40
+ end
41
+
42
+ it 'should install and update bundles' do
43
+ expect(executor).to receive(:execute_interactive).with('Installing and Updating Vim Bundles', 'vim +BundleInstall\! +qall')
44
+ subject.up
45
+ end
46
+ end
47
+
48
+ describe :down do
49
+ it 'should remove the vundle repo' do
50
+ allow(executor).to receive(:get_path_in_home).with('.vim').and_return('/Users/muse/.vim')
51
+ expect(executor).to receive(:rm_rf).with('/Users/muse/.vim')
52
+ subject.down
53
+ end
54
+ end
55
+
56
+ describe :clean do
57
+ it 'should interactively execute BundleClean' do
58
+ executor.should_receive(:execute_interactive).with('Cleaning', 'vim +BundleClean\! +qall')
59
+ subject.clean
60
+ end
61
+ end
62
+ end
metadata CHANGED
@@ -1,48 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exogenesis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - moonglum
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
11
+ date: 2014-06-22 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: megingiard
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.0
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: bundler
16
29
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
30
  requirements:
19
- - - ~>
31
+ - - "~>"
20
32
  - !ruby/object:Gem::Version
21
- version: '1.3'
33
+ version: 1.6.0
22
34
  type: :development
23
35
  prerelease: false
24
36
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
37
  requirements:
27
- - - ~>
38
+ - - "~>"
28
39
  - !ruby/object:Gem::Version
29
- version: '1.3'
40
+ version: 1.6.0
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: rake
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 10.3.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 10.3.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
36
60
  - !ruby/object:Gem::Version
37
- version: '0'
61
+ version: 3.0.0
38
62
  type: :development
39
63
  prerelease: false
40
64
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
65
  requirements:
43
- - - ! '>='
66
+ - - "~>"
44
67
  - !ruby/object:Gem::Version
45
- version: '0'
68
+ version: 3.0.0
46
69
  description: Build your dotfile installer, updater and teardown
47
70
  email:
48
71
  - moonglum@moonbeamlabs.com
@@ -50,45 +73,81 @@ executables: []
50
73
  extensions: []
51
74
  extra_rdoc_files: []
52
75
  files:
53
- - .gitignore
76
+ - ".gitignore"
77
+ - ".hound.yml"
78
+ - ".rspec"
79
+ - ".travis.yml"
80
+ - CHANGELOG.md
54
81
  - Gemfile
55
82
  - LICENSE.txt
56
83
  - README.md
57
84
  - Rakefile
58
85
  - exogenesis.gemspec
59
86
  - lib/exogenesis.rb
60
- - lib/exogenesis/abstract_package_manager.rb
61
- - lib/exogenesis/dotfile.rb
62
- - lib/exogenesis/homebrew.rb
63
- - lib/exogenesis/oh-my-zsh.rb
64
- - lib/exogenesis/rvm.rb
87
+ - lib/exogenesis/passengers/dotfile.rb
88
+ - lib/exogenesis/passengers/fonts.rb
89
+ - lib/exogenesis/passengers/git_repo.rb
90
+ - lib/exogenesis/passengers/homebrew.rb
91
+ - lib/exogenesis/passengers/homebrew_cask.rb
92
+ - lib/exogenesis/passengers/npm.rb
93
+ - lib/exogenesis/passengers/python.rb
94
+ - lib/exogenesis/passengers/rbenv.rb
95
+ - lib/exogenesis/passengers/rvm.rb
96
+ - lib/exogenesis/passengers/vundle.rb
97
+ - lib/exogenesis/support/executor.rb
98
+ - lib/exogenesis/support/output.rb
99
+ - lib/exogenesis/support/passenger.rb
100
+ - lib/exogenesis/support/ship.rb
101
+ - lib/exogenesis/support/spacesuit.rb
102
+ - lib/exogenesis/support/task_skipped.rb
65
103
  - lib/exogenesis/version.rb
66
- - lib/exogenesis/vundle.rb
104
+ - spec/spec_helper.rb
105
+ - spec/support/executor_double.rb
106
+ - spec/unit/dotfile_spec.rb
107
+ - spec/unit/fonts_spec.rb
108
+ - spec/unit/git_repo_spec.rb
109
+ - spec/unit/homebrew_cask_spec.rb
110
+ - spec/unit/homebrew_spec.rb
111
+ - spec/unit/npm_spec.rb
112
+ - spec/unit/python_spec.rb
113
+ - spec/unit/rbenv_spec.rb
114
+ - spec/unit/rvm_spec.rb
115
+ - spec/unit/vundle_spec.rb
67
116
  homepage: https://github.com/moonglum/exogenesis
68
117
  licenses:
69
118
  - MIT
119
+ metadata: {}
70
120
  post_install_message:
71
121
  rdoc_options: []
72
122
  require_paths:
73
123
  - lib
74
124
  required_ruby_version: !ruby/object:Gem::Requirement
75
- none: false
76
125
  requirements:
77
- - - ! '>='
126
+ - - ">="
78
127
  - !ruby/object:Gem::Version
79
128
  version: '0'
80
129
  required_rubygems_version: !ruby/object:Gem::Requirement
81
- none: false
82
130
  requirements:
83
- - - ! '>='
131
+ - - ">="
84
132
  - !ruby/object:Gem::Version
85
133
  version: '0'
86
134
  requirements: []
87
135
  rubyforge_project:
88
- rubygems_version: 1.8.25
136
+ rubygems_version: 2.3.0
89
137
  signing_key:
90
- specification_version: 3
138
+ specification_version: 4
91
139
  summary: A collection of classes that help you install, update and teardown package
92
140
  managers and other things useful for your dotfiles.
93
- test_files: []
94
- has_rdoc:
141
+ test_files:
142
+ - spec/spec_helper.rb
143
+ - spec/support/executor_double.rb
144
+ - spec/unit/dotfile_spec.rb
145
+ - spec/unit/fonts_spec.rb
146
+ - spec/unit/git_repo_spec.rb
147
+ - spec/unit/homebrew_cask_spec.rb
148
+ - spec/unit/homebrew_spec.rb
149
+ - spec/unit/npm_spec.rb
150
+ - spec/unit/python_spec.rb
151
+ - spec/unit/rbenv_spec.rb
152
+ - spec/unit/rvm_spec.rb
153
+ - spec/unit/vundle_spec.rb