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.
- checksums.yaml +7 -0
- data/.hound.yml +117 -0
- data/.rspec +2 -0
- data/.travis.yml +16 -0
- data/CHANGELOG.md +6 -0
- data/README.md +70 -8
- data/Rakefile +6 -1
- data/exogenesis.gemspec +10 -8
- data/lib/exogenesis.rb +14 -6
- data/lib/exogenesis/passengers/dotfile.rb +28 -0
- data/lib/exogenesis/passengers/fonts.rb +44 -0
- data/lib/exogenesis/passengers/git_repo.rb +36 -0
- data/lib/exogenesis/passengers/homebrew.rb +78 -0
- data/lib/exogenesis/passengers/homebrew_cask.rb +70 -0
- data/lib/exogenesis/passengers/npm.rb +43 -0
- data/lib/exogenesis/passengers/python.rb +37 -0
- data/lib/exogenesis/passengers/rbenv.rb +51 -0
- data/lib/exogenesis/passengers/rvm.rb +55 -0
- data/lib/exogenesis/passengers/vundle.rb +37 -0
- data/lib/exogenesis/support/executor.rb +195 -0
- data/lib/exogenesis/support/output.rb +93 -0
- data/lib/exogenesis/support/passenger.rb +57 -0
- data/lib/exogenesis/support/ship.rb +30 -0
- data/lib/exogenesis/support/spacesuit.rb +31 -0
- data/lib/exogenesis/support/task_skipped.rb +9 -0
- data/lib/exogenesis/version.rb +1 -1
- data/spec/spec_helper.rb +20 -0
- data/spec/support/executor_double.rb +28 -0
- data/spec/unit/dotfile_spec.rb +40 -0
- data/spec/unit/fonts_spec.rb +54 -0
- data/spec/unit/git_repo_spec.rb +44 -0
- data/spec/unit/homebrew_cask_spec.rb +96 -0
- data/spec/unit/homebrew_spec.rb +107 -0
- data/spec/unit/npm_spec.rb +58 -0
- data/spec/unit/python_spec.rb +64 -0
- data/spec/unit/rbenv_spec.rb +52 -0
- data/spec/unit/rvm_spec.rb +79 -0
- data/spec/unit/vundle_spec.rb +62 -0
- metadata +89 -30
- data/lib/exogenesis/abstract_package_manager.rb +0 -25
- data/lib/exogenesis/dotfile.rb +0 -45
- data/lib/exogenesis/homebrew.rb +0 -45
- data/lib/exogenesis/oh-my-zsh.rb +0 -28
- data/lib/exogenesis/rvm.rb +0 -32
- 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
|
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:
|
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:
|
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:
|
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:
|
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:
|
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/
|
61
|
-
- lib/exogenesis/
|
62
|
-
- lib/exogenesis/
|
63
|
-
- lib/exogenesis/
|
64
|
-
- lib/exogenesis/
|
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
|
-
-
|
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:
|
136
|
+
rubygems_version: 2.3.0
|
89
137
|
signing_key:
|
90
|
-
specification_version:
|
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
|
-
|
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
|