xcodeproj 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68eed1e98656c82c9900d49e52bd8c22b3a82ccf
4
- data.tar.gz: 06e3be0d616290a94bc7bd6abd1b12a8d719e153
3
+ metadata.gz: f83d94cd76866abf1c5e5fec10b67b4a52e8f6ea
4
+ data.tar.gz: 28243c4a1427bdabec3efdc7cadc6fb27e50e8a6
5
5
  SHA512:
6
- metadata.gz: 71f4b96a96f05f285440bd3ee45e75979284d06e4a432e29959ebe9944cd76e87ce7cf373e195155c02ff42b9cd7bf945af411b3c3013d32a128f2a32c6e76fa
7
- data.tar.gz: 8e79143ff631216843b156982acf94dff0f1d12e46d8822dbe147068ef49abfc4a234003315aad21db1cf8bddb3496f54d8da405fba2bbf1e44471e13a4af512
6
+ metadata.gz: 520ebdfb68a640a71d30e4bfd7d298f8c214626a83ba6de858b84df8865dae8590a417bf4f3a34b6de9e4b46962299356874d7d63240acd966f09ca1a0c5294a
7
+ data.tar.gz: 1c2d9f6d83f300361901848ce6c0ab417034797d4e660249117f6123831036a9cdd399df5a4233b35a163ba56db90d43015a626e022a7d2a9d22e3dfc05e12bd
data/README.md CHANGED
@@ -21,7 +21,7 @@ by performing the following command:
21
21
  $ [sudo] gem install xcodeproj
22
22
 
23
23
 
24
- ## Colaborate
24
+ ## Collaborate
25
25
 
26
26
  All Xcodeproj development happens on [GitHub][xcodeproj]. Contributing patches
27
27
  is really easy and gratifying. You even get push access when one of your patches
data/lib/xcodeproj.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Xcodeproj
2
- VERSION = '0.6.0' unless defined? Xcodeproj::VERSION
2
+ VERSION = '0.7.0' unless defined? Xcodeproj::VERSION
3
3
 
4
4
  class PlainInformative < StandardError
5
5
  end
@@ -66,9 +66,9 @@ module Xcodeproj
66
66
  #
67
67
  # @return [String] The serialized internal data.
68
68
  #
69
- def to_s
69
+ def to_s(prefix = nil)
70
70
  [includes.map { |i| "#include \"#{i}\""} +
71
- to_hash.sort_by(&:first).map { |k, v| "#{k} = #{v}" }].join("\n")
71
+ to_hash(prefix).sort_by(&:first).map { |k, v| "#{k} = #{v}" }].join("\n")
72
72
  end
73
73
 
74
74
  # Writes the serialized representation of the internal data to the given
@@ -79,8 +79,8 @@ module Xcodeproj
79
79
  #
80
80
  # @return [void]
81
81
  #
82
- def save_as(pathname)
83
- pathname.open('w') { |file| file << to_s }
82
+ def save_as(pathname, prefix = nil)
83
+ pathname.open('w') { |file| file << to_s(prefix) }
84
84
  end
85
85
 
86
86
  # The hash representation of the xcconfig. The hash includes the
@@ -92,7 +92,7 @@ module Xcodeproj
92
92
  #
93
93
  # @return [Hash] The hash representation
94
94
  #
95
- def to_hash
95
+ def to_hash(prefix = nil)
96
96
  hash = @attributes.dup
97
97
  flags = hash['OTHER_LDFLAGS'] || ''
98
98
  flags = flags.dup.strip
@@ -101,7 +101,11 @@ module Xcodeproj
101
101
  flags << weak_frameworks.to_a.sort.reduce('') {| memo, f | memo << " -weak_framework #{f}" }
102
102
  hash['OTHER_LDFLAGS'] = flags.strip
103
103
  hash.delete('OTHER_LDFLAGS') if flags.strip.empty?
104
- hash
104
+ if prefix
105
+ Hash[hash.map {|k, v| [prefix + k, v]}]
106
+ else
107
+ hash
108
+ end
105
109
  end
106
110
 
107
111
  #-------------------------------------------------------------------------#
@@ -653,6 +653,22 @@ module Xcodeproj
653
653
  end
654
654
 
655
655
  #-------------------------------------------------------------------------#
656
+ # Get list of shared schemes in project
657
+ #
658
+ # @param [String] path
659
+ # project path
660
+ #
661
+ # @return [Array]
662
+ #
663
+ def self.schemes project_path
664
+ schemes = Dir[File.join(project_path, 'xcshareddata', 'xcschemes', '*.xcscheme')].map do |scheme|
665
+ File.basename(scheme, '.xcscheme')
666
+ end
667
+ schemes << File.basename(project_path, '.xcodeproj') if schemes.empty?
668
+ schemes
669
+ end
670
+
671
+ #-------------------------------------------------------------------------#
656
672
 
657
673
  end
658
674
  end
@@ -12,11 +12,13 @@ module Xcodeproj
12
12
  # workspace.
13
13
  #
14
14
  attr_reader :projpaths
15
+ attr_reader :schemes
15
16
 
16
17
  # @param [Array] projpaths @see projpaths
17
18
  #
18
19
  def initialize(*projpaths)
19
20
  @projpaths = projpaths.flatten
21
+ @schemes = {}
20
22
  end
21
23
 
22
24
  #-------------------------------------------------------------------------#
@@ -30,12 +32,14 @@ module Xcodeproj
30
32
  #
31
33
  def self.new_from_xcworkspace(path)
32
34
  begin
33
- from_s(File.read(File.join(path, 'contents.xcworkspacedata')))
35
+ from_s(File.read(File.join(path, 'contents.xcworkspacedata')), File.expand_path(File.dirname(path)))
34
36
  rescue Errno::ENOENT
35
37
  new
36
38
  end
37
39
  end
38
40
 
41
+ #-------------------------------------------------------------------------#
42
+
39
43
  # Returns a workspace generated by reading the contents of the given
40
44
  # XML representation.
41
45
  #
@@ -44,12 +48,14 @@ module Xcodeproj
44
48
  #
45
49
  # @return [Workspace] the generated workspace.
46
50
  #
47
- def self.from_s(xml)
51
+ def self.from_s(xml, workspace_path='')
48
52
  document = REXML::Document.new(xml)
49
53
  projpaths = document.get_elements("/Workspace/FileRef").map do |node|
50
54
  node.attribute("location").to_s.sub(/^group:/, '')
51
55
  end
52
- new(projpaths)
56
+ instance = new(projpaths)
57
+ instance.load_schemes(workspace_path)
58
+ instance
53
59
  end
54
60
 
55
61
  #-------------------------------------------------------------------------#
@@ -64,6 +70,7 @@ module Xcodeproj
64
70
  #
65
71
  def <<(projpath)
66
72
  @projpaths << projpath
73
+ load_schemes_from_project File.expand_path(projpath)
67
74
  end
68
75
 
69
76
  # Checks if the workspace contains the project with the given path.
@@ -109,5 +116,38 @@ module Xcodeproj
109
116
 
110
117
  #-------------------------------------------------------------------------#
111
118
 
119
+ # Load all schemes from all projects in workspace
120
+ #
121
+ # @param [String] workspace_dir_path
122
+ # path of workspaces dir
123
+ #
124
+ # @return [void]
125
+ #
126
+ def load_schemes workspace_dir_path
127
+ @projpaths.each do |projpath|
128
+ project_full_path = File.expand_path(File.join(workspace_dir_path, projpath))
129
+ load_schemes_from_project project_full_path
130
+ end
131
+ end
132
+
133
+ #-------------------------------------------------------------------------#
134
+
135
+ private
136
+ # Load all schemes from project
137
+ #
138
+ # @param [String] project_full_path
139
+ # project full path
140
+ #
141
+ # @return [void]
142
+ #
143
+ def load_schemes_from_project project_full_path
144
+ schemes = Xcodeproj::Project.schemes project_full_path
145
+ schemes.each do |scheme_name|
146
+ @schemes[scheme_name] = project_full_path
147
+ end
148
+ end
149
+
150
+ #-------------------------------------------------------------------------#
151
+
112
152
  end
113
153
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcodeproj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-23 00:00:00.000000000 Z
11
+ date: 2013-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport