maml 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/.gitignore +2 -0
  2. data/lib/maml/maml.rb +54 -41
  3. data/maml.gemspec +2 -2
  4. data/maml.yml +14 -0
  5. metadata +17 -5
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  pkg
2
2
  doc
3
3
  Manifest
4
+ maml.log
5
+ maml.log
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
- model_args={}
79
- model_options={}
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[0,1] == "-" then
113
- command=arg[1,arg.length]
114
- if command == "go"
117
+ if arg == "--go" then
115
118
  go=true
116
- else
117
- generate_command << command
118
- end
119
- else
120
- file=arg
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> [-generate_command]"
159
- puts "runs trial by default, add -go for rails generation"
160
- puts "e.g. maml.rb blog.yml -scaffold"
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 -scaffold -go"
167
+ puts "e.g. maml.rb --file=blog.yml scaffold --go"
163
168
  puts "OR"
164
- puts "usage: maml.rb"
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 "use ---haml or similar for adding extra commands. -<anything> is passed to the command-line minus the -"
167
- puts "maml supports one file at time"
168
- puts "generated files are in <rails_root>/maml"
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
- generate_command="model" unless generate_command
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
- if @file_provided == true
228
- if go
229
- puts "=== calling system command ==="
230
- result=%x[#{command}]
231
- puts "RESULT ====>\n #{result}"
232
- post_process_migrations model, result
233
-
234
- $logger.info "\n\n#{result}\n\n"
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 "=== no file provided ==="
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.2.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{2009-12-04}
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
- version: 0.2.0
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: 2009-12-04 00:00:00 -05:00
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.5
77
+ rubygems_version: 1.3.7
66
78
  signing_key:
67
79
  specification_version: 3
68
80
  summary: Migration Apathy Markup Language