maml 0.1.3 → 0.1.4
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/VERSION +1 -1
- data/lib/maml.rb +1 -244
- data/lib/maml/maml.rb +244 -0
- data/maml.gemspec +2 -1
- metadata +2 -1
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.4
|
data/lib/maml.rb
CHANGED
|
@@ -1,244 +1 @@
|
|
|
1
|
-
|
|
2
|
-
# maml.rb - Model and Migration Apathy Markup Language
|
|
3
|
-
# there is only 1 m in maml because I'm lazy.
|
|
4
|
-
# Copyright 2009 Zigleo, Inc.
|
|
5
|
-
# Author: Nick Van Weerdenburg
|
|
6
|
-
# todo: switch all puts to logger
|
|
7
|
-
# todo: remove some excess logging
|
|
8
|
-
# todo: create a gem
|
|
9
|
-
# todo:
|
|
10
|
-
require "yaml"
|
|
11
|
-
require "logger"
|
|
12
|
-
|
|
13
|
-
# I love logging
|
|
14
|
-
$logger=Logger.new('maml.log')
|
|
15
|
-
$logger.level=Logger::INFO
|
|
16
|
-
$logger.info "PLATFORM=#{PLATFORM}"
|
|
17
|
-
|
|
18
|
-
# look user and project configuration file
|
|
19
|
-
user_config_file=ENV['HOME'] + "/.mamlrc"
|
|
20
|
-
project_config_file=".mamlrc"
|
|
21
|
-
$logger.info("user .mamlrc #{File.exist? user_config_file ? 'found' : 'not found'}")
|
|
22
|
-
$logger.info("project .mamlrc #{File.exist? project_config_file ? 'found' : 'not found'}")
|
|
23
|
-
|
|
24
|
-
module CurrentMethodName
|
|
25
|
-
def this_method
|
|
26
|
-
caller[0]=~/`(.*?)'/
|
|
27
|
-
$1
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
include CurrentMethodName
|
|
32
|
-
|
|
33
|
-
# simple test fixture
|
|
34
|
-
def test
|
|
35
|
-
string_arg
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def extract_arg maml_field
|
|
39
|
-
maml_arg=nil
|
|
40
|
-
field=nil
|
|
41
|
-
type=nil
|
|
42
|
-
|
|
43
|
-
$logger.info this_method + "=> maml_field=#{maml_field}"
|
|
44
|
-
type=case maml_field
|
|
45
|
-
when /^::(\w*)\b[,]?(.*)/; "text"
|
|
46
|
-
when /^:(\w*)\b[,]?(.*)/; "string"
|
|
47
|
-
when /^\.\.(\w*)\b[,]?(.*)/; "float"
|
|
48
|
-
when /^\.(\w*)\b[,]?(.*)/; "integer"
|
|
49
|
-
when /(\w*_id)\b[,]?(.*)/; "integer"
|
|
50
|
-
when /^=(\w*)\b[,]?(.*)/; "boolean"
|
|
51
|
-
when /^%%(\w*)\b[,]?(.*)/; "datetime"
|
|
52
|
-
when /^%(\w*)\b[,]?(.*)/; "date"
|
|
53
|
-
when /^@@(\w*)\b[,]?(.*)/; "timestamp"
|
|
54
|
-
when /^@(\w*)\b[,]?(.*)/; "time"
|
|
55
|
-
when /^&(\w*)\b[,]?(.*)/; "binary"
|
|
56
|
-
when /(\w*)\b[,]?(.*)/; "string"
|
|
57
|
-
else raise "Invalid field type";
|
|
58
|
-
end
|
|
59
|
-
field=Regexp.last_match(1)
|
|
60
|
-
options=Regexp.last_match(2)
|
|
61
|
-
maml_arg= "#{field}:#{type}"
|
|
62
|
-
maml_options= "#{options}"
|
|
63
|
-
return maml_arg, maml_options
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# build script/generate model arguments from yaml info
|
|
67
|
-
def build_model_args maml
|
|
68
|
-
model_args={}
|
|
69
|
-
model_options={}
|
|
70
|
-
maml.each do |app|
|
|
71
|
-
puts "\napplication:#{app[0]}"
|
|
72
|
-
print "models: "
|
|
73
|
-
app[1].each do |model|
|
|
74
|
-
current_model_args=[]
|
|
75
|
-
current_model_options=[]
|
|
76
|
-
model_name=model[0]
|
|
77
|
-
print "#{model_name} "
|
|
78
|
-
model[1].each do |field|
|
|
79
|
-
arg, options=extract_arg field
|
|
80
|
-
$logger.debug "Extract Arg #{field} ===> #{arg}"
|
|
81
|
-
$logger.debug "Extract Options #{field} ===> #{options}"
|
|
82
|
-
current_model_args << arg
|
|
83
|
-
field_name, field_type=arg.split(":")
|
|
84
|
-
puts "field_name=#{field_name}, field_type=#{field_type}"
|
|
85
|
-
current_model_options << [field_name, options]
|
|
86
|
-
end
|
|
87
|
-
model_args[model_name]=current_model_args
|
|
88
|
-
model_options[model_name]=current_model_options
|
|
89
|
-
end
|
|
90
|
-
puts
|
|
91
|
-
end
|
|
92
|
-
return model_args, model_options
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# todo: add support for multiple files
|
|
96
|
-
# todo: add generate command override options to maml.yml for model specific generations.
|
|
97
|
-
def process_args args
|
|
98
|
-
file, go=nil
|
|
99
|
-
generate_command=[]
|
|
100
|
-
|
|
101
|
-
args.each do |arg|
|
|
102
|
-
if arg[0,1] == "-" then
|
|
103
|
-
command=arg[1,arg.length]
|
|
104
|
-
if command == "go"
|
|
105
|
-
go=true
|
|
106
|
-
else
|
|
107
|
-
generate_command << command
|
|
108
|
-
end
|
|
109
|
-
else
|
|
110
|
-
file=arg
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
if generate_command.empty?
|
|
114
|
-
generate_command=nil
|
|
115
|
-
else
|
|
116
|
-
generate_command = generate_command.join(" ")
|
|
117
|
-
end
|
|
118
|
-
puts "**** generate_command=#{generate_command}"
|
|
119
|
-
return generate_command,file, go
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
def post_process_migrations model, result
|
|
123
|
-
model_name=model[0]
|
|
124
|
-
puts "model_name: #{model_name}"
|
|
125
|
-
model_fields=model[1] # join(" ") to create args for generator ..e.g. fieldname1:string fieldname2:integer
|
|
126
|
-
|
|
127
|
-
# create app/models/user_group.rb
|
|
128
|
-
model_file_regex="create app/models/(.*).rb"
|
|
129
|
-
# model_file_name=user_group
|
|
130
|
-
|
|
131
|
-
# 20090731211953_create_user_groups.rb
|
|
132
|
-
# find migration with same but plural
|
|
133
|
-
# migration_file=
|
|
134
|
-
|
|
135
|
-
# open file
|
|
136
|
-
# find text field
|
|
137
|
-
# append options
|
|
138
|
-
#
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
# main function
|
|
143
|
-
def main
|
|
144
|
-
puts "\nMAML=Migration Apathy Markup Language"
|
|
145
|
-
puts "======================================"
|
|
146
|
-
puts "Visit http://lazymaml.org for more details"
|
|
147
|
-
puts "Copyright 2009 Zigelo and Nick Van Weerdenburg, Licensed under MIT License\n\n"
|
|
148
|
-
puts "usage: maml.rb <filename> [-generate_command]"
|
|
149
|
-
puts "runs trial by default, add -go for rails generation"
|
|
150
|
-
puts "e.g. maml.rb blog.yml -scaffold"
|
|
151
|
-
puts "OR"
|
|
152
|
-
puts "e.g. maml.rb blog.yml -scaffold -go"
|
|
153
|
-
puts "OR"
|
|
154
|
-
puts "usage: maml.rb"
|
|
155
|
-
puts "(defaults to 'maml.yml' file and generating the model)\n\n"
|
|
156
|
-
puts "use ---haml or similar for adding extra commands. -<anything> is passed to the command-line minus the -"
|
|
157
|
-
puts "maml supports one file at time"
|
|
158
|
-
puts "generated files are in <rails_root>/maml"
|
|
159
|
-
puts "\nSpecify field type by symbol prefix as follows:"
|
|
160
|
-
puts "no prefix=string ; no prefix and _id suffix = integer ; override _id by adding prefix"
|
|
161
|
-
puts "examples: string, integer_id, .integer, ..float, %date, %%datetime, @time, @@timestamp, :string, ::text, =boolean, &binary"
|
|
162
|
-
puts "------------------------------------------------------------------------\n"
|
|
163
|
-
puts ""
|
|
164
|
-
|
|
165
|
-
generate_command, file, go = process_args ARGV
|
|
166
|
-
$logger.info "\ngenerate_command=#{generate_command}, file=#{file}"
|
|
167
|
-
@file_provided=true if file
|
|
168
|
-
$logger.info "@file_provided=#{@file_provided}"
|
|
169
|
-
|
|
170
|
-
file="maml.yml" unless file
|
|
171
|
-
generate_command="model" unless generate_command
|
|
172
|
-
puts "generate_command=#{generate_command}, file=#{file}"
|
|
173
|
-
|
|
174
|
-
maml=nil
|
|
175
|
-
begin
|
|
176
|
-
maml=YAML::load(File.open(file))
|
|
177
|
-
$logger.info "YAML loaded file"
|
|
178
|
-
rescue
|
|
179
|
-
$logger.debug "Unable to load #{file}"
|
|
180
|
-
puts "Unable to load file #{file}"
|
|
181
|
-
exit
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
model_args, model_options = build_model_args maml
|
|
185
|
-
|
|
186
|
-
puts
|
|
187
|
-
|
|
188
|
-
# now execute each model
|
|
189
|
-
model_args.each do |model|
|
|
190
|
-
model_name=model[0]
|
|
191
|
-
puts "model_name: #{model_name}"
|
|
192
|
-
model_fields=model[1].join " "
|
|
193
|
-
# File.open("maml.log", "a") { |file| file.write "---- model: #{model_name} (#{model_fields}) ---\n\n" }
|
|
194
|
-
# File.open("maml.log", "a") { |file| file.write
|
|
195
|
-
$logger.info "---- model: #{model_name} \n\t\t\t#{model_fields.split(" ").join("\n\t\t\t")}\n---\n\n"
|
|
196
|
-
# command="ruby script/generate #{generate_command} #{model_name} #{model_fields} >> maml.log"
|
|
197
|
-
command="ruby script/generate #{generate_command} #{model_name} #{model_fields}"
|
|
198
|
-
puts "command: #{command}\n\n"
|
|
199
|
-
if @file_provided == true
|
|
200
|
-
if go
|
|
201
|
-
puts "=== calling system command ==="
|
|
202
|
-
result=%x[#{command}]
|
|
203
|
-
puts "RESULT ====>\n #{result}"
|
|
204
|
-
post_process_migrations model, result
|
|
205
|
-
|
|
206
|
-
$logger.info "\n\n#{result}\n\n"
|
|
207
|
-
else
|
|
208
|
-
puts "=== trial run...run with '-go' to generated files ==="
|
|
209
|
-
end
|
|
210
|
-
else
|
|
211
|
-
puts "=== no file provided ==="
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
model_options.each do |model|
|
|
216
|
-
model_name=model[0]
|
|
217
|
-
puts "options model_name: #{model_name}"
|
|
218
|
-
|
|
219
|
-
model[1].each do |options|
|
|
220
|
-
field_name=options[0]
|
|
221
|
-
option_list=options[1]
|
|
222
|
-
options_list_message=""
|
|
223
|
-
if option_list !=nil && option_list.size > 0
|
|
224
|
-
options_list_message="| options => #{option_list}"
|
|
225
|
-
end
|
|
226
|
-
puts "options logic: field_name=#{field_name} #{options_list_message}"
|
|
227
|
-
end
|
|
228
|
-
end
|
|
229
|
-
# todo: parse generated migrations and add options
|
|
230
|
-
# todo: add index logic
|
|
231
|
-
|
|
232
|
-
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)"
|
|
233
|
-
unless ARGV[0]
|
|
234
|
-
puts "\n\nUse 'maml.rb maml.yml' (or other file arg) to actuallly run generators. Running with default maml.yml does test run only."
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
# only run main if run standalone (e.g. not via ruby require)
|
|
240
|
-
if __FILE__ == $0
|
|
241
|
-
# puts "***** #{File.basename($0)} ran from file *****"
|
|
242
|
-
|
|
243
|
-
main
|
|
244
|
-
end
|
|
1
|
+
require "maml/maml.rb"
|
data/lib/maml/maml.rb
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# maml.rb - Model and Migration Apathy Markup Language
|
|
3
|
+
# there is only 1 m in maml because I'm lazy.
|
|
4
|
+
# Copyright 2009 Zigleo, Inc.
|
|
5
|
+
# Author: Nick Van Weerdenburg
|
|
6
|
+
# todo: switch all puts to logger
|
|
7
|
+
# todo: remove some excess logging
|
|
8
|
+
# todo: create a gem
|
|
9
|
+
# todo:
|
|
10
|
+
require "yaml"
|
|
11
|
+
require "logger"
|
|
12
|
+
|
|
13
|
+
# I love logging
|
|
14
|
+
$logger=Logger.new('maml.log')
|
|
15
|
+
$logger.level=Logger::INFO
|
|
16
|
+
$logger.info "PLATFORM=#{PLATFORM}"
|
|
17
|
+
|
|
18
|
+
# look user and project configuration file
|
|
19
|
+
user_config_file=ENV['HOME'] + "/.mamlrc"
|
|
20
|
+
project_config_file=".mamlrc"
|
|
21
|
+
$logger.info("user .mamlrc #{File.exist? user_config_file ? 'found' : 'not found'}")
|
|
22
|
+
$logger.info("project .mamlrc #{File.exist? project_config_file ? 'found' : 'not found'}")
|
|
23
|
+
|
|
24
|
+
module CurrentMethodName
|
|
25
|
+
def this_method
|
|
26
|
+
caller[0]=~/`(.*?)'/
|
|
27
|
+
$1
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
include CurrentMethodName
|
|
32
|
+
|
|
33
|
+
# simple test fixture
|
|
34
|
+
def test
|
|
35
|
+
string_arg
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def extract_arg maml_field
|
|
39
|
+
maml_arg=nil
|
|
40
|
+
field=nil
|
|
41
|
+
type=nil
|
|
42
|
+
|
|
43
|
+
$logger.info this_method + "=> maml_field=#{maml_field}"
|
|
44
|
+
type=case maml_field
|
|
45
|
+
when /^::(\w*)\b[,]?(.*)/; "text"
|
|
46
|
+
when /^:(\w*)\b[,]?(.*)/; "string"
|
|
47
|
+
when /^\.\.(\w*)\b[,]?(.*)/; "float"
|
|
48
|
+
when /^\.(\w*)\b[,]?(.*)/; "integer"
|
|
49
|
+
when /(\w*_id)\b[,]?(.*)/; "integer"
|
|
50
|
+
when /^=(\w*)\b[,]?(.*)/; "boolean"
|
|
51
|
+
when /^%%(\w*)\b[,]?(.*)/; "datetime"
|
|
52
|
+
when /^%(\w*)\b[,]?(.*)/; "date"
|
|
53
|
+
when /^@@(\w*)\b[,]?(.*)/; "timestamp"
|
|
54
|
+
when /^@(\w*)\b[,]?(.*)/; "time"
|
|
55
|
+
when /^&(\w*)\b[,]?(.*)/; "binary"
|
|
56
|
+
when /(\w*)\b[,]?(.*)/; "string"
|
|
57
|
+
else raise "Invalid field type";
|
|
58
|
+
end
|
|
59
|
+
field=Regexp.last_match(1)
|
|
60
|
+
options=Regexp.last_match(2)
|
|
61
|
+
maml_arg= "#{field}:#{type}"
|
|
62
|
+
maml_options= "#{options}"
|
|
63
|
+
return maml_arg, maml_options
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# build script/generate model arguments from yaml info
|
|
67
|
+
def build_model_args maml
|
|
68
|
+
model_args={}
|
|
69
|
+
model_options={}
|
|
70
|
+
maml.each do |app|
|
|
71
|
+
puts "\napplication:#{app[0]}"
|
|
72
|
+
print "models: "
|
|
73
|
+
app[1].each do |model|
|
|
74
|
+
current_model_args=[]
|
|
75
|
+
current_model_options=[]
|
|
76
|
+
model_name=model[0]
|
|
77
|
+
print "#{model_name} "
|
|
78
|
+
model[1].each do |field|
|
|
79
|
+
arg, options=extract_arg field
|
|
80
|
+
$logger.debug "Extract Arg #{field} ===> #{arg}"
|
|
81
|
+
$logger.debug "Extract Options #{field} ===> #{options}"
|
|
82
|
+
current_model_args << arg
|
|
83
|
+
field_name, field_type=arg.split(":")
|
|
84
|
+
puts "field_name=#{field_name}, field_type=#{field_type}"
|
|
85
|
+
current_model_options << [field_name, options]
|
|
86
|
+
end
|
|
87
|
+
model_args[model_name]=current_model_args
|
|
88
|
+
model_options[model_name]=current_model_options
|
|
89
|
+
end
|
|
90
|
+
puts
|
|
91
|
+
end
|
|
92
|
+
return model_args, model_options
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# todo: add support for multiple files
|
|
96
|
+
# todo: add generate command override options to maml.yml for model specific generations.
|
|
97
|
+
def process_args args
|
|
98
|
+
file, go=nil
|
|
99
|
+
generate_command=[]
|
|
100
|
+
|
|
101
|
+
args.each do |arg|
|
|
102
|
+
if arg[0,1] == "-" then
|
|
103
|
+
command=arg[1,arg.length]
|
|
104
|
+
if command == "go"
|
|
105
|
+
go=true
|
|
106
|
+
else
|
|
107
|
+
generate_command << command
|
|
108
|
+
end
|
|
109
|
+
else
|
|
110
|
+
file=arg
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
if generate_command.empty?
|
|
114
|
+
generate_command=nil
|
|
115
|
+
else
|
|
116
|
+
generate_command = generate_command.join(" ")
|
|
117
|
+
end
|
|
118
|
+
puts "**** generate_command=#{generate_command}"
|
|
119
|
+
return generate_command,file, go
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def post_process_migrations model, result
|
|
123
|
+
model_name=model[0]
|
|
124
|
+
puts "model_name: #{model_name}"
|
|
125
|
+
model_fields=model[1] # join(" ") to create args for generator ..e.g. fieldname1:string fieldname2:integer
|
|
126
|
+
|
|
127
|
+
# create app/models/user_group.rb
|
|
128
|
+
model_file_regex="create app/models/(.*).rb"
|
|
129
|
+
# model_file_name=user_group
|
|
130
|
+
|
|
131
|
+
# 20090731211953_create_user_groups.rb
|
|
132
|
+
# find migration with same but plural
|
|
133
|
+
# migration_file=
|
|
134
|
+
|
|
135
|
+
# open file
|
|
136
|
+
# find text field
|
|
137
|
+
# append options
|
|
138
|
+
#
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
# main function
|
|
143
|
+
def main
|
|
144
|
+
puts "\nMAML=Migration Apathy Markup Language"
|
|
145
|
+
puts "======================================"
|
|
146
|
+
puts "Visit http://lazymaml.org for more details"
|
|
147
|
+
puts "Copyright 2009 Zigelo and Nick Van Weerdenburg, Licensed under MIT License\n\n"
|
|
148
|
+
puts "usage: maml.rb <filename> [-generate_command]"
|
|
149
|
+
puts "runs trial by default, add -go for rails generation"
|
|
150
|
+
puts "e.g. maml.rb blog.yml -scaffold"
|
|
151
|
+
puts "OR"
|
|
152
|
+
puts "e.g. maml.rb blog.yml -scaffold -go"
|
|
153
|
+
puts "OR"
|
|
154
|
+
puts "usage: maml.rb"
|
|
155
|
+
puts "(defaults to 'maml.yml' file and generating the model)\n\n"
|
|
156
|
+
puts "use ---haml or similar for adding extra commands. -<anything> is passed to the command-line minus the -"
|
|
157
|
+
puts "maml supports one file at time"
|
|
158
|
+
puts "generated files are in <rails_root>/maml"
|
|
159
|
+
puts "\nSpecify field type by symbol prefix as follows:"
|
|
160
|
+
puts "no prefix=string ; no prefix and _id suffix = integer ; override _id by adding prefix"
|
|
161
|
+
puts "examples: string, integer_id, .integer, ..float, %date, %%datetime, @time, @@timestamp, :string, ::text, =boolean, &binary"
|
|
162
|
+
puts "------------------------------------------------------------------------\n"
|
|
163
|
+
puts ""
|
|
164
|
+
|
|
165
|
+
generate_command, file, go = process_args ARGV
|
|
166
|
+
$logger.info "\ngenerate_command=#{generate_command}, file=#{file}"
|
|
167
|
+
@file_provided=true if file
|
|
168
|
+
$logger.info "@file_provided=#{@file_provided}"
|
|
169
|
+
|
|
170
|
+
file="maml.yml" unless file
|
|
171
|
+
generate_command="model" unless generate_command
|
|
172
|
+
puts "generate_command=#{generate_command}, file=#{file}"
|
|
173
|
+
|
|
174
|
+
maml=nil
|
|
175
|
+
begin
|
|
176
|
+
maml=YAML::load(File.open(file))
|
|
177
|
+
$logger.info "YAML loaded file"
|
|
178
|
+
rescue
|
|
179
|
+
$logger.debug "Unable to load #{file}"
|
|
180
|
+
puts "Unable to load file #{file}"
|
|
181
|
+
exit
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
model_args, model_options = build_model_args maml
|
|
185
|
+
|
|
186
|
+
puts
|
|
187
|
+
|
|
188
|
+
# now execute each model
|
|
189
|
+
model_args.each do |model|
|
|
190
|
+
model_name=model[0]
|
|
191
|
+
puts "model_name: #{model_name}"
|
|
192
|
+
model_fields=model[1].join " "
|
|
193
|
+
# File.open("maml.log", "a") { |file| file.write "---- model: #{model_name} (#{model_fields}) ---\n\n" }
|
|
194
|
+
# File.open("maml.log", "a") { |file| file.write
|
|
195
|
+
$logger.info "---- model: #{model_name} \n\t\t\t#{model_fields.split(" ").join("\n\t\t\t")}\n---\n\n"
|
|
196
|
+
# command="ruby script/generate #{generate_command} #{model_name} #{model_fields} >> maml.log"
|
|
197
|
+
command="ruby script/generate #{generate_command} #{model_name} #{model_fields}"
|
|
198
|
+
puts "command: #{command}\n\n"
|
|
199
|
+
if @file_provided == true
|
|
200
|
+
if go
|
|
201
|
+
puts "=== calling system command ==="
|
|
202
|
+
result=%x[#{command}]
|
|
203
|
+
puts "RESULT ====>\n #{result}"
|
|
204
|
+
post_process_migrations model, result
|
|
205
|
+
|
|
206
|
+
$logger.info "\n\n#{result}\n\n"
|
|
207
|
+
else
|
|
208
|
+
puts "=== trial run...run with '-go' to generated files ==="
|
|
209
|
+
end
|
|
210
|
+
else
|
|
211
|
+
puts "=== no file provided ==="
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
model_options.each do |model|
|
|
216
|
+
model_name=model[0]
|
|
217
|
+
puts "options model_name: #{model_name}"
|
|
218
|
+
|
|
219
|
+
model[1].each do |options|
|
|
220
|
+
field_name=options[0]
|
|
221
|
+
option_list=options[1]
|
|
222
|
+
options_list_message=""
|
|
223
|
+
if option_list !=nil && option_list.size > 0
|
|
224
|
+
options_list_message="| options => #{option_list}"
|
|
225
|
+
end
|
|
226
|
+
puts "options logic: field_name=#{field_name} #{options_list_message}"
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
# todo: parse generated migrations and add options
|
|
230
|
+
# todo: add index logic
|
|
231
|
+
|
|
232
|
+
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)"
|
|
233
|
+
unless ARGV[0]
|
|
234
|
+
puts "\n\nUse 'maml.rb maml.yml' (or other file arg) to actuallly run generators. Running with default maml.yml does test run only."
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
# only run main if run standalone (e.g. not via ruby require)
|
|
240
|
+
if __FILE__ == $0
|
|
241
|
+
# puts "***** #{File.basename($0)} ran from file *****"
|
|
242
|
+
|
|
243
|
+
main
|
|
244
|
+
end
|
data/maml.gemspec
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{maml}
|
|
8
|
-
s.version = "0.1.
|
|
8
|
+
s.version = "0.1.4"
|
|
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"]
|
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
|
29
29
|
"gem_notes",
|
|
30
30
|
"init.rb",
|
|
31
31
|
"lib/maml.rb",
|
|
32
|
+
"lib/maml/maml.rb",
|
|
32
33
|
"maml-0.1.1.gem",
|
|
33
34
|
"maml-0.1.2.gem",
|
|
34
35
|
"maml.gemspec",
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: maml
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nick Van Weerdenburg
|
|
@@ -33,6 +33,7 @@ files:
|
|
|
33
33
|
- gem_notes
|
|
34
34
|
- init.rb
|
|
35
35
|
- lib/maml.rb
|
|
36
|
+
- lib/maml/maml.rb
|
|
36
37
|
- maml-0.1.1.gem
|
|
37
38
|
- maml-0.1.2.gem
|
|
38
39
|
- maml.gemspec
|