app_drone 0.2.1 → 0.3.1
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.
- 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
|