fwtoolkit 0.4.6 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,9 +2,21 @@ require 'rake/tasklib'
2
2
  require 'rubygems'
3
3
  require 'xcodebuild'
4
4
  require 'cucumber/rake/task'
5
+ require 'core_data'
6
+ require 'erb'
5
7
 
6
8
  TEMPLATES_DIR = File.expand_path('../../../templates/', File.dirname(__FILE__))
7
9
 
10
+ class String
11
+ def ruby_format
12
+ self.gsub(/(.)([A-Z])/,'\1_\2').downcase
13
+ end
14
+
15
+ def ruby_format!
16
+ replace ruby_format
17
+ end
18
+ end
19
+
8
20
  module XcodeBuild
9
21
  def self.run(args = "", output_buffer = STDOUT)
10
22
  command = "xcodebuild #{args} DSTROOT=/tmp/artifacts 2>&1"
@@ -113,6 +125,43 @@ module FWToolkit
113
125
  cp(File.join(test_dir, 'AppDelegate+Frank.h'), './')
114
126
  cp(File.join(test_dir, 'AppDelegate+Frank.m'), './')
115
127
  end
128
+
129
+ def template(template_file, output_file)
130
+ puts "c #{output_file}"
131
+ output = ERB.new(File.read(File.join(TEMPLATES_DIR, template_file))).result(binding)
132
+ File.open(output_file, "w+") do |f|
133
+ f.write(output)
134
+ end
135
+ end
136
+
137
+ def class_name(entity)
138
+ @no_prefix ? entity.name : entity.name[3..-1]
139
+ end
140
+
141
+ desc 'Create Frank model files from CoreData'
142
+ task :model, [:model_file, :prefix] do |t, args|
143
+ args.with_defaults(:model_file => nil)
144
+ args.with_defaults(:prefix => 'true')
145
+ prefix = args[:prefix].eql? 'true'
146
+ @no_prefix = !prefix
147
+
148
+ # validation step - core_data_model should be of type .xcdatamodel
149
+ output_dir = File.join('Frank', 'features', 'support', 'models')
150
+ makedirs output_dir unless Dir.exists? output_dir
151
+
152
+ model = CoreData::DataModel.new(File.join(args[:model_file], 'contents'))
153
+ @models = model.entities
154
+
155
+ @models.each do |entity|
156
+ @model = entity
157
+ @class_name = class_name(@model)
158
+ factory_template = File.join 'models', 'model.rb.erb'
159
+ template(factory_template, File.join(output_dir, "#{class_name(@model).ruby_format}.rb"))
160
+ end
161
+
162
+ factory_template = File.join 'models', 'factories.rb.erb'
163
+ template(factory_template, File.join(output_dir, 'factories.rb'))
164
+ end
116
165
 
117
166
  desc 'Build the frankified App'
118
167
  task :build do
@@ -147,22 +196,30 @@ module FWToolkit
147
196
  end
148
197
 
149
198
  namespace :services do
199
+
200
+ task :environment do
201
+ require 'fwtoolkit'
202
+ Dir[File.join( Dir.pwd, 'Frank/features/support/models/*.rb')].each {|file| require file }
203
+ Dir[File.join( Dir.pwd, 'Frank/features/support/views/*.rb')].each {|file| require file }
204
+ end
205
+
206
+ desc 'Seed objects into the service'
207
+ task :seed => [:environment] do
208
+
209
+ end
210
+
150
211
  require 'daemons'
151
-
152
212
  desc 'Run a service'
153
- task :run, :service_name, :seeds_name do |t, args|
213
+ task :run, [:service_name] => [:environment, :seed] do |t, args|
154
214
  args.with_defaults(:service_name => 'mimic', :seeds_name => nil)
155
215
 
156
- require 'fwtoolkit'
157
- Dir[File.join( Dir.pwd, 'Frank/features/support/models/*.rb')].each {|file| require file }
158
- Dir[File.join( Dir.pwd, 'Frank/features/support/views/*.rb')].each {|file| require file }
159
216
  require File.join( Dir.pwd, "Frank/features/support/#{args.service_name}.rb")
160
- require File.join( Dir.pwd, "Frank/features/support/#{args.seeds_name}.rb") if args.seeds_name
161
217
  puts "Service #{args.service_name} running"
162
218
  loop do
163
219
  sleep(5)
164
220
  end
165
221
  end
222
+
166
223
  end
167
224
 
168
225
  namespace :bundle do
@@ -1,3 +1,3 @@
1
1
  module FWToolkit
2
- VERSION = "0.4.6"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/fwtoolkit.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'erb'
2
- require 'thor'
3
2
  require 'rexml/document'
4
3
  require 'core_data'
5
4
 
@@ -7,18 +6,3 @@ require 'fwtoolkit/version'
7
6
  require 'fwtoolkit/test/frank_model'
8
7
 
9
8
  Dir["tasks/**/*.rake"].each { |ext| load ext } if defined?(Rake)
10
-
11
- module FWToolkit
12
- def self.root
13
- File.expand_path '../..', __FILE__
14
- end
15
- end
16
-
17
- class String
18
- def ruby_format
19
- self.gsub(/(.)([A-Z])/,'\1_\2').downcase
20
- end
21
- def ruby_format!
22
- replace ruby_format
23
- end
24
- end
@@ -0,0 +1,20 @@
1
+ require 'fwtoolkit/tasks/build_tasks'
2
+
3
+ FWToolkit::Tasks::BuildTask.new do |t|
4
+ t.workspace = '<Project Name>.xcworkspace'
5
+ t.scheme = '<Scheme Name>'
6
+ t.certificate = 'iPhone Developer: Matt Brooke-Smith (WQH444M434)'
7
+ t.provisioning_profile = '/Users/matt/Library/MobileDevice/Provisioning Profiles/72515CD9-7732-40D5-BE5F-8AE06BF5769C.mobileprovision'
8
+ t.bundle_identifier = '<Bundle Identifier>'
9
+ end
10
+
11
+ namespace :services do
12
+ task :seed do
13
+ # define any seeds to use with rake services:run here
14
+ # t = TestObject.new
15
+ # t.save!
16
+ end
17
+ end
18
+
19
+ task :cruise => ["ci:pod_build"]
20
+ task :default => ["cruise"]
@@ -1,5 +1,7 @@
1
+ require 'jbuilder'
2
+
1
3
  # Generated code
2
- class <%= class_name(@model) %> < FWToolkit::Test::FrankModel
4
+ class <%= @class_name %> < FWToolkit::Test::FrankModel
3
5
  # attributes
4
6
  attr_accessor <%= @model.attributes.map{|p| ":#{p.name.ruby_format}"}.join(', ') %>
5
7
  # relationships
@@ -28,6 +30,17 @@ class <%= class_name(@model) %> < FWToolkit::Test::FrankModel
28
30
  <% end %>
29
31
 
30
32
  def as_json(options={})
31
- {'<%= @model.name %>' => {<%= @model.attributes.map {|p| ":#{p.name} => @#{p.name.ruby_format}"}.join(', ') %>}}
33
+ Jbuilder.encode do |json|
34
+ json.<%= @model.name %> do
35
+ <% @model.attributes.each do |a| %>
36
+ json.<%= a.name %> self.<%= a.name.ruby_format %>
37
+ <% end %>
38
+ <% @model.relationships.select{|r| r.to_many? and r.inverse}.each do |r| %>
39
+ json.<%= r.name %> self.<%= r.name.ruby_format %> do |obj|
40
+ # fill out object properties
41
+ end
42
+ <% end %>
43
+ end
44
+ end
32
45
  end
33
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fwtoolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-19 00:00:00.000000000 Z
12
+ date: 2012-11-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -60,13 +60,13 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
- name: thor
63
+ name: xcodeproj
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 0.14.6
69
+ version: 0.3.5
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.14.6
77
+ version: 0.3.5
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: core_data
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -219,15 +219,45 @@ dependencies:
219
219
  - - '='
220
220
  - !ruby/object:Gem::Version
221
221
  version: 1.1.9
222
+ - !ruby/object:Gem::Dependency
223
+ name: cocoapods
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - '='
228
+ - !ruby/object:Gem::Version
229
+ version: 0.15.2
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - '='
236
+ - !ruby/object:Gem::Version
237
+ version: 0.15.2
238
+ - !ruby/object:Gem::Dependency
239
+ name: jbuilder
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - '='
244
+ - !ruby/object:Gem::Version
245
+ version: 0.8.2
246
+ type: :runtime
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - '='
252
+ - !ruby/object:Gem::Version
253
+ version: 0.8.2
222
254
  description: ''
223
255
  email:
224
256
  - matt@futureworkshops.com
225
- executables:
226
- - fwt
257
+ executables: []
227
258
  extensions: []
228
259
  extra_rdoc_files: []
229
260
  files:
230
- - bin/fwt
231
261
  - lib/fwtoolkit.rb
232
262
  - lib/fwtoolkit/cli.rb
233
263
  - lib/fwtoolkit/tasks/build_tasks.rb
@@ -241,6 +271,7 @@ files:
241
271
  - lib/fwtoolkit/version.rb
242
272
  - templates/cucumber/AppDelegate+Frank.h
243
273
  - templates/cucumber/AppDelegate+Frank.m
274
+ - templates/cucumber/Rakefile
244
275
  - templates/cucumber/env.rb
245
276
  - templates/cucumber/example.feature
246
277
  - templates/cucumber/launch_steps.rb
data/bin/fwt DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fwtoolkit/cli'
4
-
5
- FWToolkit::CLI.start