zimt 0.0.4 → 0.0.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.
- data/README.md +23 -0
- data/lib/zimt/pbxproj.rb +42 -14
- data/lib/zimt/sprinkle.rb +39 -3
- data/lib/zimt/version.rb +1 -1
- metadata +4 -3
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Zimt manages your Objective C dependencies. It
|
2
|
+
|
3
|
+
* autoupdates your .xcodeproj when you add a library
|
4
|
+
* downloads the files for your
|
5
|
+
|
6
|
+
|
7
|
+
Usage
|
8
|
+
=====
|
9
|
+
|
10
|
+
cd ~/projects/AwesomeApp/
|
11
|
+
zimt add TTTAttributedLabel
|
12
|
+
|
13
|
+
Installation
|
14
|
+
============
|
15
|
+
|
16
|
+
If you don't have a custom Ruby installed:
|
17
|
+
|
18
|
+
sudo gem install zimt
|
19
|
+
|
20
|
+
If you use RVM, rbenv or just installed your own Ruby your probably know what do to ;)
|
21
|
+
|
22
|
+
gem install zimt
|
23
|
+
|
data/lib/zimt/pbxproj.rb
CHANGED
@@ -12,6 +12,10 @@ module Zimt
|
|
12
12
|
@buffer
|
13
13
|
end
|
14
14
|
|
15
|
+
|
16
|
+
FILE_FORMATS = { '.png' => 'image.png',
|
17
|
+
'.plist' => 'text.plist.xml' }
|
18
|
+
|
15
19
|
# Documentation on PBXObjectId by @tjw
|
16
20
|
# http://lists.apple.com/archives/projectbuilder-users/2003/Jan/msg00263.html
|
17
21
|
#
|
@@ -30,15 +34,18 @@ module Zimt
|
|
30
34
|
def uuid
|
31
35
|
# TODO
|
32
36
|
@prefix ||= randhex(4)
|
33
|
-
@suffix ||=
|
34
|
-
@count ||=
|
37
|
+
@suffix ||= randhex(16)
|
38
|
+
@count ||= randhex(4).to_i(16)
|
35
39
|
@count += 1
|
36
|
-
if @count.to_s(16).length
|
37
|
-
@count =
|
40
|
+
if @count.to_s(16).length > 4
|
41
|
+
@count = randhex(4).to_i(16)
|
38
42
|
end
|
39
43
|
uuid = "#{@prefix}#{@count.to_s(16).upcase}#{@suffix}"
|
40
44
|
if uuid.length != 24
|
41
45
|
puts "uuid length wrong: #{uuid}"
|
46
|
+
puts @prefix
|
47
|
+
puts @suffix
|
48
|
+
puts @count
|
42
49
|
exit
|
43
50
|
end
|
44
51
|
uuid
|
@@ -69,6 +76,20 @@ module Zimt
|
|
69
76
|
self.root.mainGroup.children.select{ |g| g.path == 'Zimt' }.first
|
70
77
|
end
|
71
78
|
|
79
|
+
def license_file
|
80
|
+
return unless self.zimt_group
|
81
|
+
self.zimt_group.children.select { |g| g.path == '3rdPartyLicenses.txt' }
|
82
|
+
end
|
83
|
+
|
84
|
+
def ensure_license_file
|
85
|
+
self.ensure_zimt_group
|
86
|
+
FileUtils.mkdir "Zimt" if not File.exists? "Zimt"
|
87
|
+
if self.license_file.first.nil?
|
88
|
+
self.add_resource_file('3rdPartyLicenses.txt')
|
89
|
+
FileUtils.touch('Zimt/3rdPartyLicenses.txt')
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
72
93
|
def ensure_zimt_group
|
73
94
|
zimt_group = self.zimt_group
|
74
95
|
if zimt_group.nil?
|
@@ -132,9 +153,9 @@ module Zimt
|
|
132
153
|
# C5D0CB021406C3AA002E631F /* Hans.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hans.h; sourceTree = "<group>"; };
|
133
154
|
#/* End PBXFileReference section */
|
134
155
|
def add_file(file, file_type)
|
135
|
-
|
156
|
+
@position = 0
|
136
157
|
# Add file to Zimt group
|
137
|
-
|
158
|
+
zimt_group_id = self.zimt_group.pbxid
|
138
159
|
scan_to "\t\t#{zimt_group_id}"
|
139
160
|
scan_to "\t\t\t);"
|
140
161
|
newgroup = self.uuid
|
@@ -179,14 +200,21 @@ module Zimt
|
|
179
200
|
|
180
201
|
def add_m_file(file)
|
181
202
|
fileref = self.add_file(file, "sourcecode.c.objc")
|
182
|
-
buildfileref = self.add_buildfile(file, fileref)
|
183
|
-
add_buildfileref_to_build_phase(file, buildfileref)
|
203
|
+
buildfileref = self.add_buildfile(file, fileref, "Sources")
|
204
|
+
add_buildfileref_to_build_phase(file, buildfileref, "Sources")
|
205
|
+
end
|
206
|
+
|
207
|
+
def add_resource_file(file)
|
208
|
+
file_type = FILE_FORMATS[Pathname.new(file).extname.downcase] || 'text'
|
209
|
+
fileref = self.add_file(file, file_type)
|
210
|
+
buildfileref = self.add_buildfile(file, fileref, "Resources")
|
211
|
+
add_buildfileref_to_build_phase(file, buildfileref, "Resources")
|
184
212
|
end
|
185
213
|
|
186
214
|
#/* Begin PBXBuildFile section */
|
187
215
|
# C53D93B21406F98300F4CDDE /* Hans.m in Sources */ = {isa = PBXBuildFile; fileRef = C53D93B11406F98300F4CDDE /* Hans.m */; };
|
188
216
|
#/* End PBXBuildFile section */
|
189
|
-
def add_buildfile(file, fileref)
|
217
|
+
def add_buildfile(file, fileref, filetype)
|
190
218
|
newgroup = self.uuid
|
191
219
|
# Find position for Zimt reference in PBXGRoup section
|
192
220
|
@position = 0
|
@@ -207,7 +235,7 @@ module Zimt
|
|
207
235
|
|
208
236
|
# Add Zimt Group
|
209
237
|
self.content.insert(@position,
|
210
|
-
"\t\t#{newgroup} /* #{file} in
|
238
|
+
"\t\t#{newgroup} /* #{file} in #{filetype} */ = {isa = PBXBuildFile; fileRef = #{fileref} /* #{file} */; };\n")
|
211
239
|
|
212
240
|
self.save!
|
213
241
|
self.parse
|
@@ -221,11 +249,11 @@ module Zimt
|
|
221
249
|
# );
|
222
250
|
# C56D96C81385E71800070608 /* Sources */ = {
|
223
251
|
#/* End PBXSourcesBuildPhase section */
|
224
|
-
def add_buildfileref_to_build_phase(file, buildfileref)
|
252
|
+
def add_buildfileref_to_build_phase(file, buildfileref, phase_name)
|
225
253
|
@position = 0
|
226
|
-
scan_to "/* Begin
|
254
|
+
scan_to "/* Begin PBX#{phase_name}BuildPhase section */"
|
227
255
|
begin_position = @position
|
228
|
-
scan_to "/* End
|
256
|
+
scan_to "/* End PBX#{phase_name}BuildPhase section */"
|
229
257
|
end_position = @position
|
230
258
|
|
231
259
|
@position = begin_position
|
@@ -235,7 +263,7 @@ module Zimt
|
|
235
263
|
old_position = @position
|
236
264
|
scan_to(" );\n")
|
237
265
|
self.content.insert(@position,
|
238
|
-
" #{buildfileref} /* #{file} in
|
266
|
+
" #{buildfileref} /* #{file} in #{phase_name} */,\n")
|
239
267
|
@position = old_position + 1 # offset for added line
|
240
268
|
break
|
241
269
|
end
|
data/lib/zimt/sprinkle.rb
CHANGED
@@ -1,6 +1,27 @@
|
|
1
1
|
module Zimt
|
2
2
|
class Sprinkle
|
3
|
-
attr_accessor :name, :url, :files
|
3
|
+
attr_accessor :name, :url, :files, :spec
|
4
|
+
|
5
|
+
LICENSES = {}
|
6
|
+
LICENSES["MIT"] = <<EOF
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
+
THE SOFTWARE.
|
24
|
+
EOF
|
4
25
|
|
5
26
|
def self.get(name)
|
6
27
|
if name.start_with?('http://') || name.start_with?('https://')
|
@@ -21,7 +42,6 @@ module Zimt
|
|
21
42
|
|
22
43
|
def install
|
23
44
|
puts "Installing #{name}"
|
24
|
-
FileUtils.mkdir "Zimt" if not File.exists? "Zimt"
|
25
45
|
Zimt.pbxproj.ensure_zimt_group
|
26
46
|
files.each do |url|
|
27
47
|
file = Pathname.new(URI.parse(url).path).basename('.sprinkle.yml').to_s
|
@@ -31,10 +51,26 @@ module Zimt
|
|
31
51
|
end
|
32
52
|
if file.end_with? ".m"
|
33
53
|
Zimt.pbxproj.add_m_file(file)
|
34
|
-
|
54
|
+
elsif file.end_with? ".h"
|
35
55
|
Zimt.pbxproj.add_h_file(file)
|
56
|
+
else
|
57
|
+
Zimt.pbxproj.add_resource_file(file)
|
36
58
|
end
|
37
59
|
end
|
60
|
+
|
61
|
+
if(spec["license"] || spec["copyright"])
|
62
|
+
puts "Licensed under #{spec["license"]}"
|
63
|
+
Zimt.pbxproj.ensure_license_file
|
64
|
+
open(Pathname.new("Zimt").join("3rdPartyLicenses.txt"), "a") do |io|
|
65
|
+
io.write "License for #{name}:\n\n"
|
66
|
+
io.write spec["copyright"]
|
67
|
+
io.write "\n\n"
|
68
|
+
license = LICENSES[spec["license"]] || "#{spec["license"]}\n"
|
69
|
+
io.write license
|
70
|
+
io.write "\n----------\n\n"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
38
74
|
puts "All done"
|
39
75
|
end
|
40
76
|
end
|
data/lib/zimt/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Martin Schu\xCC\x88rrer"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-08
|
17
|
+
date: 2011-09-08 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- .gitignore
|
87
87
|
- .rvmrc
|
88
88
|
- Gemfile
|
89
|
+
- README.md
|
89
90
|
- Rakefile
|
90
91
|
- bin/zimt
|
91
92
|
- lib/zimt.rb
|