yuyi 0.0.3 → 0.0.6

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 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