app_drone 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +66 -17
- data/README.md~ +68 -18
- data/TODO +4 -0
- data/TODO~ +4 -6
- data/lib/app_drone/drone.rb +24 -6
- data/lib/app_drone/drone.rb~ +25 -6
- data/lib/app_drone/drones/bootstrap/bootstrap.rb +44 -0
- data/lib/app_drone/drones/bootstrap/bootstrap.rb~ +44 -0
- data/lib/app_drone/drones/bootstrap/flair.html.slim.erb +7 -0
- data/lib/app_drone/drones/bootstrap/flair.html.slim.erb~ +7 -0
- data/lib/app_drone/drones/chosen/chosen.rb +1 -0
- data/lib/app_drone/drones/chosen/chosen.rb~ +1 -0
- data/lib/app_drone/drones/chosen/{flair.html.slim → flair.html.slim.erb} +0 -0
- data/lib/app_drone/drones/flair/flair.rb +10 -5
- data/lib/app_drone/drones/flair/flair.rb~ +10 -5
- data/lib/app_drone/drones/flair/flair_page.erb +2 -5
- data/lib/app_drone/drones/flair/flair_page.erb~ +2 -5
- data/lib/app_drone/drones/simple_form/install.erb +1 -0
- data/lib/app_drone/drones/simple_form/install.erb~ +1 -0
- data/lib/app_drone/drones/simple_form/simple_form.rb +20 -0
- data/lib/app_drone/drones/simple_form/simple_form.rb~ +20 -0
- data/lib/app_drone/object_extensions.rb +6 -0
- data/lib/app_drone/object_extensions.rb~ +12 -0
- data/lib/app_drone/template.rb +1 -1
- data/lib/app_drone/template.rb~ +1 -1
- data/lib/app_drone/version.rb +1 -1
- data/lib/app_drone/version.rb~ +1 -1
- data/out.rb +18 -2
- data/out.rb~ +144 -0
- data/test/test_app_drone.rb +2 -0
- data/test/test_app_drone.rb~ +2 -0
- metadata +15 -11
- data/lib/app_drone/drones/zzz/bootstrap/bootstrap.rb +0 -29
- data/lib/app_drone/drones/zzz/bootstrap/bootstrap.rb~ +0 -29
- data/lib/app_drone/drones/zzz/simple_form/install.erb +0 -1
- data/lib/app_drone/drones/zzz/simple_form/install.erb~ +0 -1
- data/lib/app_drone/drones/zzz/simple_form/simple_form.rb +0 -17
- data/lib/app_drone/drones/zzz/simple_form/simple_form.rb~ +0 -17
data/README.md
CHANGED
@@ -43,8 +43,8 @@ Parameters can be used to modify drone behavior:
|
|
43
43
|
To list parameters for a specific drone:
|
44
44
|
|
45
45
|
AppDrone::Bootstrap.params
|
46
|
-
# => #<struct Struct::Param name=:vendor, type=:boolean, options=
|
47
|
-
# => #<struct Struct::Param name=:responsive, type=:boolean, options=
|
46
|
+
# => #<struct Struct::Param name=:vendor, type=:boolean, options={:info=>"download a local copy into the repo"}>
|
47
|
+
# => #<struct Struct::Param name=:responsive, type=:boolean, options={:info=>"include responsive grid"}>
|
48
48
|
|
49
49
|
For readability, you can use the symbol shorthand instead of full class name:
|
50
50
|
|
@@ -103,6 +103,33 @@ You can use `desc` in the class declaration to explain what the drone does (most
|
|
103
103
|
AppDrone::MyDrone.dependencies
|
104
104
|
# => [AppDrone::DeathRay, AppDrone::YourMom]
|
105
105
|
|
106
|
+
|
107
|
+
### Drone pairings
|
108
|
+
|
109
|
+
Pairing is weaker than a dependency. A template will not render without its dependencies, but pairs are optional inclusions to add extra params and behavior in the presence of another drone.
|
110
|
+
|
111
|
+
class AppDrone::BarbraStreisand < AppDrone::Drone
|
112
|
+
depends_on :bobby_davis_jr
|
113
|
+
pairs_with :celine_dion
|
114
|
+
|
115
|
+
param :wear_human_suit_over_mechaskin, :boolean, info: 'Wear the human disguise'
|
116
|
+
param_with :celine_dion, :celine_in_rehab, :boolean, info: 'Is she currently in rehab?'
|
117
|
+
|
118
|
+
def align
|
119
|
+
bobby_davis_jr.say 'Hi'
|
120
|
+
bobby_davis_jr.introduce 'This is Celine Dion' if pair?(:celine_dion)
|
121
|
+
self.get_changed if param(:wear_human_suit_over_mechaskin)
|
122
|
+
end
|
123
|
+
|
124
|
+
def execute
|
125
|
+
do! :duet_with_bobby
|
126
|
+
if pair?(:celine_dion)
|
127
|
+
do! :coke_with_celine unless param(:celine_in_rehab)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
106
133
|
### Drone behavior parameters
|
107
134
|
|
108
135
|
class AppDrone::MyDrone < AppDrone::Drone
|
@@ -116,6 +143,29 @@ You can use `desc` in the class declaration to explain what the drone does (most
|
|
116
143
|
t.add :my_drone, lazer_color: 'teh'
|
117
144
|
|
118
145
|
|
146
|
+
A drone may also declare a parameter that is only to be used in presence of a dependency.
|
147
|
+
|
148
|
+
You can also use `param_with` to specify a parameter that is expected in presence of a pair:
|
149
|
+
|
150
|
+
class AppDrone::EddieIzzard
|
151
|
+
desc 'Professional transvestite'
|
152
|
+
|
153
|
+
pairs_with :heels
|
154
|
+
param_with :heels, :wearing_heels, :boolean, default: true
|
155
|
+
|
156
|
+
def align
|
157
|
+
# defaults to true in the presence of :heels dependency
|
158
|
+
if pair?(:heels) && param(:wearing_heels)
|
159
|
+
puts "I am a professional transvestite, so I can run about in heels and not fall over."
|
160
|
+
puts "Cause if a woman falls over wearing heels, that’s embarrassing."
|
161
|
+
puts "But if a bloke falls over wearing heels, you have to kill yourself."
|
162
|
+
puts "It’s the end of your life.
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
|
119
169
|
### Drone communication
|
120
170
|
|
121
171
|
Drones can talk to eachother via a proxy on the template they are included in, using the class name as a reference:
|
@@ -138,7 +188,6 @@ For convenience, `method_missing` is used to allow you to use the underscore'd n
|
|
138
188
|
end
|
139
189
|
end
|
140
190
|
|
141
|
-
|
142
191
|
**Take a look at existing drones for more info!**
|
143
192
|
|
144
193
|
|
@@ -153,25 +202,24 @@ AppDrone is not for everyone. It's highly opinionated about how a Rails app shou
|
|
153
202
|
### Active drones (put 'em to work!)
|
154
203
|
|
155
204
|
- Bundle
|
156
|
-
- Stylesheet
|
157
|
-
- Javascript
|
205
|
+
- Stylesheet (Sass & Compass)
|
206
|
+
- Javascript (Coffescript & jQuery)
|
158
207
|
- SlimView
|
159
208
|
- HighVoltage
|
160
|
-
- Showcase (drones use this to demonstrate their working functionality)
|
161
209
|
- Chosen, by harvestHQ
|
210
|
+
- Bootstrap, by Twitter
|
211
|
+
- SimpleForm (with optional Country Select and automatic Twitter Bootstrap integration)
|
212
|
+
- Flair (drones use this to demonstrate their working functionality)
|
162
213
|
- Cleanup
|
163
|
-
|
214
|
+
|
164
215
|
|
165
216
|
### Frozen drones (currently in development)
|
166
217
|
|
167
|
-
- Bootstrap
|
168
|
-
- FactoryGirl
|
169
|
-
- Git
|
170
|
-
- Guard
|
171
218
|
- RankedModel
|
219
|
+
- Git
|
172
220
|
- RSpec
|
173
|
-
-
|
174
|
-
|
221
|
+
- FactoryGirl
|
222
|
+
- Guard
|
175
223
|
|
176
224
|
### Future drones (TODO - I'll get there some day!)
|
177
225
|
|
@@ -181,17 +229,18 @@ AppDrone is not for everyone. It's highly opinionated about how a Rails app shou
|
|
181
229
|
- Responders
|
182
230
|
- HasScope
|
183
231
|
- Pagination
|
184
|
-
-
|
232
|
+
- jQuery shims
|
233
|
+
- jQuery UI (vendor + theme etc.)
|
234
|
+
- pie.htc for IE
|
235
|
+
- HTML5 shim for IE
|
185
236
|
- Airbrake + API Key
|
237
|
+
- CarrierWave (and optional cloud resizing thingy)
|
186
238
|
- rails-best-practices (and the other output gem for debugging)
|
187
239
|
- NewRelic
|
188
240
|
- EngineYard for deployment
|
189
|
-
- jQuery shims
|
190
241
|
- Backbone integration + Skim
|
191
242
|
- Ember.js integration
|
192
243
|
- Pivotal tracker
|
193
|
-
- pie.htc for IE
|
194
|
-
- HTML5 shim for IE
|
195
244
|
|
196
245
|
|
197
246
|
## Contributing
|
data/README.md~
CHANGED
@@ -43,8 +43,8 @@ Parameters can be used to modify drone behavior:
|
|
43
43
|
To list parameters for a specific drone:
|
44
44
|
|
45
45
|
AppDrone::Bootstrap.params
|
46
|
-
# => #<struct Struct::Param name=:vendor, type=:boolean, options=
|
47
|
-
# => #<struct Struct::Param name=:responsive, type=:boolean, options=
|
46
|
+
# => #<struct Struct::Param name=:vendor, type=:boolean, options={:info=>"download a local copy into the repo"}>
|
47
|
+
# => #<struct Struct::Param name=:responsive, type=:boolean, options={:info=>"include responsive grid"}>
|
48
48
|
|
49
49
|
For readability, you can use the symbol shorthand instead of full class name:
|
50
50
|
|
@@ -103,6 +103,33 @@ You can use `desc` in the class declaration to explain what the drone does (most
|
|
103
103
|
AppDrone::MyDrone.dependencies
|
104
104
|
# => [AppDrone::DeathRay, AppDrone::YourMom]
|
105
105
|
|
106
|
+
|
107
|
+
### Drone pairings
|
108
|
+
|
109
|
+
Pairing is weaker than a dependency. A template will not render without its dependencies, but pairs are optional inclusions to add extra params and behavior in the presence of another drone.
|
110
|
+
|
111
|
+
class AppDrone::BarbraStreisand < AppDrone::Drone
|
112
|
+
depends_on :bobby_davis_jr
|
113
|
+
pairs_with :celine_dion
|
114
|
+
|
115
|
+
param :wear_human_suit_over_mechaskin, :boolean, info: 'Wear the human disguise'
|
116
|
+
param_with :celine_dion, :celine_in_rehab, :boolean, info: 'Is she currently in rehab?'
|
117
|
+
|
118
|
+
def align
|
119
|
+
bobby_davis_jr.say 'Hi'
|
120
|
+
bobby_davis_jr.introduce 'This is Celine Dion' if pair?(:celine_dion)
|
121
|
+
self.get_changed if param(:wear_human_suit_over_mechaskin)
|
122
|
+
end
|
123
|
+
|
124
|
+
def execute
|
125
|
+
do! :duet_with_bobby
|
126
|
+
if pair?(:celine_dion)
|
127
|
+
do! :coke_with_celine unless param(:celine_in_rehab)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
106
133
|
### Drone behavior parameters
|
107
134
|
|
108
135
|
class AppDrone::MyDrone < AppDrone::Drone
|
@@ -116,6 +143,29 @@ You can use `desc` in the class declaration to explain what the drone does (most
|
|
116
143
|
t.add :my_drone, lazer_color: 'teh'
|
117
144
|
|
118
145
|
|
146
|
+
A drone may also declare a parameter that is only to be used in presence of a dependency.
|
147
|
+
|
148
|
+
You can also use `param_with` to specify a parameter that is expected in presence of a pair:
|
149
|
+
|
150
|
+
class AppDrone::EddieIzzard
|
151
|
+
desc 'Professional transvestite'
|
152
|
+
|
153
|
+
pairs_with :heels
|
154
|
+
param_with :heels, :wearing_heels, :boolean, default: true
|
155
|
+
|
156
|
+
def align
|
157
|
+
# defaults to true in the presence of :heels dependency
|
158
|
+
if pair?(:heels) && param(:wearing_heels)
|
159
|
+
puts "I am a professional transvestite, so I can run about in heels and not fall over."
|
160
|
+
puts "Cause if a woman falls over wearing heels, that’s embarrassing."
|
161
|
+
puts "But if a bloke falls over wearing heels, you have to kill yourself."
|
162
|
+
puts "It’s the end of your life.
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
|
119
169
|
### Drone communication
|
120
170
|
|
121
171
|
Drones can talk to eachother via a proxy on the template they are included in, using the class name as a reference:
|
@@ -138,7 +188,6 @@ For convenience, `method_missing` is used to allow you to use the underscore'd n
|
|
138
188
|
end
|
139
189
|
end
|
140
190
|
|
141
|
-
|
142
191
|
**Take a look at existing drones for more info!**
|
143
192
|
|
144
193
|
|
@@ -153,45 +202,46 @@ AppDrone is not for everyone. It's highly opinionated about how a Rails app shou
|
|
153
202
|
### Active drones (put 'em to work!)
|
154
203
|
|
155
204
|
- Bundle
|
156
|
-
- Stylesheet
|
157
|
-
- Javascript
|
205
|
+
- Stylesheet (Sass & Compass)
|
206
|
+
- Javascript (Coffescript & jQuery)
|
158
207
|
- SlimView
|
159
208
|
- HighVoltage
|
160
|
-
- Showcase (drones use this to demonstrate their working functionality)
|
161
209
|
- Chosen, by harvestHQ
|
210
|
+
- Bootstrap, by Twitter
|
211
|
+
- SimpleForm (with optional Country Select and automatic Twitter Bootstrap integration)
|
212
|
+
- Flair (drones use this to demonstrate their working functionality)
|
162
213
|
- Cleanup
|
163
|
-
|
214
|
+
|
164
215
|
|
165
216
|
### Frozen drones (currently in development)
|
166
217
|
|
167
|
-
- Bootstrap
|
168
|
-
- FactoryGirl
|
169
|
-
- Git
|
170
|
-
- Guard
|
171
218
|
- RankedModel
|
219
|
+
- Git
|
172
220
|
- RSpec
|
173
|
-
-
|
174
|
-
|
221
|
+
- FactoryGirl
|
222
|
+
- Guard
|
175
223
|
|
176
224
|
### Future drones (TODO - I'll get there some day!)
|
177
225
|
|
178
226
|
- Stylesheet utils
|
179
|
-
- SlimViews: Add browser-specific classes to <html>
|
227
|
+
- SlimViews: Add browser-specific classes to <html> via useragent + helpers..
|
180
228
|
- UserAgent blocking script
|
181
229
|
- Responders
|
182
230
|
- HasScope
|
183
231
|
- Pagination
|
184
|
-
-
|
232
|
+
- jQuery shims
|
233
|
+
- jQuery UI (vendor + theme etc.)
|
234
|
+
- pie.htc for IE
|
235
|
+
- HTML5 shim for IE
|
185
236
|
- Airbrake + API Key
|
237
|
+
- CarrierWave (and optional cloud resizing thingy)
|
186
238
|
- rails-best-practices (and the other output gem for debugging)
|
187
239
|
- NewRelic
|
188
240
|
- EngineYard for deployment
|
189
|
-
|
241
|
+
|
190
242
|
- Backbone integration + Skim
|
191
243
|
- Ember.js integration
|
192
244
|
- Pivotal tracker
|
193
|
-
- pie.htc for IE
|
194
|
-
- HTML5 shim for IE
|
195
245
|
|
196
246
|
|
197
247
|
## Contributing
|
data/TODO
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
** templates must be added and run in the order that satisfies dependency order best. (also consider pairings if possible)
|
2
|
+
i.e. a drone can only run after it's dependants have had their turn (unless they mutually depend)
|
3
|
+
|
4
|
+
** param 'default' values... (when accessing param, if nil, return default (unless default is nil too))
|
data/TODO~
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
2. Drone dependencies
|
5
|
-
e.g. depends Stylesheets, Gems
|
6
|
-
- template complains if render is called and dependencies are not met
|
1
|
+
** templates must be added and run in the order that satisfies dependency order best.
|
2
|
+
**
|
3
|
+
i.e. a drone can only run after it's dependants have had their turn (unless they mutually depend)
|
7
4
|
|
5
|
+
** param 'default' values... (when accessing param, if nil, return default (unless default is nil too))
|
data/lib/app_drone/drone.rb
CHANGED
@@ -13,19 +13,28 @@ class Drone
|
|
13
13
|
setup
|
14
14
|
end
|
15
15
|
|
16
|
+
def param(sym)
|
17
|
+
(@params || {})[sym]
|
18
|
+
end
|
19
|
+
|
16
20
|
# DSL
|
17
|
-
def ^; @template end
|
21
|
+
def ^; @template end # This is never used, not even sure if it works (something about a misplaced '.' error)
|
18
22
|
def >>(klass); @template.hook(klass); end
|
19
23
|
|
20
24
|
def method_missing(meth, *args, &block)
|
21
25
|
if Drone.drones.include?(meth)
|
22
|
-
klass =
|
26
|
+
klass = meth.to_app_drone_class
|
23
27
|
return (self >> klass)
|
24
28
|
else
|
25
29
|
super
|
26
30
|
end
|
27
31
|
end
|
28
32
|
|
33
|
+
def pair?(drone_symbol)
|
34
|
+
drone_klass = ('AppDrone::' + drone_symbol.to_s.classify).constantize
|
35
|
+
return @template.hook?(drone_klass)
|
36
|
+
end
|
37
|
+
|
29
38
|
# Expected implementations
|
30
39
|
def align; end
|
31
40
|
def execute; end
|
@@ -33,13 +42,13 @@ class Drone
|
|
33
42
|
# Optional implementations
|
34
43
|
def setup; end
|
35
44
|
|
36
|
-
def render(partial)
|
45
|
+
def render(partial, opts={})
|
37
46
|
class_name = self.class.to_s.split('::').last.underscore
|
38
47
|
template_path = "/drones/#{class_name}/#{partial}.erb"
|
39
48
|
full_path = File.dirname(__FILE__) + template_path
|
40
49
|
snippet = ERB.new File.read(full_path)
|
41
50
|
output = snippet.result(binding)
|
42
|
-
output = "# --- \n# #{self.class.to_s}\n# ---\n" + output
|
51
|
+
output = "# --- \n# #{self.class.to_s}\n# ---\n" + output unless opts[:skip_stamp]
|
43
52
|
return output
|
44
53
|
end
|
45
54
|
|
@@ -50,8 +59,12 @@ class Drone
|
|
50
59
|
# DSL: Integration-specific options
|
51
60
|
attr_accessor :params
|
52
61
|
class << self
|
62
|
+
def param_with(drone_klass, name, type, *options)
|
63
|
+
param(name,type,options.first.merge({ with: drone_klass }))
|
64
|
+
end
|
65
|
+
|
53
66
|
def param(name, type, *options)
|
54
|
-
(@params ||= []) << Param.new(name, type, options)
|
67
|
+
(@params ||= []) << Param.new(name, type, options.first)
|
55
68
|
end
|
56
69
|
def params
|
57
70
|
@params
|
@@ -64,7 +77,12 @@ class Drone
|
|
64
77
|
|
65
78
|
def depends_on(*klass_symbols); @dependencies = klass_symbols end
|
66
79
|
def dependencies
|
67
|
-
(@dependencies || []).map
|
80
|
+
(@dependencies || []).map(&:to_app_drone_class)
|
81
|
+
end
|
82
|
+
|
83
|
+
def pairs_with(*klass_symbols); @pairs = klass_symbols end
|
84
|
+
def pairs
|
85
|
+
(@pairs || []).map(&:to_app_drone_class)
|
68
86
|
end
|
69
87
|
|
70
88
|
def owns_generator_method(m); @generator_method = m end
|
data/lib/app_drone/drone.rb~
CHANGED
@@ -13,19 +13,28 @@ class Drone
|
|
13
13
|
setup
|
14
14
|
end
|
15
15
|
|
16
|
+
def param(sym)
|
17
|
+
(@params || {})[sym]
|
18
|
+
end
|
19
|
+
|
16
20
|
# DSL
|
17
|
-
def ^; @template end
|
21
|
+
def ^; @template end # This is never used, not even sure if it works (something about a misplaced '.' error)
|
18
22
|
def >>(klass); @template.hook(klass); end
|
19
23
|
|
20
24
|
def method_missing(meth, *args, &block)
|
21
25
|
if Drone.drones.include?(meth)
|
22
|
-
klass =
|
26
|
+
klass = meth.to_app_drone_class
|
23
27
|
return (self >> klass)
|
24
28
|
else
|
25
29
|
super
|
26
30
|
end
|
27
31
|
end
|
28
32
|
|
33
|
+
def pair?(drone_symbol)
|
34
|
+
drone_klass = ('AppDrone::' + drone_symbol.to_s.classify).constantize
|
35
|
+
return @template.hook?(drone_klass)
|
36
|
+
end
|
37
|
+
|
29
38
|
# Expected implementations
|
30
39
|
def align; end
|
31
40
|
def execute; end
|
@@ -33,13 +42,14 @@ class Drone
|
|
33
42
|
# Optional implementations
|
34
43
|
def setup; end
|
35
44
|
|
36
|
-
def render(partial)
|
45
|
+
def render(partial, opts={})
|
46
|
+
return opts.to_s
|
37
47
|
class_name = self.class.to_s.split('::').last.underscore
|
38
48
|
template_path = "/drones/#{class_name}/#{partial}.erb"
|
39
49
|
full_path = File.dirname(__FILE__) + template_path
|
40
50
|
snippet = ERB.new File.read(full_path)
|
41
51
|
output = snippet.result(binding)
|
42
|
-
output = "# --- \n# #{self.class.to_s}\n# ---\n" + output
|
52
|
+
output = "# --- \n# #{self.class.to_s}\n# ---\n" + output unless opts[:skip_stamp]
|
43
53
|
return output
|
44
54
|
end
|
45
55
|
|
@@ -50,8 +60,12 @@ class Drone
|
|
50
60
|
# DSL: Integration-specific options
|
51
61
|
attr_accessor :params
|
52
62
|
class << self
|
63
|
+
def param_with(drone_klass, name, type, *options)
|
64
|
+
param(name,type,options.first.merge({ with: drone_klass }))
|
65
|
+
end
|
66
|
+
|
53
67
|
def param(name, type, *options)
|
54
|
-
(@params ||= []) << Param.new(name, type, options)
|
68
|
+
(@params ||= []) << Param.new(name, type, options.first)
|
55
69
|
end
|
56
70
|
def params
|
57
71
|
@params
|
@@ -64,7 +78,12 @@ class Drone
|
|
64
78
|
|
65
79
|
def depends_on(*klass_symbols); @dependencies = klass_symbols end
|
66
80
|
def dependencies
|
67
|
-
(@dependencies || []).map
|
81
|
+
(@dependencies || []).map(&:to_app_drone_class)
|
82
|
+
end
|
83
|
+
|
84
|
+
def pairs_with(*klass_symbols); @pairs = klass_symbols end
|
85
|
+
def pairs
|
86
|
+
(@pairs || []).map(&:to_app_drone_class)
|
68
87
|
end
|
69
88
|
|
70
89
|
def owns_generator_method(m); @generator_method = m end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Incomplete
|
2
|
+
module AppDrone
|
3
|
+
class Bootstrap < Drone
|
4
|
+
desc "Installs Twitter Bootstrap stylesheets and javascripts"
|
5
|
+
|
6
|
+
param :vendor, :boolean, info: 'place a local copy of the files into the repo for customization'
|
7
|
+
param :responsive, :boolean, info: 'include responsive grid'
|
8
|
+
param :font_awesome, :boolean, info: 'use font-awesome for icons'
|
9
|
+
|
10
|
+
# TODO js import options
|
11
|
+
|
12
|
+
depends_on :bundle, :stylesheet, :javascript
|
13
|
+
|
14
|
+
def align
|
15
|
+
bundle.add 'compass_twitter_bootstrap', git: 'git://github.com/vwall/compass-twitter-bootstrap.git', group: :assets
|
16
|
+
param(:vendor) ? align_vendor : align_bundle
|
17
|
+
flair!
|
18
|
+
end
|
19
|
+
|
20
|
+
def execute
|
21
|
+
param(:vendor) ? execute_vendor : execute_bundle
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def align_vendor
|
26
|
+
# TODO import paths for stylesheet (different to bundle)
|
27
|
+
# TODO js imports - based on options
|
28
|
+
end
|
29
|
+
|
30
|
+
def align_bundle
|
31
|
+
stylesheet.import param(:font_awesome) ? 'compass_twitter_bootstrap_awesome' : 'compass_twitter_bootstrap'
|
32
|
+
stylesheet.import 'compass_twitter_bootstrap_responsive' if param(:responsive)
|
33
|
+
# TODO js imports - based on options
|
34
|
+
end
|
35
|
+
|
36
|
+
def execute_vendor
|
37
|
+
# TODO pull files from git
|
38
|
+
end
|
39
|
+
|
40
|
+
def execute_bundle
|
41
|
+
# TODO nothing
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# Incomplete
|
2
|
+
module AppDrone
|
3
|
+
class Bootstrap < Drone
|
4
|
+
desc "Installs Twitter Bootstrap stylesheets and javascripts"
|
5
|
+
|
6
|
+
param :vendor, :boolean, info: 'place a local copy of the files into the repo for customization'
|
7
|
+
param :responsive, :boolean, info: 'include responsive grid'
|
8
|
+
param :font_awesome, :boolean, info: 'use font-awesome for icons'
|
9
|
+
|
10
|
+
# TODO js import options
|
11
|
+
|
12
|
+
depends_on :bundle, :stylesheet, :javascript
|
13
|
+
|
14
|
+
def align
|
15
|
+
bundle.add 'compass_twitter_bootstrap', git: 'git://github.com/vwall/compass-twitter-bootstrap.git', group: :assets
|
16
|
+
param(:vendor) ? align_vendor : align_bundle
|
17
|
+
flair!
|
18
|
+
end
|
19
|
+
|
20
|
+
def execute
|
21
|
+
param(:vendor) ? execute_vendor : execute_bundle
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def align_vendor
|
26
|
+
# TODO import paths for stylesheet (different to bundle)
|
27
|
+
# TODO js imports - based on options
|
28
|
+
end
|
29
|
+
|
30
|
+
def align_bundle
|
31
|
+
stylesheet.import param(:font_awesome) ? 'compass_twitter_bootstrap_awesome' : 'compass_twitter_bootstrap'
|
32
|
+
stylesheet.import 'compass_twitter_bootstrap_responsive' if param(:responsive)
|
33
|
+
# TODO js imports - based on options
|
34
|
+
end
|
35
|
+
|
36
|
+
def execute_vendor
|
37
|
+
# TODO pull files from git
|
38
|
+
end
|
39
|
+
|
40
|
+
def execute_bundle
|
41
|
+
# TODO nothing
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
File without changes
|
@@ -10,7 +10,7 @@ class Flair < Drone
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def add(klass)
|
13
|
-
flairs << klass.class.to_s.gsub('AppDrone::','').underscore
|
13
|
+
flairs << klass.class.to_s.gsub('AppDrone::','').underscore.to_sym
|
14
14
|
end
|
15
15
|
|
16
16
|
def execute
|
@@ -18,15 +18,20 @@ class Flair < Drone
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def flair_for(drone_name)
|
21
|
-
|
22
|
-
|
23
|
-
return snippet.result(binding)
|
21
|
+
drone = send(drone_name)
|
22
|
+
return drone.render 'flair.html.slim', skip_stamp: true
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
26
|
+
|
27
|
+
# extend drones so they can call `flair!` rather than the verbose method
|
28
|
+
# this pattern is useful for drones that take a single boolean parameter
|
29
|
+
# e.g.
|
30
|
+
# flair: do / don't flair, as opposed to
|
31
|
+
# bootstrap: vendor, responsive, font_awesome...
|
27
32
|
class Drone
|
28
33
|
def flair!
|
29
|
-
flair.add(self)
|
34
|
+
flair.add(self) if pair?(:flair)
|
30
35
|
end
|
31
36
|
end
|
32
37
|
|
@@ -10,7 +10,7 @@ class Flair < Drone
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def add(klass)
|
13
|
-
flairs << klass.class.to_s.gsub('AppDrone::','').underscore
|
13
|
+
flairs << klass.class.to_s.gsub('AppDrone::','').underscore.to_sym
|
14
14
|
end
|
15
15
|
|
16
16
|
def execute
|
@@ -18,15 +18,20 @@ class Flair < Drone
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def flair_for(drone_name)
|
21
|
-
|
22
|
-
|
23
|
-
return snippet.result(binding)
|
21
|
+
drone = send(drone_name)
|
22
|
+
return drone.render 'flair.html.slim', stamp: true
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
26
|
+
|
27
|
+
# extend drones so they can call `flair!` rather than the verbose method
|
28
|
+
# this pattern is useful for drones that take a single boolean parameter
|
29
|
+
# e.g.
|
30
|
+
# flair: do / don't flair, as opposed to
|
31
|
+
# bootstrap: vendor, responsive, font_awesome...
|
27
32
|
class Drone
|
28
33
|
def flair!
|
29
|
-
flair.add(self)
|
34
|
+
flair.add(self) if pair?(:flair)
|
30
35
|
end
|
31
36
|
end
|
32
37
|
|
@@ -0,0 +1 @@
|
|
1
|
+
generate "simple_form:install<%= ' --bootstrap' if pair?(:bootstrap) %>"
|
@@ -0,0 +1 @@
|
|
1
|
+
generate "simple_form:install<%= ' --bootstrap' if pair?(:bootstrap) %>"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Complete
|
2
|
+
module AppDrone
|
3
|
+
class SimpleForm < Drone
|
4
|
+
desc "Installs SimpleForm, with optional Country Select and automatic Twitter Bootstrap integration"
|
5
|
+
|
6
|
+
depends_on :bundle
|
7
|
+
pairs_with :bootstrap
|
8
|
+
|
9
|
+
param :add_country_select, :boolean, info: 'Add country_select for listing countries'
|
10
|
+
|
11
|
+
def align
|
12
|
+
bundle.add 'simple_form'
|
13
|
+
bundle.add 'country_select' if param(:add_country_select)
|
14
|
+
end
|
15
|
+
|
16
|
+
def execute
|
17
|
+
do! :install
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Complete
|
2
|
+
module AppDrone
|
3
|
+
class SimpleForm < Drone
|
4
|
+
desc "Installs SimpleForm, with optional Country Select and automatic Twitter Bootstrap integration"
|
5
|
+
|
6
|
+
depends_on :bundle
|
7
|
+
pairs_with :bootstrap
|
8
|
+
|
9
|
+
param :add_country_select, :boolean, info: 'Add country_select for listing countries'
|
10
|
+
|
11
|
+
def align
|
12
|
+
bundle.add 'simple_form'
|
13
|
+
bundle.add 'country_select' if param(:add_country_select)
|
14
|
+
end
|
15
|
+
|
16
|
+
def execute
|
17
|
+
do! :install
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -3,3 +3,15 @@ class Class
|
|
3
3
|
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
4
4
|
end
|
5
5
|
end
|
6
|
+
|
7
|
+
class String
|
8
|
+
def blank?
|
9
|
+
self == ''
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Symbol
|
14
|
+
def to_app_drone_class
|
15
|
+
('AppDrone::' + self.to_s.classify).constantize
|
16
|
+
end
|
17
|
+
end
|
data/lib/app_drone/template.rb
CHANGED
@@ -8,7 +8,7 @@ class AppDrone::Template
|
|
8
8
|
|
9
9
|
def drone_objects; @drones.values end
|
10
10
|
def drone_classes; @drones.keys end
|
11
|
-
def hook?(klass);
|
11
|
+
def hook?(klass); !@drones[klass].nil? end
|
12
12
|
def hook(klass)
|
13
13
|
raise "No such drone: #{klass}" unless i_klass = @drones[klass]
|
14
14
|
return i_klass
|
data/lib/app_drone/template.rb~
CHANGED
@@ -8,7 +8,7 @@ class AppDrone::Template
|
|
8
8
|
|
9
9
|
def drone_objects; @drones.values end
|
10
10
|
def drone_classes; @drones.keys end
|
11
|
-
def hook?(klass);
|
11
|
+
def hook?(klass); !@drones[klass].nil? end
|
12
12
|
def hook(klass)
|
13
13
|
raise "No such drone: #{klass}" unless i_klass = @drones[klass]
|
14
14
|
return i_klass
|
data/lib/app_drone/version.rb
CHANGED
data/lib/app_drone/version.rb~
CHANGED
data/out.rb
CHANGED
@@ -27,6 +27,8 @@ class AppBuilder < Rails::AppBuilder
|
|
27
27
|
@generator.gem 'compass-rails'
|
28
28
|
@generator.gem 'slim-rails'
|
29
29
|
@generator.gem 'high_voltage'
|
30
|
+
@generator.gem 'simple_form'
|
31
|
+
@generator.gem 'compass_twitter_bootstrap', :git=>"git://github.com/vwall/compass-twitter-bootstrap.git", :group=>:assets
|
30
32
|
@generator.gem 'chosen-rails'
|
31
33
|
|
32
34
|
run_bundle
|
@@ -68,6 +70,8 @@ COFFEE
|
|
68
70
|
/*= require_self */
|
69
71
|
|
70
72
|
@import 'compass'
|
73
|
+
@import 'compass_twitter_bootstrap_awesome'
|
74
|
+
@import 'compass_twitter_bootstrap_responsive'
|
71
75
|
|
72
76
|
SASS
|
73
77
|
|
@@ -102,6 +106,15 @@ FileUtils.mkpath 'app/views/pages'
|
|
102
106
|
h1 Flair!
|
103
107
|
|
104
108
|
|
109
|
+
h3 Bootstrap
|
110
|
+
|
111
|
+
a.btn.btn-primary.btn-large Shiny!
|
112
|
+
|
113
|
+
br
|
114
|
+
a.btn.btn
|
115
|
+
i.icon-heart
|
116
|
+
| with Font Awesome!
|
117
|
+
|
105
118
|
|
106
119
|
h3 Chosen
|
107
120
|
|
@@ -110,10 +123,13 @@ select.chzn-select
|
|
110
123
|
option Two
|
111
124
|
option Three
|
112
125
|
|
113
|
-
|
114
|
-
|
115
126
|
FLAIR
|
116
127
|
|
128
|
+
# ---
|
129
|
+
# AppDrone::SimpleForm
|
130
|
+
# ---
|
131
|
+
generate "simple_form:install --bootstrap"
|
132
|
+
|
117
133
|
# ---
|
118
134
|
# AppDrone::Cleanup
|
119
135
|
# ---
|
data/out.rb~
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
class AppBuilder < Rails::AppBuilder
|
2
|
+
include Thor::Actions
|
3
|
+
include Thor::Shell
|
4
|
+
|
5
|
+
# Express app templating for Rails
|
6
|
+
# ------------------------------------
|
7
|
+
# USAGE:
|
8
|
+
# 1. run: `rails new app_name --builder=path/to/builder.rb` (URI's work here too)
|
9
|
+
# 2. ???
|
10
|
+
# 3. PROFIT!
|
11
|
+
|
12
|
+
def test
|
13
|
+
return
|
14
|
+
# TODO
|
15
|
+
# skips test framework, but we can probably just bastardize the options in the same way as with :skip_bundle
|
16
|
+
# either make `test` build the actual directories etc., or use a script
|
17
|
+
# either way, this method is stupid.
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def gemfile
|
22
|
+
super
|
23
|
+
# ---
|
24
|
+
# AppDrone::Bundle
|
25
|
+
# ---
|
26
|
+
@generator.gem 'therubyracer'
|
27
|
+
@generator.gem 'compass-rails'
|
28
|
+
@generator.gem 'slim-rails'
|
29
|
+
@generator.gem 'high_voltage'
|
30
|
+
@generator.gem 'simple_form'
|
31
|
+
@generator.gem 'compass_twitter_bootstrap', :git=>"git://github.com/vwall/compass-twitter-bootstrap.git", :group=>:assets
|
32
|
+
@generator.gem 'chosen-rails'
|
33
|
+
|
34
|
+
run_bundle
|
35
|
+
@generator.options = @generator.options.dup
|
36
|
+
@generator.options[:skip_bundle] = true
|
37
|
+
@generator.options.freeze
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def leftovers
|
43
|
+
# ---
|
44
|
+
# AppDrone::Javascript
|
45
|
+
# ---
|
46
|
+
js_asset_path = File.join %w(app assets javascripts application.js)
|
47
|
+
@generator.remove_file(js_asset_path)
|
48
|
+
@coffee_asset_path = File.join %w(app assets javascripts application.js.coffee)
|
49
|
+
@generator.create_file @coffee_asset_path, <<-COFFEE
|
50
|
+
//= require jquery
|
51
|
+
//= require jquery_ujs
|
52
|
+
//= require chosen-jquery
|
53
|
+
//= require_tree .
|
54
|
+
|
55
|
+
$(document).ready ->
|
56
|
+
$('.chzn-select').chosen();
|
57
|
+
|
58
|
+
|
59
|
+
COFFEE
|
60
|
+
|
61
|
+
# ---
|
62
|
+
# AppDrone::Stylesheet
|
63
|
+
# ---
|
64
|
+
@css_asset_path = File.join %w(app assets stylesheets application.css)
|
65
|
+
@generator.remove_file(@css_asset_path)
|
66
|
+
@sass_asset_path = File.join %w(app assets stylesheets application.css.sass)
|
67
|
+
|
68
|
+
@generator.create_file @sass_asset_path, <<-SASS
|
69
|
+
/*= require chosen */
|
70
|
+
/*= require_self */
|
71
|
+
|
72
|
+
@import 'compass'
|
73
|
+
@import 'compass_twitter_bootstrap_awesome'
|
74
|
+
@import 'compass_twitter_bootstrap_responsive'
|
75
|
+
|
76
|
+
SASS
|
77
|
+
|
78
|
+
# ---
|
79
|
+
# AppDrone::SlimView
|
80
|
+
# ---
|
81
|
+
erb_index_path = File.join %w(app views layouts application.html.erb)
|
82
|
+
@generator.remove_file(erb_index_path)
|
83
|
+
slim_index_path = File.join %w(app views layouts application.html.slim)
|
84
|
+
@generator.create_file slim_index_path, <<-SLIM
|
85
|
+
doctype 5
|
86
|
+
html
|
87
|
+
head
|
88
|
+
title #{app_name}
|
89
|
+
= stylesheet_link_tag 'application', media: 'all'
|
90
|
+
= javascript_include_tag 'application'
|
91
|
+
= csrf_meta_tags
|
92
|
+
|
93
|
+
body class=controller_name
|
94
|
+
= yield
|
95
|
+
SLIM
|
96
|
+
|
97
|
+
# ---
|
98
|
+
# AppDrone::HighVoltage
|
99
|
+
# ---
|
100
|
+
FileUtils.mkpath 'app/views/pages'
|
101
|
+
|
102
|
+
# ---
|
103
|
+
# AppDrone::Flair
|
104
|
+
# ---
|
105
|
+
@generator.create_file 'app/views/pages/flair.html.slim', <<-FLAIR
|
106
|
+
h1 Flair!
|
107
|
+
|
108
|
+
|
109
|
+
h3 Bootstrap
|
110
|
+
|
111
|
+
a.btn.btn-primary.btn-large Shiny!
|
112
|
+
|
113
|
+
br
|
114
|
+
a.btn.btn
|
115
|
+
i.icon-heart
|
116
|
+
| with Font Awesome!
|
117
|
+
|
118
|
+
|
119
|
+
h3 Chosen
|
120
|
+
|
121
|
+
select.chzn-select
|
122
|
+
option One
|
123
|
+
option Two
|
124
|
+
option Three
|
125
|
+
|
126
|
+
FLAIR
|
127
|
+
|
128
|
+
# ---
|
129
|
+
# AppDrone::SimpleForm
|
130
|
+
# ---
|
131
|
+
generate "simple_form:install --bootstrap"
|
132
|
+
|
133
|
+
# ---
|
134
|
+
# AppDrone::Cleanup
|
135
|
+
# ---
|
136
|
+
@generator.remove_file File.join %w(public index.html)
|
137
|
+
@generator.remove_file File.join %w(app assets images rails.png)
|
138
|
+
@generator.remove_file File.join %w(README.rdoc)
|
139
|
+
|
140
|
+
rake 'db:migrate'
|
141
|
+
say "She's all yours, sparky!\n\n", :green
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
data/test/test_app_drone.rb
CHANGED
@@ -23,6 +23,8 @@ class AppDroneTest < Test::Unit::TestCase
|
|
23
23
|
template.add :slim_view
|
24
24
|
template.add :high_voltage
|
25
25
|
template.add :flair
|
26
|
+
template.add :simple_form
|
27
|
+
template.add :bootstrap, font_awesome: true, responsive: true
|
26
28
|
template.add :chosen
|
27
29
|
template.add :cleanup
|
28
30
|
template.render_to_file
|
data/test/test_app_drone.rb~
CHANGED
@@ -23,6 +23,8 @@ class AppDroneTest < Test::Unit::TestCase
|
|
23
23
|
template.add :slim_view
|
24
24
|
template.add :high_voltage
|
25
25
|
template.add :flair
|
26
|
+
template.add :simple_form
|
27
|
+
template.add :bootstrap, font_awesome: true, responsive: true
|
26
28
|
template.add :chosen
|
27
29
|
template.add :cleanup
|
28
30
|
template.render_to_file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app_drone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-21 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &17768680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 3.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *17768680
|
25
25
|
description: Give your Rails apps a kickstart
|
26
26
|
email:
|
27
27
|
- whoisdanieldavey@gmail.com
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- README.md~
|
38
38
|
- Rakefile
|
39
39
|
- Rakefile~
|
40
|
+
- TODO
|
40
41
|
- TODO~
|
41
42
|
- app_drone.gemspec
|
42
43
|
- app_drone.gemspec~
|
@@ -44,6 +45,10 @@ files:
|
|
44
45
|
- lib/app_drone.rb~
|
45
46
|
- lib/app_drone/drone.rb
|
46
47
|
- lib/app_drone/drone.rb~
|
48
|
+
- lib/app_drone/drones/bootstrap/bootstrap.rb
|
49
|
+
- lib/app_drone/drones/bootstrap/bootstrap.rb~
|
50
|
+
- lib/app_drone/drones/bootstrap/flair.html.slim.erb
|
51
|
+
- lib/app_drone/drones/bootstrap/flair.html.slim.erb~
|
47
52
|
- lib/app_drone/drones/bundle/bundle.rb
|
48
53
|
- lib/app_drone/drones/bundle/bundle.rb~
|
49
54
|
- lib/app_drone/drones/bundle/gem.rb~
|
@@ -52,7 +57,7 @@ files:
|
|
52
57
|
- lib/app_drone/drones/bundle/gems.rb~
|
53
58
|
- lib/app_drone/drones/chosen/chosen.rb
|
54
59
|
- lib/app_drone/drones/chosen/chosen.rb~
|
55
|
-
- lib/app_drone/drones/chosen/flair.html.slim
|
60
|
+
- lib/app_drone/drones/chosen/flair.html.slim.erb
|
56
61
|
- lib/app_drone/drones/chosen/showcase.html.slim~
|
57
62
|
- lib/app_drone/drones/cleanup/cleanup.erb
|
58
63
|
- lib/app_drone/drones/cleanup/cleanup.rb
|
@@ -72,6 +77,10 @@ files:
|
|
72
77
|
- lib/app_drone/drones/javascript/javascript.rb
|
73
78
|
- lib/app_drone/drones/javascript/javascript.rb~
|
74
79
|
- lib/app_drone/drones/javascript/javascripts.rb~
|
80
|
+
- lib/app_drone/drones/simple_form/install.erb
|
81
|
+
- lib/app_drone/drones/simple_form/install.erb~
|
82
|
+
- lib/app_drone/drones/simple_form/simple_form.rb
|
83
|
+
- lib/app_drone/drones/simple_form/simple_form.rb~
|
75
84
|
- lib/app_drone/drones/slim_view/application_slim.erb
|
76
85
|
- lib/app_drone/drones/slim_view/application_slim.erb~
|
77
86
|
- lib/app_drone/drones/slim_view/slim_view.rb
|
@@ -82,8 +91,6 @@ files:
|
|
82
91
|
- lib/app_drone/drones/stylesheet/stylesheet.rb
|
83
92
|
- lib/app_drone/drones/stylesheet/stylesheet.rb~
|
84
93
|
- lib/app_drone/drones/stylesheet/stylesheets.rb~
|
85
|
-
- lib/app_drone/drones/zzz/bootstrap/bootstrap.rb
|
86
|
-
- lib/app_drone/drones/zzz/bootstrap/bootstrap.rb~
|
87
94
|
- lib/app_drone/drones/zzz/factory_girl/factory_girl.rb
|
88
95
|
- lib/app_drone/drones/zzz/factory_girl/factory_girl.rb~
|
89
96
|
- lib/app_drone/drones/zzz/git/git.rb
|
@@ -96,10 +103,6 @@ files:
|
|
96
103
|
- lib/app_drone/drones/zzz/rspec/install.erb
|
97
104
|
- lib/app_drone/drones/zzz/rspec/rspec.rb
|
98
105
|
- lib/app_drone/drones/zzz/rspec/rspec.rb~
|
99
|
-
- lib/app_drone/drones/zzz/simple_form/install.erb
|
100
|
-
- lib/app_drone/drones/zzz/simple_form/install.erb~
|
101
|
-
- lib/app_drone/drones/zzz/simple_form/simple_form.rb
|
102
|
-
- lib/app_drone/drones/zzz/simple_form/simple_form.rb~
|
103
106
|
- lib/app_drone/integration.rb~
|
104
107
|
- lib/app_drone/object_extensions.rb
|
105
108
|
- lib/app_drone/object_extensions.rb~
|
@@ -110,6 +113,7 @@ files:
|
|
110
113
|
- lib/app_drone/version.rb
|
111
114
|
- lib/app_drone/version.rb~
|
112
115
|
- out.rb
|
116
|
+
- out.rb~
|
113
117
|
- test/app_drone_test.rb~
|
114
118
|
- test/test_app_drone.rb
|
115
119
|
- test/test_app_drone.rb~
|
@@ -133,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
137
|
version: '0'
|
134
138
|
requirements: []
|
135
139
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.8.
|
140
|
+
rubygems_version: 1.8.10
|
137
141
|
signing_key:
|
138
142
|
specification_version: 3
|
139
143
|
summary: Generates Rails templates to help start your app on good footing
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# Incomplete
|
2
|
-
module AppDrone
|
3
|
-
class Bootstrap < Drone
|
4
|
-
desc "Installs Twitter Bootstrap stylesheets and javascripts"
|
5
|
-
param :vendor, :boolean, info: 'download a local copy into the repo'
|
6
|
-
param :responsive, :boolean, info: 'include responsive grid'
|
7
|
-
|
8
|
-
depends_on :bundle, :stylesheet, :javascript
|
9
|
-
|
10
|
-
def align
|
11
|
-
bundle.add 'compass_twitter_bootstrap', group: :assets
|
12
|
-
|
13
|
-
if params[:vendor]
|
14
|
-
# TODO different require paths for stylesheet
|
15
|
-
else
|
16
|
-
stylesheet.import 'compass_twitter_bootstrap'
|
17
|
-
stylesheet.import 'compass_twitter_bootstrap_responsive' if params[:responsive]
|
18
|
-
# TODO js imports - based on options
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def execute
|
23
|
-
if params[:vendor]
|
24
|
-
# TODO pull files in via github
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# Incomplete
|
2
|
-
module AppDrone
|
3
|
-
class Bootstrap < Drone
|
4
|
-
desc "Installs Twitter Bootstrap stylesheets and javascripts"
|
5
|
-
param :vendor, :boolean, info: 'download a local copy into the repo'
|
6
|
-
param :responsive, :boolean, info: 'include responsive grid'
|
7
|
-
|
8
|
-
depends_on :bundle, :stylesheet, :javascript
|
9
|
-
|
10
|
-
def align
|
11
|
-
bundle.add 'compass_twitter_bootstrap', group: :assets
|
12
|
-
|
13
|
-
if params[:vendor]
|
14
|
-
# TODO different require paths for stylesheet
|
15
|
-
else
|
16
|
-
stylesheet.import 'compass_twitter_bootstrap'
|
17
|
-
stylesheet.import 'compass_twitter_bootstrap_responsive' if params[:responsive]
|
18
|
-
# TODO js imports - based on options
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def execute
|
23
|
-
if params[:vendor]
|
24
|
-
# TODO pull files in via github
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
generate "simple_form:install<%= ' --bootstrap' if @use_bootstrap %>"
|
@@ -1 +0,0 @@
|
|
1
|
-
generate "simple_form:install<%= ' --bootstrap' if @use_bootstrap %>"
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# Incomplete
|
2
|
-
module AppDrone
|
3
|
-
class SimpleForm < Drone
|
4
|
-
desc "Installs SimpleForm (with custom Bootstrap integration)"
|
5
|
-
param :country_select, :boolean, info: 'Add country_select for listing countries'
|
6
|
-
|
7
|
-
def align
|
8
|
-
bundle.add 'simple_form'
|
9
|
-
bundle.add 'country_select' if params[:country_select]
|
10
|
-
end
|
11
|
-
|
12
|
-
def execute
|
13
|
-
# TODO bootstrap cross-integration
|
14
|
-
do! :install
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# Incomplete
|
2
|
-
module AppDrone
|
3
|
-
class SimpleForm < Drone
|
4
|
-
desc "Installs SimpleForm (with custom Bootstrap integration)"
|
5
|
-
param :country_select, :boolean, info: 'Add country_select for listing countries'
|
6
|
-
|
7
|
-
def align
|
8
|
-
bundle.add 'simple_form'
|
9
|
-
bundle.add 'country_select' if params[:country_select]
|
10
|
-
end
|
11
|
-
|
12
|
-
def execute
|
13
|
-
# TODO bootstrap cross-integration
|
14
|
-
do! :install
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|