zewo-dev 0.1.3 → 0.1.5
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/bin/{zewo → zewodev} +0 -0
- data/lib/zewo/version.rb +1 -1
- data/lib/zewo.rb +159 -23
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3673c4a0a82ab3e0b7ba26200dc9eca647b941fc
|
4
|
+
data.tar.gz: 344a5d2eae09e3bfb08603ef9f72e4b91cfc5fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa29300400d55b66493e9bb55e4f5e23dc6dbc5aced2003a490a67cee0f4cabe6968c5b0d050c9d813cd8a65c1ad237e5884f472e243d2fd9388ea36dd1232c1
|
7
|
+
data.tar.gz: d0a4f3e869c1edccdef1c723280a7b6d798ace07f2bbcac97e05335c2a0cef37b76e639c95594eeacdd51a25072636c7b762a762bcf0b3023409b2d228323391
|
data/bin/{zewo → zewodev}
RENAMED
File without changes
|
data/lib/zewo/version.rb
CHANGED
data/lib/zewo.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'zewo/version'
|
2
2
|
|
3
3
|
require 'thor'
|
4
4
|
require 'rubygems'
|
@@ -12,19 +12,115 @@ require 'colorize'
|
|
12
12
|
require 'thread'
|
13
13
|
require 'thwait'
|
14
14
|
|
15
|
+
def silent_cmd(cmd)
|
16
|
+
system("#{cmd} > /dev/null 2>&1")
|
17
|
+
end
|
18
|
+
|
15
19
|
module Zewo
|
16
20
|
class App < Thor
|
17
|
-
|
18
21
|
class Repo
|
19
22
|
attr_reader :name
|
20
23
|
@name = nil
|
21
24
|
attr_reader :data
|
22
25
|
@data = nil
|
23
26
|
|
24
|
-
|
27
|
+
@xcodeproj = nil
|
28
|
+
|
29
|
+
def initialize(name, data = nil)
|
25
30
|
@name = name
|
26
31
|
@data = data
|
27
32
|
end
|
33
|
+
|
34
|
+
def framework_target
|
35
|
+
target_name = name.gsub('-OSX', '').gsub('-', '_')
|
36
|
+
xcode_project.native_targets.find { |t| t.name == target_name } || xcode_project.new_target(:framework, target_name, :osx)
|
37
|
+
end
|
38
|
+
|
39
|
+
def xcode_dir
|
40
|
+
"#{name}/XcodeTest"
|
41
|
+
end
|
42
|
+
|
43
|
+
def xcode_project_path
|
44
|
+
"#{xcode_dir}/#{name}.xcodeproj"
|
45
|
+
end
|
46
|
+
|
47
|
+
def xcode_project
|
48
|
+
return @xcodeproj if @xcodeproj
|
49
|
+
if File.exist?(xcode_project_path)
|
50
|
+
@xcodeproj = Xcodeproj::Project.open(xcode_project_path)
|
51
|
+
else
|
52
|
+
@xcodeproj = Xcodeproj::Project.new(xcode_project_path)
|
53
|
+
end
|
54
|
+
@xcodeproj
|
55
|
+
end
|
56
|
+
|
57
|
+
def sources_dir
|
58
|
+
if File.directory?("#{name}/Sources")
|
59
|
+
return 'Sources'
|
60
|
+
elsif File.directory?("#{name}/Source")
|
61
|
+
return 'Source'
|
62
|
+
end
|
63
|
+
nil
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_files(direc, current_group, main_target)
|
67
|
+
Dir.glob(direc) do |item|
|
68
|
+
next if item == '.' || item == '.DS_Store'
|
69
|
+
|
70
|
+
if File.directory?(item)
|
71
|
+
new_folder = File.basename(item)
|
72
|
+
created_group = current_group.new_group(new_folder)
|
73
|
+
add_files("#{item}/*", created_group, main_target)
|
74
|
+
else
|
75
|
+
item = item.split('/')[1..-1].unshift('..') * '/'
|
76
|
+
i = current_group.new_file(item)
|
77
|
+
main_target.add_file_references([i]) if item.include? '.swift'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def build_dependencies
|
83
|
+
puts "Configuring dependencies for #{name}".green
|
84
|
+
dependency_repos = File.read("#{name}/Package.swift").scan(/(?<=Zewo\/)(.*?)(?=\.git)/).map(&:first)
|
85
|
+
|
86
|
+
group = xcode_project.new_group('Subprojects')
|
87
|
+
dependency_repos.each do |repo_name|
|
88
|
+
repo = Repo.new(repo_name)
|
89
|
+
project_reference = group.new_file("#{repo.xcode_project_path}")
|
90
|
+
project_reference.path = "../../#{project_reference.path}"
|
91
|
+
|
92
|
+
if framework_target
|
93
|
+
framework_target.add_dependency(repo.framework_target)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
xcode_project.save
|
98
|
+
end
|
99
|
+
|
100
|
+
def configure_xcode_project
|
101
|
+
@xcodeproj = nil
|
102
|
+
silent_cmd("rm -rf #{xcode_dir}")
|
103
|
+
|
104
|
+
puts "Creating Xcode project #{name}".green
|
105
|
+
|
106
|
+
framework_target.build_configurations.each do |configuration|
|
107
|
+
framework_target.build_settings(configuration.name)['HEADER_SEARCH_PATHS'] = '/usr/local/include'
|
108
|
+
framework_target.build_settings(configuration.name)['LIBRARY_SEARCH_PATHS'] = '/usr/local/lib'
|
109
|
+
|
110
|
+
if File.exist?("#{name}/module.modulemap")
|
111
|
+
framework_target.build_settings(configuration.name)['MODULEMAP_FILE'] = '../module.modulemap'
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
xcode_project.new_file('../module.modulemap') if File.exist?("#{name}/module.modulemap")
|
116
|
+
|
117
|
+
if sources_dir
|
118
|
+
group = xcode_project.new_group(sources_dir)
|
119
|
+
add_files("#{name}/#{sources_dir}/*", group, framework_target)
|
120
|
+
end
|
121
|
+
|
122
|
+
xcode_project.save
|
123
|
+
end
|
28
124
|
end
|
29
125
|
|
30
126
|
no_commands do
|
@@ -35,15 +131,32 @@ module Zewo
|
|
35
131
|
http.use_ssl = true
|
36
132
|
request = Net::HTTP::Get.new(uri.request_uri)
|
37
133
|
|
134
|
+
blacklist = [
|
135
|
+
'Core',
|
136
|
+
'GrandCentralDispatch',
|
137
|
+
'JSONParserMiddleware',
|
138
|
+
'Levee',
|
139
|
+
'LoggerMiddleware',
|
140
|
+
'Middleware',
|
141
|
+
'Mustache',
|
142
|
+
'POSIXRegex',
|
143
|
+
'SSL',
|
144
|
+
'Sideburns',
|
145
|
+
'SwiftZMQ',
|
146
|
+
'WebSocket'
|
147
|
+
]
|
148
|
+
|
38
149
|
response = http.request(request)
|
39
150
|
|
40
151
|
if response.code == '200'
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
152
|
+
result = JSON.parse(response.body).sort_by { |hsh| hsh['name'] }
|
153
|
+
|
154
|
+
|
155
|
+
result.each do |doc|
|
156
|
+
next if blacklist.include?(doc['name'])
|
157
|
+
repo = Repo.new(doc['name'], doc)
|
158
|
+
yield repo
|
159
|
+
end
|
47
160
|
else
|
48
161
|
puts 'Error loading repositories'
|
49
162
|
end
|
@@ -52,9 +165,29 @@ module Zewo
|
|
52
165
|
def each_repo_async
|
53
166
|
threads = []
|
54
167
|
each_repo do |repo|
|
55
|
-
threads << Thread.new
|
168
|
+
threads << Thread.new do
|
169
|
+
yield(repo)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
ThreadsWait.all_waits(*threads)
|
173
|
+
end
|
174
|
+
|
175
|
+
def each_code_repo
|
176
|
+
each_repo do |repo|
|
177
|
+
unless File.exist?("#{repo.name}/Package.swift")
|
178
|
+
print "No Package.swift for #{repo.name}. Skipping." + "\n"
|
179
|
+
next
|
180
|
+
end
|
181
|
+
yield repo
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def each_code_repo_async
|
186
|
+
threads = []
|
187
|
+
each_code_repo do |repo|
|
188
|
+
threads << Thread.new do
|
56
189
|
yield(repo)
|
57
|
-
|
190
|
+
end
|
58
191
|
end
|
59
192
|
ThreadsWait.all_waits(*threads)
|
60
193
|
end
|
@@ -62,7 +195,7 @@ module Zewo
|
|
62
195
|
def verify_branches
|
63
196
|
last_branch_name = nil
|
64
197
|
each_repo do |repo|
|
65
|
-
branch_name = `cd #{repo.name}; git rev-parse --abbrev-ref HEAD`.gsub("\n",
|
198
|
+
branch_name = `cd #{repo.name}; git rev-parse --abbrev-ref HEAD`.gsub("\n", '')
|
66
199
|
if !last_branch_name.nil? && branch_name != last_branch_name
|
67
200
|
puts "Branch mismatch. Branch of #{repo.name} does not match previous branch #{branch_name}".red
|
68
201
|
return false
|
@@ -110,17 +243,15 @@ module Zewo
|
|
110
243
|
|
111
244
|
desc :pull, 'git pull on all repos'
|
112
245
|
def pull
|
113
|
-
|
114
246
|
each_repo_async do |repo|
|
115
247
|
print "Updating #{repo.name}..." + "\n"
|
116
248
|
if uncommited_changes?(repo.name)
|
117
249
|
print "Uncommitted changes in #{repo.name}. Not updating.".red + "\n"
|
118
250
|
next
|
119
251
|
end
|
120
|
-
|
252
|
+
silent_cmd("cd #{repo.name}; git pull")
|
121
253
|
print "Updated #{repo.name}".green + "\n"
|
122
254
|
end
|
123
|
-
|
124
255
|
end
|
125
256
|
|
126
257
|
desc :push, 'git push on all repos'
|
@@ -133,7 +264,7 @@ module Zewo
|
|
133
264
|
next
|
134
265
|
end
|
135
266
|
print "Pushing #{repo.name}...".green + "\n"
|
136
|
-
|
267
|
+
silent_cmd("cd #{repo.name}; git push")
|
137
268
|
end
|
138
269
|
print 'Done!' + "\n"
|
139
270
|
end
|
@@ -141,15 +272,15 @@ module Zewo
|
|
141
272
|
desc :init, 'Clones all Zewo repositories'
|
142
273
|
def init
|
143
274
|
each_repo_async do |repo|
|
275
|
+
print "Checking #{repo.name}..." + "\n"
|
144
276
|
unless File.directory?(repo.name)
|
145
277
|
print "Cloning #{repo.name}...".green + "\n"
|
146
|
-
|
278
|
+
silent_cmd("git clone #{repo.data['ssh_url']}")
|
147
279
|
end
|
148
280
|
end
|
149
281
|
puts 'Done!'
|
150
282
|
end
|
151
283
|
|
152
|
-
|
153
284
|
desc :build, 'Clones all Zewo repositories'
|
154
285
|
def build
|
155
286
|
each_repo do |repo|
|
@@ -160,7 +291,7 @@ module Zewo
|
|
160
291
|
|
161
292
|
if system("cd #{repo.name}/Xcode; set -o pipefail && xcodebuild -scheme \"#{repo.name}\" -sdk \"macosx\" -toolchain /Library/Developer/Toolchains/swift-latest.xctoolchain | xcpretty") == false
|
162
293
|
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
|
163
|
-
|
294
|
+
|
164
295
|
end
|
165
296
|
end
|
166
297
|
end
|
@@ -181,13 +312,18 @@ module Zewo
|
|
181
312
|
|
182
313
|
system("cd #{repo.name}; git add --all; git commit -am #{message}")
|
183
314
|
puts "Commited #{repo.name}\n".green
|
184
|
-
|
185
315
|
end
|
186
316
|
if prompt('Pull & push changes?'.red)
|
187
|
-
|
188
|
-
|
317
|
+
pull
|
318
|
+
push
|
189
319
|
end
|
190
|
-
|
320
|
+
end
|
321
|
+
|
322
|
+
desc :make_projects, 'Makes projects'
|
323
|
+
def make_projects
|
324
|
+
each_code_repo(&:configure_xcode_project)
|
325
|
+
|
326
|
+
each_code_repo(&:build_dependencies)
|
191
327
|
end
|
192
328
|
end
|
193
329
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zewo-dev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Ask
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|
@@ -100,7 +100,7 @@ email:
|
|
100
100
|
executables:
|
101
101
|
- console
|
102
102
|
- setup
|
103
|
-
-
|
103
|
+
- zewodev
|
104
104
|
extensions: []
|
105
105
|
extra_rdoc_files: []
|
106
106
|
files:
|
@@ -112,7 +112,7 @@ files:
|
|
112
112
|
- Rakefile
|
113
113
|
- bin/console
|
114
114
|
- bin/setup
|
115
|
-
- bin/
|
115
|
+
- bin/zewodev
|
116
116
|
- lib/zewo.rb
|
117
117
|
- lib/zewo/version.rb
|
118
118
|
- zewo.gemspec
|