fwtoolkit 0.4.6 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/fwtoolkit/tasks/build_tasks.rb +63 -6
- data/lib/fwtoolkit/version.rb +1 -1
- data/lib/fwtoolkit.rb +0 -16
- data/templates/cucumber/Rakefile +20 -0
- data/templates/models/model.rb.erb +15 -2
- metadata +39 -8
- data/bin/fwt +0 -5
@@ -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, :
|
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
|
data/lib/fwtoolkit/version.rb
CHANGED
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
|
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
|
-
|
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
|
+
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-
|
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:
|
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.
|
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.
|
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
|