fwtoolkit 0.4.6 → 0.5.0
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/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
|