zewo-dev 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/lib/zewo/version.rb +1 -1
- data/lib/zewo.rb +55 -42
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3d02c82f775cdbabc993627c1d1bf48f1873eaf
|
4
|
+
data.tar.gz: 42abaab6c40f194d92c6e79b7ba79dbe71933654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02aafd101f9a033d4fccb8908b0d2f54c8e8dfe299fa4b4ddbc7c580e6a640ec9a5407a5a20d663ad01dac95d2d74102d4bbeefd847dc0e431e47eaf02c1883e
|
7
|
+
data.tar.gz: d0e53a47dc369b03ccecf831a6ae38cbb7c20cf703ab6c39e15de1cc39196c4f5517744d7ec06588ffb235ea0d52e1dfbe2ff0109fa06677bc7c37a13d2a2148
|
data/README.md
CHANGED
@@ -35,4 +35,7 @@ Run `zewodev make_projects` to generate Xcode projects for all Swift modules. Ev
|
|
35
35
|
Lastly, you'll be prompted to push your changes.
|
36
36
|
|
37
37
|
## Push & pull
|
38
|
-
`zewodev push` and `zewodev pull` will push and pull changes for all Swift modules.
|
38
|
+
`zewodev push` and `zewodev pull` will push and pull changes for all Swift modules.
|
39
|
+
|
40
|
+
## Unit testing
|
41
|
+
If you create a folder called `Tests` in the same directory as your `Sources` directory, the tool will create a `<ModuleName>-tests` target and add the test files to that target.
|
data/lib/zewo/version.rb
CHANGED
data/lib/zewo.rb
CHANGED
@@ -41,16 +41,31 @@ module Zewo
|
|
41
41
|
xcode_project.native_targets.find { |t| t.name == target_name } || xcode_project.new_target(:bundle, target_name, :osx)
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
44
|
+
def dir(ext = nil)
|
45
|
+
r = name
|
46
|
+
r = "#{r}/#{ext}" if ext
|
47
|
+
r
|
48
|
+
end
|
49
|
+
|
50
|
+
def tests_dirname
|
45
51
|
"Tests"
|
46
52
|
end
|
47
53
|
|
48
|
-
def
|
49
|
-
"
|
54
|
+
def xcode_dirname
|
55
|
+
"XcodeDevelopment"
|
50
56
|
end
|
51
57
|
|
52
58
|
def xcode_project_path
|
53
|
-
"#{
|
59
|
+
dir("#{xcode_dirname}/#{name}.xcodeproj")
|
60
|
+
end
|
61
|
+
|
62
|
+
def sources_dirname
|
63
|
+
if File.directory?(dir('Sources'))
|
64
|
+
return 'Sources'
|
65
|
+
elsif File.directory?(dir('Source'))
|
66
|
+
return 'Source'
|
67
|
+
end
|
68
|
+
nil
|
54
69
|
end
|
55
70
|
|
56
71
|
def xcode_project
|
@@ -63,15 +78,6 @@ module Zewo
|
|
63
78
|
@xcodeproj
|
64
79
|
end
|
65
80
|
|
66
|
-
def sources_dir
|
67
|
-
if File.directory?("#{name}/Sources")
|
68
|
-
return 'Sources'
|
69
|
-
elsif File.directory?("#{name}/Source")
|
70
|
-
return 'Source'
|
71
|
-
end
|
72
|
-
nil
|
73
|
-
end
|
74
|
-
|
75
81
|
def add_files(direc, current_group, main_target)
|
76
82
|
Dir.glob(direc) do |item|
|
77
83
|
next if item == '.' || item == '.DS_Store'
|
@@ -90,7 +96,7 @@ module Zewo
|
|
90
96
|
|
91
97
|
def build_dependencies
|
92
98
|
puts "Configuring dependencies for #{name}".green
|
93
|
-
dependency_repos = File.read(
|
99
|
+
dependency_repos = File.read(dir('Package.swift')).scan(/(?<=Zewo\/)(.*?)(?=\.git)/).map(&:first)
|
94
100
|
|
95
101
|
group = xcode_project.new_group('Subprojects')
|
96
102
|
dependency_repos.each do |repo_name|
|
@@ -108,32 +114,45 @@ module Zewo
|
|
108
114
|
|
109
115
|
def configure_xcode_project
|
110
116
|
@xcodeproj = nil
|
111
|
-
silent_cmd("rm -rf #{
|
117
|
+
silent_cmd("rm -rf #{dir(xcode_dirname)}")
|
112
118
|
|
113
119
|
puts "Creating Xcode project #{name}".green
|
114
120
|
|
115
121
|
framework_target.build_configurations.each do |configuration|
|
116
122
|
framework_target.build_settings(configuration.name)['HEADER_SEARCH_PATHS'] = '/usr/local/include'
|
117
123
|
framework_target.build_settings(configuration.name)['LIBRARY_SEARCH_PATHS'] = '/usr/local/lib'
|
124
|
+
framework_target.build_settings(configuration.name)['ENABLE_TESTABILITY'] = 'YES'
|
118
125
|
|
119
|
-
if File.exist?(
|
126
|
+
if File.exist?(dir('module.modulemap'))
|
120
127
|
framework_target.build_settings(configuration.name)['MODULEMAP_FILE'] = '../module.modulemap'
|
121
128
|
end
|
122
129
|
end
|
123
130
|
|
124
|
-
|
131
|
+
framework_target.frameworks_build_phase.clear
|
125
132
|
|
126
|
-
if
|
127
|
-
|
128
|
-
|
133
|
+
xcode_project.new_file('../module.modulemap') if File.exist?(dir('module.modulemap'))
|
134
|
+
|
135
|
+
if sources_dirname
|
136
|
+
group = xcode_project.new_group(sources_dirname)
|
137
|
+
add_files(dir("#{sources_dirname}/*"), group, framework_target)
|
129
138
|
end
|
130
139
|
|
131
|
-
|
132
|
-
|
133
|
-
|
140
|
+
test_target.resources_build_phase
|
141
|
+
test_target.add_dependency(framework_target)
|
142
|
+
|
143
|
+
test_target.build_configurations.each do |configuration|
|
144
|
+
test_target.build_settings(configuration.name)['WRAPPER_EXTENSION'] = 'xctest'
|
145
|
+
test_target.build_settings(configuration.name)['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) @executable_path/../../Frameworks @loader_path/../Frameworks'
|
134
146
|
end
|
135
147
|
|
148
|
+
group = xcode_project.new_group(tests_dirname)
|
149
|
+
add_files(dir("#{tests_dirname}/*"), group, test_target)
|
150
|
+
|
136
151
|
xcode_project.save
|
152
|
+
|
153
|
+
scheme = Xcodeproj::XCScheme.new()
|
154
|
+
scheme.configure_with_targets(framework_target, test_target)
|
155
|
+
scheme.save_as(xcode_project.path, framework_target.name, true)
|
137
156
|
end
|
138
157
|
end
|
139
158
|
|
@@ -149,15 +168,12 @@ module Zewo
|
|
149
168
|
'Core',
|
150
169
|
'GrandCentralDispatch',
|
151
170
|
'JSONParserMiddleware',
|
152
|
-
'Levee',
|
153
171
|
'LoggerMiddleware',
|
154
172
|
'Middleware',
|
155
|
-
'Mustache',
|
156
|
-
'POSIXRegex',
|
157
173
|
'SSL',
|
158
|
-
'Sideburns',
|
159
174
|
'SwiftZMQ',
|
160
|
-
'WebSocket'
|
175
|
+
'WebSocket',
|
176
|
+
'HTTPMiddleware'
|
161
177
|
]
|
162
178
|
|
163
179
|
response = http.request(request)
|
@@ -165,14 +181,13 @@ module Zewo
|
|
165
181
|
if response.code == '200'
|
166
182
|
result = JSON.parse(response.body).sort_by { |hsh| hsh['name'] }
|
167
183
|
|
168
|
-
|
169
184
|
result.each do |doc|
|
170
185
|
next if blacklist.include?(doc['name'])
|
171
186
|
repo = Repo.new(doc['name'], doc)
|
172
187
|
yield repo
|
173
188
|
end
|
174
189
|
else
|
175
|
-
puts 'Error loading repositories'
|
190
|
+
puts 'Error loading repositories'.red
|
176
191
|
end
|
177
192
|
end
|
178
193
|
|
@@ -188,8 +203,7 @@ module Zewo
|
|
188
203
|
|
189
204
|
def each_code_repo
|
190
205
|
each_repo do |repo|
|
191
|
-
unless File.exist?(
|
192
|
-
print "No Package.swift for #{repo.name}. Skipping." + "\n"
|
206
|
+
unless File.exist?(repo.dir('Package.swift'))
|
193
207
|
next
|
194
208
|
end
|
195
209
|
yield repo
|
@@ -209,7 +223,7 @@ module Zewo
|
|
209
223
|
def verify_branches
|
210
224
|
last_branch_name = nil
|
211
225
|
each_repo do |repo|
|
212
|
-
branch_name = `cd #{repo.
|
226
|
+
branch_name = `cd #{repo.dir}; git rev-parse --abbrev-ref HEAD`.gsub("\n", '')
|
213
227
|
if !last_branch_name.nil? && branch_name != last_branch_name
|
214
228
|
puts "Branch mismatch. Branch of #{repo.name} does not match previous branch #{branch_name}".red
|
215
229
|
return false
|
@@ -257,15 +271,15 @@ module Zewo
|
|
257
271
|
|
258
272
|
desc :pull, 'git pull on all repos'
|
259
273
|
def pull
|
274
|
+
print "Updating all repositories..." + "\n"
|
260
275
|
each_code_repo_async do |repo|
|
261
|
-
print "Updating #{repo.name}..." + "\n"
|
262
276
|
if uncommited_changes?(repo.name)
|
263
277
|
print "Uncommitted changes in #{repo.name}. Not updating.".red + "\n"
|
264
278
|
next
|
265
279
|
end
|
266
280
|
system("cd #{repo.name}; git pull")
|
267
|
-
print "Updated #{repo.name}".green + "\n"
|
268
281
|
end
|
282
|
+
puts 'Done!'
|
269
283
|
end
|
270
284
|
|
271
285
|
desc :push, 'git push on all repos'
|
@@ -289,7 +303,7 @@ module Zewo
|
|
289
303
|
print "Checking #{repo.name}..." + "\n"
|
290
304
|
unless File.directory?(repo.name)
|
291
305
|
print "Cloning #{repo.name}...".green + "\n"
|
292
|
-
silent_cmd("git clone #{repo.data['
|
306
|
+
silent_cmd("git clone #{repo.data['clone_url']}")
|
293
307
|
end
|
294
308
|
end
|
295
309
|
puts 'Done!'
|
@@ -298,14 +312,14 @@ module Zewo
|
|
298
312
|
desc :build, 'Clones all Zewo repositories'
|
299
313
|
def build
|
300
314
|
each_code_repo do |repo|
|
301
|
-
unless File.directory?(
|
315
|
+
unless File.directory?(repo.dir(repo.xcode_dirname))
|
302
316
|
puts "Skipping #{repo.name}. No Xcode project".yellow
|
303
317
|
end
|
304
318
|
puts "Building #{repo.name}...".green
|
305
319
|
|
306
|
-
if system("cd #{repo.
|
320
|
+
if system("cd #{repo.dir(repo.xcode_dirname)}; set -o pipefail && xcodebuild -scheme \"#{repo.framework_target.name}\" -sdk \"macosx\" -toolchain \"/Library/Developer/Toolchains/swift-latest.xctoolchain\" | xcpretty") == false
|
307
321
|
puts "Error building. Maybe you're using the wrong Xcode? Try `sudo xcode-select -s /Applications/Xcode-Beta.app/Contents/Developer` if you have a beta-version of Xcode installed.".red
|
308
|
-
|
322
|
+
return
|
309
323
|
end
|
310
324
|
end
|
311
325
|
end
|
@@ -319,14 +333,13 @@ module Zewo
|
|
319
333
|
puts repo.name
|
320
334
|
puts '--------------------------------------------------------------'
|
321
335
|
if uncommited_changes?(repo.name)
|
322
|
-
|
323
|
-
system("cd #{repo.name}; git status")
|
336
|
+
system("cd #{repo.dir}; git status")
|
324
337
|
return unless prompt("Proceed with #{repo.name}?")
|
325
338
|
end
|
326
339
|
end
|
327
340
|
|
328
341
|
each_code_repo do |repo|
|
329
|
-
system("cd #{repo.
|
342
|
+
system("cd #{repo.dir}; git add --all; git commit -am \"#{message}\"")
|
330
343
|
puts "Commited #{repo.name}\n".green
|
331
344
|
end
|
332
345
|
|