zewo-dev 0.2.0 → 0.2.2
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.
- 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
|
|