maml 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/lib/maml/maml.rb +54 -41
- data/maml.gemspec +2 -2
- data/maml.yml +14 -0
- metadata +17 -5
data/lib/maml/maml.rb
CHANGED
@@ -75,8 +75,11 @@ module Maml
|
|
75
75
|
|
76
76
|
# build script/generate model arguments from yaml info
|
77
77
|
def build_model_args maml
|
78
|
-
|
79
|
-
|
78
|
+
|
79
|
+
model_args={} # of field:type format as used by script/generate model etc.
|
80
|
+
model_options={} # e.g 50, NULL, etc.
|
81
|
+
# note: may not have had to separate them, but did in the case of future additional processing
|
82
|
+
|
80
83
|
maml.each do |app|
|
81
84
|
puts "\napplication:#{app[0]}"
|
82
85
|
print "models: "
|
@@ -84,7 +87,7 @@ module Maml
|
|
84
87
|
current_model_args=[]
|
85
88
|
current_model_options=[]
|
86
89
|
model_name=model[0]
|
87
|
-
print "#{model_name} "
|
90
|
+
print "model: #{model_name} "
|
88
91
|
model[1].each do |field|
|
89
92
|
arg, options=extract_arg field
|
90
93
|
$logger.debug "Extract Arg #{field} ===> #{arg}"
|
@@ -94,8 +97,10 @@ module Maml
|
|
94
97
|
puts "field_name=#{field_name}, field_type=#{field_type}"
|
95
98
|
current_model_options << [field_name, options]
|
96
99
|
end
|
100
|
+
|
97
101
|
model_args[model_name]=current_model_args
|
98
102
|
model_options[model_name]=current_model_options
|
103
|
+
|
99
104
|
end
|
100
105
|
puts
|
101
106
|
end
|
@@ -109,19 +114,18 @@ module Maml
|
|
109
114
|
generate_command=[]
|
110
115
|
|
111
116
|
args.each do |arg|
|
112
|
-
if arg
|
113
|
-
command=arg[1,arg.length]
|
114
|
-
if command == "go"
|
117
|
+
if arg == "--go" then
|
115
118
|
go=true
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
else
|
120
|
-
|
119
|
+
elsif arg[0,7] == "--file="
|
120
|
+
file=arg[8,100] # 100 is arbitrary
|
121
|
+
$logger.info "file=#{file} from --file= argument"
|
122
|
+
else
|
123
|
+
generate_command << command
|
121
124
|
end
|
122
125
|
end
|
126
|
+
|
123
127
|
if generate_command.empty?
|
124
|
-
generate_command=nil
|
128
|
+
generate_command=nil # will use default
|
125
129
|
else
|
126
130
|
generate_command = generate_command.join(" ")
|
127
131
|
end
|
@@ -155,17 +159,21 @@ module Maml
|
|
155
159
|
puts "======================================"
|
156
160
|
puts "Visit http://lazymaml.org for more details"
|
157
161
|
puts "Copyright 2009 Zigelo and Nick Van Weerdenburg, Licensed under MIT License\n\n"
|
158
|
-
puts "usage: maml.rb <filename> [
|
159
|
-
puts "
|
160
|
-
puts "
|
162
|
+
puts "usage: maml.rb [--file <filename>] [your script/generate options] [--go]"
|
163
|
+
puts "same as script/generate with addition of --file and --go, looping through file"
|
164
|
+
puts "runs trial by default, add --go for rails generation"
|
165
|
+
puts "e.g. maml.rb --file=blog.yml scaffold"
|
161
166
|
puts "OR"
|
162
|
-
puts "e.g. maml.rb blog.yml
|
167
|
+
puts "e.g. maml.rb --file=blog.yml scaffold --go"
|
163
168
|
puts "OR"
|
164
|
-
puts "
|
169
|
+
puts "maml.rb by itself to see usage."
|
165
170
|
puts "(defaults to 'maml.yml' file and generating the model)\n\n"
|
166
|
-
puts "
|
167
|
-
puts "
|
168
|
-
puts "
|
171
|
+
puts "Additional arguments are passed to script/generate, such as --haml and --rspec"
|
172
|
+
puts " e.g. maml nifty_scaffold --haml --rspec"
|
173
|
+
puts "which runs using maml.yml since --file not provided"
|
174
|
+
puts " to actually generate code:"
|
175
|
+
puts " e.g. maml nifty_scaffold --haml --rspec --go"
|
176
|
+
# puts "generated files are in <rails_root>/maml"
|
169
177
|
puts "Run 'maml.rb create_sample' to generate a sample maml.yml file for a starting point. Note: this will overwrite any existing maml.yml."
|
170
178
|
puts "\nSpecify field type by symbol prefix as follows:"
|
171
179
|
puts "no prefix=string ; no prefix and _id suffix = integer ; override _id by adding prefix"
|
@@ -175,11 +183,14 @@ module Maml
|
|
175
183
|
|
176
184
|
generate_command, file, go = process_args ARGV
|
177
185
|
$logger.info "\ngenerate_command=#{generate_command}, file=#{file}"
|
178
|
-
@file_provided=true if file
|
179
|
-
$logger.info "@file_provided=#{@file_provided}"
|
180
186
|
|
181
187
|
file="maml.yml" unless file
|
182
|
-
|
188
|
+
|
189
|
+
unless generate_command
|
190
|
+
generate_command="model"
|
191
|
+
puts "WARNING: using default 'model' for script/generate"
|
192
|
+
$logger.info "WARNING: using default 'model' for script/generate"
|
193
|
+
end
|
183
194
|
puts "generate_command=#{generate_command}, file=#{file}"
|
184
195
|
|
185
196
|
# allow copy_sample via file (e.g. maml.rb copy_sample) or via command (e.g. maml.rb -copy_sample)
|
@@ -205,11 +216,19 @@ module Maml
|
|
205
216
|
$logger.info "YAML loaded file"
|
206
217
|
rescue
|
207
218
|
$logger.debug "Unable to load #{file}"
|
208
|
-
puts "Unable to load file #{file}"
|
219
|
+
puts "Unable to load file #{file}. Check if it exists."
|
209
220
|
exit
|
210
221
|
end
|
211
222
|
|
212
223
|
model_args, model_options = build_model_args maml
|
224
|
+
|
225
|
+
# todo: extract default args
|
226
|
+
default_fields=nil
|
227
|
+
default_model = model_args["default"]
|
228
|
+
default_fields= default_model[1].join(" ") if default_model
|
229
|
+
puts ":default fields: #{default_fields}"
|
230
|
+
$logger.info ":default fields: #{default_fields}"
|
231
|
+
model_args.delete "default" # so not to generate
|
213
232
|
|
214
233
|
puts
|
215
234
|
|
@@ -224,20 +243,17 @@ module Maml
|
|
224
243
|
# command="ruby script/generate #{generate_command} #{model_name} #{model_fields} >> maml.log"
|
225
244
|
command="ruby script/generate #{generate_command} #{model_name} #{model_fields}"
|
226
245
|
puts "command: #{command}\n\n"
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
else
|
236
|
-
puts "=== trial run...run with '-go' to generated files ==="
|
237
|
-
end
|
246
|
+
|
247
|
+
if go
|
248
|
+
puts "=== calling system command ==="
|
249
|
+
result=%x[#{command}]
|
250
|
+
puts "RESULT ====>\n #{result}"
|
251
|
+
post_process_migrations model, result
|
252
|
+
|
253
|
+
$logger.info "\n\n#{result}\n\n"
|
238
254
|
else
|
239
|
-
puts "===
|
240
|
-
end
|
255
|
+
puts "=== trial run...run with '--go' to generated files ==="
|
256
|
+
end
|
241
257
|
end
|
242
258
|
|
243
259
|
model_options.each do |model|
|
@@ -257,10 +273,7 @@ module Maml
|
|
257
273
|
# todo: parse generated migrations and add options
|
258
274
|
# todo: add index logic
|
259
275
|
|
260
|
-
puts "\n\nDONE! Look at maml.log for script results, and in app/models, db/migrations, test/fixtures and test/unit for generated code (if you ran maml.rb with a command line arg)"
|
261
|
-
unless ARGV[0]
|
262
|
-
puts "\n\nUse 'maml.rb maml.yml' (or other file arg) to actuallly run generators. Running with default maml.yml does trial run only."
|
263
|
-
end
|
276
|
+
puts "\n\nDONE! This was a trial run unless '--go' provided. Look at maml.log for script results, and in app/models, db/migrations, test/fixtures and test/unit for generated code (if you ran maml.rb with a command line arg)"
|
264
277
|
ensure
|
265
278
|
puts "Thanks for being a Lazy MAML!"
|
266
279
|
return 0
|
data/maml.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{maml}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nick Van Weerdenburg"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-09-01}
|
13
13
|
s.default_executable = %q{maml}
|
14
14
|
s.description = %q{MAML, also know as LazyMAML is a terser means for initially modeling your rails app. The MAML yml file is processed, and the rails migration generator called, with arguments being passed through for scaffold, model, controller, haml, etc. as desired.}
|
15
15
|
s.email = %q{vanweerd@gmail.com}
|
data/maml.yml
CHANGED
@@ -5,9 +5,23 @@
|
|
5
5
|
# default type is string, except where field has _id suffice- then it's integer (override by adding prefix as shown below)
|
6
6
|
# .integer, ..float, %date, %%datetime, @time, @@timestamp, :string, ::text, =boolean, &binary
|
7
7
|
#
|
8
|
+
# -- for additional options, such as --haml
|
9
|
+
# ++ for other ad-hoc options (++ stripped out)
|
10
|
+
#
|
11
|
+
# --file and --go options are processed by maml.rb and not passed to script/generate
|
12
|
+
#
|
13
|
+
# if no --file provided, maml looks for default maml.yml file
|
14
|
+
#
|
15
|
+
# default: class is special and applied to all other classes
|
16
|
+
#
|
17
|
+
#
|
8
18
|
# level 1: module, level 2: class, level 3: field
|
9
19
|
# maml.yml is a sample file for a starting point. maml sample copies it to current directory.
|
10
20
|
innerplate:
|
21
|
+
default: # applies to all items
|
22
|
+
- nifty_scaffold
|
23
|
+
- --haml
|
24
|
+
- --rspec
|
11
25
|
Plate:
|
12
26
|
- day_id # any _id defaults to integer
|
13
27
|
- meal_id 50 true
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Nick Van Weerdenburg
|
@@ -9,7 +15,7 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-09-01 00:00:00 -04:00
|
13
19
|
default_executable: maml
|
14
20
|
dependencies: []
|
15
21
|
|
@@ -48,21 +54,27 @@ rdoc_options:
|
|
48
54
|
require_paths:
|
49
55
|
- lib
|
50
56
|
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ">="
|
53
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
54
64
|
version: "0"
|
55
|
-
version:
|
56
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
57
67
|
requirements:
|
58
68
|
- - ">="
|
59
69
|
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
60
73
|
version: "0"
|
61
|
-
version:
|
62
74
|
requirements: []
|
63
75
|
|
64
76
|
rubyforge_project:
|
65
|
-
rubygems_version: 1.3.
|
77
|
+
rubygems_version: 1.3.7
|
66
78
|
signing_key:
|
67
79
|
specification_version: 3
|
68
80
|
summary: Migration Apathy Markup Language
|