bait 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +17 -3
- data/lib/bait/objective_c/dependency_orderer.rb +48 -0
- data/lib/bait/objective_c/project.rb +17 -0
- data/lib/bait/project.rb +20 -0
- data/lib/bait/version.rb +1 -1
- data/spec/lib/bait/objective_c/dependency_orderer_spec.rb +8 -0
- data/spec/lib/bait/objective_c/project_spec.rb +8 -0
- data/spec/lib/bait/project_spec.rb +8 -0
- metadata +10 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 538ab60ada5752213726f9810c21f4b9a628925d
|
4
|
+
data.tar.gz: 27fa1ecb9bc9e38a8db35a698b6e5c75fd534faf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35c7dbf5f18c4779305b512d913b0cd74a1d2bfa6fe318a7b8603c366873b172c62ba398af03f104fd172981bf700ab2762d8fdc75b1e2f49b196e343eabdc33
|
7
|
+
data.tar.gz: fa325bd7030acac83f71aa121efcfdbc24231b7f4dc3dffcab8bed7c270d759c6dcf62b07411c127e87071bc493bee518e3aa18dcfce19fbef4b31c33966fbba
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -26,7 +26,7 @@ Scribbeo-motion proved that this works, and so bait is a service I'm envisioning
|
|
26
26
|
# Architectural Overview
|
27
27
|
|
28
28
|
```
|
29
|
-
|
29
|
+
Github POST bait:8417/
|
30
30
|
______________________ \./
|
31
31
|
| Mac OS X 10.8 | |
|
32
32
|
| w/ RubyMotion | |
|
@@ -120,8 +120,22 @@ scripts upon a Github hook.
|
|
120
120
|
|
121
121
|
But how exactly will it help add a ruby test suite to an Obj-C app?
|
122
122
|
|
123
|
-
Watch this spot for some examples soon
|
124
|
-
|
123
|
+
Watch this spot for some examples soon
|
124
|
+
|
125
|
+
The basic idea however is to bootstrap a rubymotion project in your
|
126
|
+
`test.sh` file, throw your Obj-C files into vendor/ and then setup your
|
127
|
+
Rakefile like so:
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
Motion::Project::App.setup do |app|
|
131
|
+
app.name = 'My Wrapped Project'
|
132
|
+
|
133
|
+
%w[Tools Models Controllers Views].map{|i| app.vendor_project "vendor/SB/#{i}", :static }
|
134
|
+
end
|
135
|
+
```
|
136
|
+
|
137
|
+
Now that's just a preliminary example; I will try to make this very easy
|
138
|
+
and conventional and then report my findings here.
|
125
139
|
|
126
140
|
# Future
|
127
141
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'bait/objective_c/project'
|
2
|
+
|
3
|
+
module Bait
|
4
|
+
module ObjectiveC
|
5
|
+
class DependencyOrderer
|
6
|
+
attr_accessor :errors, :order, :queue, :project
|
7
|
+
def initialize path_array, project
|
8
|
+
@project = project
|
9
|
+
@queue = path_array
|
10
|
+
@order = []
|
11
|
+
@errors = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def examine_file path
|
15
|
+
return unless path && File.exists?(path)
|
16
|
+
if @order.include? path
|
17
|
+
return
|
18
|
+
end
|
19
|
+
imports_within(path).each do |name|
|
20
|
+
examine_file @project.glob(name).first
|
21
|
+
end
|
22
|
+
@order << path
|
23
|
+
end
|
24
|
+
|
25
|
+
def imports_within path
|
26
|
+
imports = []
|
27
|
+
File.open(path, 'r') do |f|
|
28
|
+
f.each_line do |line|
|
29
|
+
if matches = line.match(/^#import "(.*)"/)
|
30
|
+
imports << matches[1]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
rescue => ex
|
35
|
+
@errors << ex
|
36
|
+
ensure
|
37
|
+
return imports
|
38
|
+
end
|
39
|
+
|
40
|
+
def start
|
41
|
+
@queue.each do |path|
|
42
|
+
examine_file path
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'bait/project'
|
2
|
+
require 'bait/objective_c/dependency_orderer'
|
3
|
+
|
4
|
+
module Bait
|
5
|
+
module ObjectiveC
|
6
|
+
class Project < Bait::Project
|
7
|
+
def h_files
|
8
|
+
@h_files ||= ordered_dependencies '*.h', ObjectiveC::DependencyOrderer
|
9
|
+
end
|
10
|
+
|
11
|
+
def m_files
|
12
|
+
@m_files ||= ordered_dependencies '*.m', ObjectiveC::DependencyOrderer
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
data/lib/bait/project.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Bait
|
2
|
+
class Project
|
3
|
+
def initialize root_path
|
4
|
+
unless Dir.exists? root_path
|
5
|
+
raise "Expected a valid directory"
|
6
|
+
end
|
7
|
+
@path = Pathname.new(root_path)
|
8
|
+
end
|
9
|
+
|
10
|
+
def glob pattern
|
11
|
+
Dir.glob @path.join("**/#{pattern}")
|
12
|
+
end
|
13
|
+
|
14
|
+
def ordered_dependencies file_pattern, klass
|
15
|
+
orderer = klass.new(glob(file_pattern), self)
|
16
|
+
orderer.start
|
17
|
+
orderer.order
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/bait/version.rb
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'bait/objective_c/dependency_orderer'
|
2
|
+
|
3
|
+
describe Bait::ObjectiveC::DependencyOrderer do
|
4
|
+
it "initializes with a path array and a Bait::Project" do
|
5
|
+
project = Bait::ObjectiveC::Project.new File.dirname(__FILE__)
|
6
|
+
Bait::ObjectiveC::DependencyOrderer.new [], project
|
7
|
+
end
|
8
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bait
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keyvan Fatehi
|
@@ -214,6 +214,9 @@ files:
|
|
214
214
|
- lib/bait.rb
|
215
215
|
- lib/bait/api.rb
|
216
216
|
- lib/bait/build.rb
|
217
|
+
- lib/bait/objective_c/dependency_orderer.rb
|
218
|
+
- lib/bait/objective_c/project.rb
|
219
|
+
- lib/bait/project.rb
|
217
220
|
- lib/bait/public/css/styles.css
|
218
221
|
- lib/bait/simple_query.rb
|
219
222
|
- lib/bait/tester.rb
|
@@ -222,6 +225,9 @@ files:
|
|
222
225
|
- lib/bait/views/layout.haml
|
223
226
|
- spec/lib/bait/api_spec.rb
|
224
227
|
- spec/lib/bait/build_spec.rb
|
228
|
+
- spec/lib/bait/objective_c/dependency_orderer_spec.rb
|
229
|
+
- spec/lib/bait/objective_c/project_spec.rb
|
230
|
+
- spec/lib/bait/project_spec.rb
|
225
231
|
- spec/lib/bait/tester_spec.rb
|
226
232
|
- spec/lib/bait_spec.rb
|
227
233
|
- spec/spec_helper.rb
|
@@ -253,6 +259,9 @@ summary: build and integration test service
|
|
253
259
|
test_files:
|
254
260
|
- spec/lib/bait/api_spec.rb
|
255
261
|
- spec/lib/bait/build_spec.rb
|
262
|
+
- spec/lib/bait/objective_c/dependency_orderer_spec.rb
|
263
|
+
- spec/lib/bait/objective_c/project_spec.rb
|
264
|
+
- spec/lib/bait/project_spec.rb
|
256
265
|
- spec/lib/bait/tester_spec.rb
|
257
266
|
- spec/lib/bait_spec.rb
|
258
267
|
- spec/spec_helper.rb
|