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.
@@ -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