zewo-dev 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|