maml 0.1.1 → 0.1.2

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.
Files changed (7) hide show
  1. data/LICENSE +2 -0
  2. data/bin/maml +5 -0
  3. data/init.rb +6 -1
  4. data/lib/maml.rb +108 -27
  5. data/maml.gemspec +13 -3
  6. metadata +11 -3
  7. data/maml +0 -1
data/LICENSE CHANGED
@@ -1,3 +1,5 @@
1
+ (The MIT License)
2
+
1
3
  Copyright (c) 2009 Nick Van Weerdenburg
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
3
+ require 'maml/maml'
4
+ # exit ::Spec::Runner::CommandLine.run
5
+ exit main # todo: move to module
data/init.rb CHANGED
@@ -1 +1,6 @@
1
- require 'maml'
1
+ # require 'maml'
2
+
3
+
4
+ # placeholder to statisfy rails
5
+ #
6
+ # any require statements here will be loaded by rails all of the time. As we don't need that, we'll do the loads in our bin file.
@@ -6,6 +6,7 @@
6
6
  # todo: switch all puts to logger
7
7
  # todo: remove some excess logging
8
8
  # todo: create a gem
9
+ # todo:
9
10
  require "yaml"
10
11
  require "logger"
11
12
 
@@ -41,61 +42,103 @@ def extract_arg maml_field
41
42
 
42
43
  $logger.info this_method + "=> maml_field=#{maml_field}"
43
44
  type=case maml_field
44
- when /^::(\w*)\b/; "text"
45
- when /^:(\w*)\b/; "string"
46
- when /^\.\.(\w*)\b/; "float"
47
- when /^\.(\w*)\b/; "integer"
48
- when /(\w*_id)\b/; "integer"
49
- when /^=(\w*)\b/; "boolean"
50
- when /^%%(\w*)\b/; "datetime"
51
- when /^%(\w*)\b/; "date"
52
- when /^@@(\w*)\b/; "timestamp"
53
- when /^@(\w*)\b/; "time"
54
- when /^&(\w*)\b/; "binary"
55
- when /(\w*)\b/; "string"
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"
56
57
  else raise "Invalid field type";
57
58
  end
58
59
  field=Regexp.last_match(1)
60
+ options=Regexp.last_match(2)
59
61
  maml_arg= "#{field}:#{type}"
62
+ maml_options= "#{options}"
63
+ return maml_arg, maml_options
60
64
  end
61
65
 
62
66
  # build script/generate model arguments from yaml info
63
67
  def build_model_args maml
64
68
  model_args={}
69
+ model_options={}
65
70
  maml.each do |app|
66
71
  puts "\napplication:#{app[0]}"
67
72
  print "models: "
68
73
  app[1].each do |model|
69
74
  current_model_args=[]
75
+ current_model_options=[]
70
76
  model_name=model[0]
71
77
  print "#{model_name} "
72
78
  model[1].each do |field|
73
- arg=extract_arg field
74
- $logger.debug "Extract #{field} ===> #{arg}"
79
+ arg, options=extract_arg field
80
+ $logger.debug "Extract Arg #{field} ===> #{arg}"
81
+ $logger.debug "Extract Options #{field} ===> #{options}"
75
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]
76
86
  end
77
87
  model_args[model_name]=current_model_args
88
+ model_options[model_name]=current_model_options
78
89
  end
79
90
  puts
80
91
  end
81
- model_args
92
+ return model_args, model_options
82
93
  end
83
94
 
84
95
  # todo: add support for multiple files
85
96
  # todo: add generate command override options to maml.yml for model specific generations.
86
97
  def process_args args
87
- generate_command,file=nil
98
+ file, go=nil
99
+ generate_command=[]
88
100
 
89
101
  args.each do |arg|
90
- if arg[0,1] == "-" then
91
- generate_command=arg[1,arg.length]
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
92
109
  else
93
110
  file=arg
94
111
  end
95
112
  end
96
- return generate_command,file
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
97
120
  end
98
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
+
99
142
  # main function
100
143
  def main
101
144
  puts "\nMAML=Migration Apathy Markup Language"
@@ -115,7 +158,7 @@ def main
115
158
  puts "------------------------------------------------------------------------\n"
116
159
  puts ""
117
160
 
118
- generate_command, file = process_args ARGV
161
+ generate_command, file, go = process_args ARGV
119
162
  $logger.info "\ngenerate_command=#{generate_command}, file=#{file}"
120
163
  @file_provided=true if file
121
164
  $logger.info "@file_provided=#{@file_provided}"
@@ -124,9 +167,17 @@ def main
124
167
  generate_command="model" unless generate_command
125
168
  puts "generate_command=#{generate_command}, file=#{file}"
126
169
 
127
- maml=YAML::load(File.open(file))
128
-
129
- model_args=build_model_args maml
170
+ maml=nil
171
+ begin
172
+ maml=YAML::load(File.open(file))
173
+ $logger.info "YAML loaded file"
174
+ rescue
175
+ $logger.debug "Unable to load #{file}"
176
+ puts "Unable to load file #{file}"
177
+ exit
178
+ end
179
+
180
+ model_args, model_options = build_model_args maml
130
181
 
131
182
  puts
132
183
 
@@ -136,14 +187,44 @@ def main
136
187
  puts "model_name: #{model_name}"
137
188
  model_fields=model[1].join " "
138
189
  # File.open("maml.log", "a") { |file| file.write "---- model: #{model_name} (#{model_fields}) ---\n\n" }
139
- File.open("maml.log", "a") { |file| file.write "---- model: #{model_name} \n\t\t\t#{model_fields.split(" ").join("\n\t\t\t")}\n---\n\n" }
140
- command="ruby script/generate #{generate_command} #{model_name} #{model_fields} >> maml.log"
190
+ # File.open("maml.log", "a") { |file| file.write
191
+ $logger.info "---- model: #{model_name} \n\t\t\t#{model_fields.split(" ").join("\n\t\t\t")}\n---\n\n"
192
+ # command="ruby script/generate #{generate_command} #{model_name} #{model_fields} >> maml.log"
193
+ command="ruby script/generate #{generate_command} #{model_name} #{model_fields}"
141
194
  puts "command: #{command}\n\n"
142
195
  if @file_provided == true
143
- puts "=== calling system command ==="
144
- system command
196
+ if go
197
+ puts "=== calling system command ==="
198
+ result=%x[#{command}]
199
+ puts "RESULT ====>\n #{result}"
200
+ post_process_migrations model, result
201
+
202
+ $logger.info "\n\n#{result}\n\n"
203
+ else
204
+ puts "=== trial run...run with '-go' to generated files ==="
205
+ end
206
+ else
207
+ puts "=== no file provided ==="
145
208
  end
146
209
  end
210
+
211
+ model_options.each do |model|
212
+ model_name=model[0]
213
+ puts "options model_name: #{model_name}"
214
+
215
+ model[1].each do |options|
216
+ field_name=options[0]
217
+ option_list=options[1]
218
+ options_list_message=""
219
+ if option_list !=nil && option_list.size > 0
220
+ options_list_message="| options => #{option_list}"
221
+ end
222
+ puts "options logic: field_name=#{field_name} #{options_list_message}"
223
+ end
224
+ end
225
+ # todo: parse generated migrations and add options
226
+ # todo: add index logic
227
+
147
228
  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)"
148
229
  unless ARGV[0]
149
230
  puts "\n\nUse 'maml.rb maml.yml' (or other file arg) to actuallly run generators. Running with default maml.yml does test run only."
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{maml}
5
- s.version = "0.1.1"
5
+ s.version = "0.1.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Nick Van Weerdenburg"]
@@ -10,13 +10,23 @@ Gem::Specification.new do |s|
10
10
  s.description = %q{Modeling Apathy Markup Language}
11
11
  s.email = %q{nick@gmail.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "lib/maml.rb", "LICENSE", "README.rdoc"]
13
- s.files = ["CHANGELOG", "gem_notes", "init.rb", "lib/maml.rb", "LICENSE", "maml", "maml.gemspec", "maml.yml", "maml_spec.txt", "Manifest", "Rakefile", "README.rdoc"]
13
+ s.files = ["CHANGELOG", "gem_notes", "init.rb", "bin/maml", "lib/maml.rb", "LICENSE", "maml.gemspec", "maml.yml", "maml_spec.txt", "Manifest", "Rakefile", "README.rdoc"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://github.com/vanweerd/maml}
16
+
17
+ s.post_install_message = %q{**************************************************
18
+
19
+ Thank you for installing maml-0.1.1
20
+
21
+ Run "maml" by itself on the command line for documentation.
22
+
23
+ **************************************************
24
+ }
25
+
16
26
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Maml", "--main", "README.rdoc"]
17
27
  s.require_paths = ["lib"]
18
28
  s.rubyforge_project = %q{maml}
19
- s.rubygems_version = %q{1.3.1}
29
+ s.rubygems_version = %q{1.3.5}
20
30
  s.summary = %q{Modeling Apathy Markup Language}
21
31
 
22
32
  if s.respond_to? :specification_version then
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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Van Weerdenburg
@@ -28,9 +28,9 @@ files:
28
28
  - CHANGELOG
29
29
  - gem_notes
30
30
  - init.rb
31
+ - bin/maml
31
32
  - lib/maml.rb
32
33
  - LICENSE
33
- - maml
34
34
  - maml.gemspec
35
35
  - maml.yml
36
36
  - maml_spec.txt
@@ -41,7 +41,15 @@ has_rdoc: true
41
41
  homepage: http://github.com/vanweerd/maml
42
42
  licenses: []
43
43
 
44
- post_install_message:
44
+ post_install_message: |
45
+ **************************************************
46
+
47
+ Thank you for installing maml-0.1.1
48
+
49
+ Run "maml" by itself on the command line for documentation.
50
+
51
+ **************************************************
52
+
45
53
  rdoc_options:
46
54
  - --line-numbers
47
55
  - --inline-source
data/maml DELETED
@@ -1 +0,0 @@
1
- # maml shell script