exogenesis 0.0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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