yuyi 0.0.3 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 433f29c3dd527456989fd397c0689ef37be6f26f
4
- data.tar.gz: df06a761e812cf8f42ad0b15f4b87e9260088678
3
+ metadata.gz: 5841d6388b4ca91994af0c63e27c2510b54debbb
4
+ data.tar.gz: 0d24a61a7b7904929e3cea3c140ced41f7681747
5
5
  SHA512:
6
- metadata.gz: afb1b75d2ba6783ea9b6ae84412a399a1919db287e23eac4300224632243df22a8afe639ef803565a0553169b538b87bf3f257985e5c10a17faed62a430561a4
7
- data.tar.gz: a76fb8393af349ea7194cecc18c2d75147d21dc91faeba0611510f41b72f970bfd14f737f1e10d914c831ed8f1023a427f820a6708ec15863e3bc62dc6749e21
6
+ metadata.gz: fd3c048476f8d8a80597d72cd558c6591322fb0a4e3a687b931b5ce79e0c44ce7b62fe076a2d41169e33e152b268f4abed7fc9928fc0b3f7ad63aa9d44b85d18
7
+ data.tar.gz: 53be4914b13f884f1fa7e61bf95e7b8c468adcf89919a31700a28be6fdceb57d40b244673a3af142b10340fa486eb631d49ec67ea2e34c9a3a39a55e3f94d990
data/.new CHANGED
@@ -8,7 +8,6 @@ tasks:
8
8
  gemspec:
9
9
  summary: Automation for installing/uninstalling/updating your machine environment
10
10
  description: Maintain a menu of applications and services to automate the installation
11
- of.
12
11
  homepage: https://github.com/brewster1134/Yuyi
13
12
  executables:
14
13
  - yuyi
@@ -17,4 +16,4 @@ tasks:
17
16
  - spec/**/*.rb
18
17
  project_name: Yuyi
19
18
  type: ruby
20
- version: 0.0.3
19
+ version: 0.0.6
data/README.md CHANGED
@@ -107,16 +107,11 @@ end
107
107
  ```
108
108
 
109
109
  ### TODO
110
- * create yuyi gem with new
111
- * setup (post suite install tasks)
112
- * write to file checks for existing lines
113
110
  * Enforce required options
114
111
  * New roll generator (use new!)
115
112
  * DOCS!
116
113
  * show roll options on -l
117
114
  * home brew/home brew cask roll to inherit
118
115
  * installation summary
119
- * abort install if required options arent set
120
- * post install commands
121
116
 
122
117
  [.](http://www.comedycentral.com/video-clips/3myds9/upright-citizens-brigade-sushi-chef)
data/lib/yuyi/cli.rb CHANGED
@@ -133,9 +133,12 @@ module Yuyi::Cli
133
133
  # Write several lines to to an existing file
134
134
  #
135
135
  def write_to_file file, *text
136
- File.open(File.expand_path(file), 'a') do |file|
137
- file.write text * "\n"
138
- file.write "\n"
136
+ File.open(File.expand_path(file), 'a+') do |file|
137
+ full_text = (text * "\n") + "\n"
138
+
139
+ unless file.read.include? full_text
140
+ file.write full_text
141
+ end
139
142
  end
140
143
  end
141
144
 
data/lib/yuyi/menu.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  class Yuyi::Menu
2
2
  @rolls = {}
3
- @pre_installs = []
4
- @post_installs = []
5
3
 
6
4
  # DSL Helper methods
7
5
  #
@@ -59,22 +57,6 @@ class Yuyi::Menu
59
57
  @rolls[file_name] = klass.new
60
58
  end
61
59
 
62
- def self.add_pre_install block
63
- @pre_installs << block
64
- end
65
-
66
- def self.add_post_install block
67
- @post_installs << block
68
- end
69
-
70
- def self.pre_install
71
- @pre_installs.each { |b| b.call }
72
- end
73
-
74
- def self.post_install
75
- @post_installs.each { |b| b.call }
76
- end
77
-
78
60
  # Get/Set upgrade flag
79
61
  #
80
62
  def upgrade? boolean = nil
@@ -112,13 +94,22 @@ class Yuyi::Menu
112
94
  # Initialize all the rolls in order
113
95
  #
114
96
  def order_rolls
115
- Yuyi::Menu.pre_install
97
+ all_rolls = sorted_rolls
116
98
 
117
- sorted_rolls.each do |file_name|
118
- rolls[file_name].order
99
+ # run all preinstalls first
100
+ all_rolls.each do |file_name|
101
+ rolls[file_name].appetizers
119
102
  end
120
103
 
121
- Yuyi::Menu.post_install
104
+ # then run all installs
105
+ all_rolls.each do |file_name|
106
+ rolls[file_name].entree
107
+ end
108
+
109
+ # then post installs last
110
+ all_rolls.each do |file_name|
111
+ rolls[file_name].dessert
112
+ end
122
113
  end
123
114
 
124
115
  # Find the best roll in the source to be added
data/lib/yuyi/roll.rb CHANGED
@@ -13,7 +13,8 @@ class Yuyi::Roll
13
13
  end
14
14
 
15
15
  def self.pre_install &block
16
- Yuyi::Menu.add_pre_install block
16
+ Yuyi::Menu.add_pre_install self unless @pre_install
17
+ @pre_install ||= block
17
18
  end
18
19
 
19
20
  def self.install &block
@@ -21,7 +22,8 @@ class Yuyi::Roll
21
22
  end
22
23
 
23
24
  def self.post_install &block
24
- Yuyi::Menu.add_post_install block
25
+ Yuyi::Menu.add_post_install self unless @post_install
26
+ @post_install ||= block
25
27
  end
26
28
 
27
29
  def self.uninstall &block
@@ -85,7 +87,7 @@ class Yuyi::Roll
85
87
 
86
88
  # Run the roll
87
89
  #
88
- def order
90
+ def install
89
91
  if installed?
90
92
  if options[:uninstall]
91
93
  Yuyi.say "🍣\s Uninstalling #{title}...", :color => 33
@@ -99,6 +101,14 @@ class Yuyi::Roll
99
101
  install
100
102
  end
101
103
  end
104
+ alias_method :order, :install
105
+ alias_method :entree, :install
106
+
107
+ def pre_install; pre_install; end
108
+ alias_method :appetizers, :pre_install
109
+
110
+ def post_install; post_install; end
111
+ alias_method :dessert, :pre_install
102
112
 
103
113
  private
104
114
 
@@ -126,10 +136,18 @@ private
126
136
  end
127
137
  end
128
138
 
139
+ def pre_install
140
+ instance_eval(&self.class.pre_install)
141
+ end
142
+
129
143
  def install
130
144
  instance_eval(&self.class.install)
131
145
  end
132
146
 
147
+ def post_install
148
+ instance_eval(&self.class.post_install)
149
+ end
150
+
133
151
  def uninstall
134
152
  instance_eval(&self.class.uninstall)
135
153
  end
@@ -136,6 +136,11 @@ describe Yuyi::Cli do
136
136
  CliTest.write_to_file 'test', 'arg1', 'arg2'
137
137
  expect(File.open('test').read).to eq "foo\narg1\narg2\n"
138
138
  end
139
+
140
+ it 'should not add a line if it already exists' do
141
+ CliTest.write_to_file 'test', 'foo'
142
+ expect(File.open('test').read).to eq "foo\n"
143
+ end
139
144
  end
140
145
 
141
146
  describe '#delete_from_file' do
@@ -26,40 +26,6 @@ describe Yuyi::Menu do
26
26
  end
27
27
  end
28
28
 
29
- describe '.pre_install' do
30
- before do
31
- @pre_install = lambda {}
32
- Yuyi::Menu.instance_var :pre_installs, [@pre_install,]
33
- allow(@pre_install).to receive(:call)
34
- Yuyi::Menu.pre_install
35
- end
36
-
37
- after do
38
- allow(@pre_install).to receive(:call).and_call_original
39
- end
40
-
41
- it 'should run pre_installs' do
42
- expect(@pre_install).to have_received(:call)
43
- end
44
- end
45
-
46
- describe '.post_install' do
47
- before do
48
- @post_install = lambda {}
49
- Yuyi::Menu.instance_var :post_installs, [@post_install,]
50
- allow(@post_install).to receive(:call)
51
- Yuyi::Menu.post_install
52
- end
53
-
54
- after do
55
- allow(@post_install).to receive(:call).and_call_original
56
- end
57
-
58
- it 'should run post_installs' do
59
- expect(@post_install).to have_received(:call)
60
- end
61
- end
62
-
63
29
  describe '#initialize' do
64
30
  it 'should set the path var' do
65
31
  expect(@menu.var(:path)).to eq 'spec/fixtures/menu.yaml'
@@ -180,28 +146,33 @@ describe Yuyi::Menu do
180
146
 
181
147
  describe '#order_rolls' do
182
148
  before do
183
- class MenuOrderRollsRoll; end
184
- allow(MenuOrderRollsRoll).to receive :order
185
-
186
- allow(Yuyi::Menu).to receive(:pre_install)
187
- allow(Yuyi::Menu).to receive(:post_install)
188
- allow(@menu).to receive(:sorted_rolls).and_return([:order_rolls_roll])
189
- allow(@menu).to receive(:rolls).and_return({ :order_rolls_roll => MenuOrderRollsRoll })
149
+ class MenuOrderRollsOne; end
150
+ class MenuOrderRollsTwo; end
151
+ allow(MenuOrderRollsOne).to receive :appetizers
152
+ allow(MenuOrderRollsTwo).to receive :appetizers
153
+ allow(MenuOrderRollsOne).to receive :entree
154
+ allow(MenuOrderRollsTwo).to receive :entree
155
+ allow(MenuOrderRollsOne).to receive :dessert
156
+ allow(MenuOrderRollsTwo).to receive :dessert
157
+
158
+ allow(@menu).to receive(:sorted_rolls).and_return([:menu_order_rolls_one, :menu_order_rolls_two])
159
+ allow(@menu).to receive(:rolls).and_return({ :menu_order_rolls_one => MenuOrderRollsOne, :menu_order_rolls_two => MenuOrderRollsTwo })
190
160
 
191
161
  @menu.send :order_rolls
192
162
  end
193
163
 
194
164
  after do
195
- allow(Yuyi::Menu).to receive(:pre_install).and_call_original
196
- allow(Yuyi::Menu).to receive(:post_install).and_call_original
197
165
  allow(@menu).to receive(:sorted_rolls).and_call_original
198
166
  allow(@menu).to receive(:rolls).and_call_original
199
167
  end
200
168
 
201
169
  it 'should initialize a roll with the roll options' do
202
- expect(Yuyi::Menu).to have_received(:pre_install).ordered
203
- expect(MenuOrderRollsRoll).to have_received(:order).ordered
204
- expect(Yuyi::Menu).to have_received(:post_install).ordered
170
+ expect(MenuOrderRollsOne).to have_received(:appetizers).ordered
171
+ expect(MenuOrderRollsTwo).to have_received(:appetizers).ordered
172
+ expect(MenuOrderRollsOne).to have_received(:entree).ordered
173
+ expect(MenuOrderRollsTwo).to have_received(:entree).ordered
174
+ expect(MenuOrderRollsOne).to have_received(:dessert).ordered
175
+ expect(MenuOrderRollsTwo).to have_received(:dessert).ordered
205
176
  end
206
177
  end
207
178
  end
@@ -72,7 +72,7 @@ describe Yuyi::Roll do
72
72
  end
73
73
 
74
74
  it 'should respond to .pre_install' do
75
- expect(Yuyi::Menu).to have_received(:add_pre_install)
75
+ expect(TestRoll.pre_install).to be_a Proc
76
76
  end
77
77
 
78
78
  it 'should respond to .install' do
@@ -80,7 +80,7 @@ describe Yuyi::Roll do
80
80
  end
81
81
 
82
82
  it 'should respond to .post_install' do
83
- expect(Yuyi::Menu).to have_received(:add_post_install)
83
+ expect(TestRoll.post_install).to be_a Proc
84
84
  end
85
85
 
86
86
  it 'should respond to .uninstall' do
@@ -121,10 +121,18 @@ describe Yuyi::Roll do
121
121
  expect(@test_roll.dependencies).to eq([:foo])
122
122
  end
123
123
 
124
+ it 'should return the pre_install results' do
125
+ expect(@test_roll.send(:pre_install)).to eq :pre_install
126
+ end
127
+
124
128
  it 'should return the install results' do
125
129
  expect(@test_roll.send(:install)).to eq :install
126
130
  end
127
131
 
132
+ it 'should return the post_install results' do
133
+ expect(@test_roll.send(:post_install)).to eq :post_install
134
+ end
135
+
128
136
  it 'should return the uninstall results' do
129
137
  expect(@test_roll.send(:uninstall)).to eq :uninstall
130
138
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yuyi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Brewster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-15 00:00:00.000000000 Z
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -81,7 +81,6 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Maintain a menu of applications and services to automate the installation
84
- of.
85
84
  email: brewster1134@gmail.com
86
85
  executables:
87
86
  - yuyi