xcodeproj 0.25.1 → 0.26.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 362652d47890e422884822cbddea7e111300f631
4
- data.tar.gz: 530b5a22dc14ef0af7f4564f57be23cd850c3f4e
3
+ metadata.gz: 2c231842b2ee35dc87dd3005deff2ef60557a9fe
4
+ data.tar.gz: 78d9bb3482208d8d9d66584ef465de0c28909988
5
5
  SHA512:
6
- metadata.gz: cb7de4876f0254a035c46d339f084c872a539c38d3dab4f491ad26fb2c2814c85ea997ba0fcb149dbab9b3bf693cfd06cefa99af7fb35337d9ac0eec397986e2
7
- data.tar.gz: 10195a51baf29a6af0e4daba851e41b5c77a9ce8a452848d176332a1ccff63c723db828a58b3a4f9504328a738c8665daf005ebbb641b2c229d0d53d4c433d45
6
+ metadata.gz: 1e530ccfdd06efed97f4ae18e44b892a0fbeaa4da6fedf4ef53f0e56682bf6a5b83e575669223e652f402b7ccf9b9e989866fe45d0a3263825a1a605ee59f0b4
7
+ data.tar.gz: 2fc50ec63b9e481de45afaae65a0ce544323b5fe90e36da80b8e5a1c7511ef74f7b5a8a489c6dfe90632eca55f47cb0766d4671be0e6af6ddaeda2f6035864ff
data/bin/xcodeproj CHANGED
@@ -10,4 +10,4 @@ end
10
10
 
11
11
  require 'xcodeproj'
12
12
 
13
- Xcodeproj::Command.run(*ARGV)
13
+ Xcodeproj::Command.run(ARGV)
data/lib/xcodeproj.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  module Xcodeproj
2
2
  require 'pathname'
3
+ require 'claide'
3
4
 
4
5
  class PlainInformative < StandardError
6
+ include CLAide::InformativeError
5
7
  end
6
8
 
7
9
  class Informative < PlainInformative
@@ -1,126 +1,28 @@
1
1
  module Xcodeproj
2
2
  require 'colored'
3
+ require 'claide'
3
4
 
4
- class Command
5
- autoload :ConfigDump, 'xcodeproj/command/config_dump'
6
- autoload :TargetDiff, 'xcodeproj/command/target_diff'
7
- autoload :ProjectDiff, 'xcodeproj/command/project_diff'
8
- autoload :Show, 'xcodeproj/command/show'
9
- autoload :Sort, 'xcodeproj/command/sort'
5
+ class Command < CLAide::Command
6
+ require 'xcodeproj/command/config_dump'
7
+ require 'xcodeproj/command/target_diff'
8
+ require 'xcodeproj/command/project_diff'
9
+ require 'xcodeproj/command/show'
10
+ require 'xcodeproj/command/sort'
10
11
 
11
- class Help < StandardError
12
- def initialize(command_class, argv, unrecognized_command = nil)
13
- @command_class, @argv, @unrecognized_command = command_class, argv, unrecognized_command
14
- end
15
-
16
- def message
17
- message = [
18
- '',
19
- @command_class.banner.gsub(/\$ pod (.*)/, '$ pod \1'.green),
20
- '',
21
- 'Options:',
22
- '',
23
- options,
24
- "\n",
25
- ].join("\n")
26
- message << "[!] Unrecognized command: `#{@unrecognized_command}'\n".red if @unrecognized_command
27
- message << "[!] Unrecognized argument#{@argv.count > 1 ? 's' : ''}: `#{@argv.join(' - ')}'\n".red unless @argv.empty?
28
- message
29
- end
30
-
31
- private
32
-
33
- def options
34
- options = @command_class.options
35
- keys = options.map(&:first)
36
- key_size = keys.reduce(0) { |size, key| key.size > size ? key.size : size }
37
- options.map { |key, desc| " #{key.ljust(key_size)} #{desc}" }.join("\n")
38
- end
39
- end
40
-
41
- class ARGV < Array
42
- def options
43
- select { |x| x.to_s[0, 1] == '-' }
44
- end
45
-
46
- def arguments
47
- self - options
48
- end
49
-
50
- def option(name)
51
- !!delete(name)
52
- end
53
-
54
- def shift_argument
55
- (arg = arguments[0]) && delete(arg)
56
- end
57
- end
58
-
59
- def self.banner
60
- commands = ['config-dump', 'target-diff', 'project-diff', 'show', 'sort']
61
- banner = "To see help for the available commands run:\n\n"
62
- banner + commands.map { |cmd| " * $ xcodeproj #{cmd.green} --help" }.join("\n")
63
- end
64
-
65
- def self.options
66
- [
67
- ['--help', 'Show help information'],
68
- # ['--silent', 'Print nothing'],
69
- # ['--no-color', 'Print output without color'],
70
- # ['--verbose', 'Print more information while working'],
71
- ['--version', 'Prints the version of Xcodeproj'],
72
- ]
73
- end
12
+ self.abstract_command = true
13
+ self.command = 'xcodeproj'
14
+ self.version = VERSION
15
+ self.description = 'Xcodeproj lets you create and modify Xcode projects from Ruby.'
16
+ self.plugin_prefixes = %w(claide xcodeproj)
74
17
 
75
- def self.run(*argv)
76
- sub_command = parse(*argv)
77
- sub_command.run
78
-
79
- rescue Interrupt
80
- puts '[!] Cancelled'.red
81
- # Config.instance.verbose? ? raise : exit(1)
82
- exit(1)
83
-
84
- rescue => e
85
- puts e.message
86
- unless e.is_a?(Informative) || e.is_a?(Help)
87
- puts e.backtrace
88
- end
89
- exit 1
90
- end
91
-
92
- def self.parse(*argv)
93
- argv = ARGV.new(argv)
94
- if argv.option('--version')
95
- require 'xcodeproj/gem_version'
96
- puts VERSION
97
- exit!(0)
98
- end
99
-
100
- show_help = argv.option('--help')
101
-
102
- String.send(:define_method, :colorize) { |string, _| string } if argv.option('--no-color')
103
-
104
- command_class = case command_argument = argv.shift_argument
105
- when 'config-dump' then ConfigDump
106
- when 'target-diff' then TargetDiff
107
- when 'project-diff' then ProjectDiff
108
- when 'show' then Show
109
- when 'sort' then Sort
110
- end
111
-
112
- if command_class.nil?
113
- raise Help.new(self, argv, command_argument)
114
- elsif show_help
115
- raise Help.new(command_class, argv)
116
- else
117
- command_class.new(argv)
18
+ def initialize(argv)
19
+ super
20
+ unless self.ansi_output?
21
+ String.send(:define_method, :colorize) { |string, _| string }
118
22
  end
119
23
  end
120
24
 
121
- def initialize(argv)
122
- raise Help.new(self.class, argv)
123
- end
25
+ private
124
26
 
125
27
  def xcodeproj_path
126
28
  unless @xcodeproj_path
@@ -136,11 +38,23 @@ module Xcodeproj
136
38
  'working directory. Please specify which to use ' \
137
39
  'with the `--project` option.'
138
40
  end
139
- @xcodeproj_path = File.expand_path(xcodeproj_path)
41
+ @xcodeproj_path = Pathname.new(xcodeproj_path).expand_path
140
42
  end
141
43
  @xcodeproj_path
142
44
  end
143
45
 
46
+ def open_project!(*paths)
47
+ if paths.empty?
48
+ [xcodeproj]
49
+ else
50
+ paths.map { |path| Project.open(path) }
51
+ end
52
+ end
53
+
54
+ def xcodeproj_path=(path)
55
+ @xcodeproj_path = path && Pathname.new(path).expand_path
56
+ end
57
+
144
58
  def xcodeproj
145
59
  @xcodeproj ||= Project.open(xcodeproj_path)
146
60
  end
@@ -1,24 +1,28 @@
1
1
  module Xcodeproj
2
2
  class Command
3
3
  class ConfigDump < Command
4
- def self.banner
5
- require 'active_support/core_ext/string/strip.rb'
6
- <<-eos.strip_heredoc
4
+ self.description = <<-eos
7
5
  Dumps the build settings of all project targets for all configurations in
8
6
  directories named by the target in given output directory.
9
7
 
10
- $ config-dump PROJECT OUTPUT
8
+ It extracts common build settings in a per target base.xcconfig file.
11
9
 
12
- It extracts common build settings in a per target base.xcconfig file.
13
- If no `PROJECT` is specified then the current work directory is searched
14
- for one.
15
- If no `OUTPUT` is specified then the project directory will be used.%)
10
+ If no `PROJECT` is specified then the current work directory is searched
11
+ for one.
12
+
13
+ If no `OUTPUT` is specified then the project directory will be used.
16
14
  eos
17
- end
15
+
16
+ self.summary = 'Dumps the build settings of all project targets for ' \
17
+ 'all configurations in directories named by the target ' \
18
+ 'in the given output directory.'
19
+
20
+ self.arguments = [
21
+ CLAide::Argument.new('PROJECT', false),
22
+ ]
18
23
 
19
24
  def initialize(argv)
20
- xcodeproj_path = argv.shift_argument
21
- @xcodeproj_path = File.expand_path(xcodeproj_path) if xcodeproj_path
25
+ self.xcodeproj_path = argv.shift_argument
22
26
 
23
27
  @output_path = Pathname(argv.shift_argument || '.')
24
28
  unless @output_path.directory?
@@ -28,6 +32,11 @@ module Xcodeproj
28
32
  super unless argv.empty?
29
33
  end
30
34
 
35
+ def validate!
36
+ super
37
+ open_project!
38
+ end
39
+
31
40
  def run
32
41
  dump_all_configs(xcodeproj, 'Project')
33
42
 
@@ -1,38 +1,42 @@
1
1
  module Xcodeproj
2
2
  class Command
3
3
  class ProjectDiff < Command
4
- def self.banner
5
- %{Shows the difference between two projects:
4
+ self.summary = 'Shows the difference between two projects'
6
5
 
7
- $ project-diff PROJECT_1 PROJECT_2
6
+ self.description = summary + <<-EOS.gsub(/ {8}/, '')
8
7
 
9
- It shows the difference in a UUID agnostic fashion.
8
+ It shows the difference in a UUID agnostic fashion.
10
9
 
11
- To reduce the noise (and to simplify implementation) differences in the
12
- order of arrays are ignored.}
13
- end
10
+ To reduce the noise (and to simplify implementation) differences in the
11
+ order of arrays are ignored.
12
+ EOS
14
13
 
15
14
  def self.options
16
- [['--ignore KEY', 'A key to ignore in the comparison. Can be specified multiple times.']].concat(super)
15
+ [
16
+ ['--ignore=KEY', 'A key to ignore in the comparison. Can be specified multiple times.'],
17
+ ].concat(super)
17
18
  end
18
19
 
20
+ self.arguments = [
21
+ CLAide::Argument.new('PROJECT1', true),
22
+ CLAide::Argument.new('PROJECT2', true),
23
+ ]
24
+
19
25
  def initialize(argv)
20
26
  @path_project1 = argv.shift_argument
21
27
  @path_project2 = argv.shift_argument
22
- unless @path_project1 && @path_project2
23
- raise Informative, 'Two project paths are required.'
24
- end
25
- @keys_to_ignore = []
26
- while (idx = argv.index('--ignore'))
27
- @keys_to_ignore << argv.delete_at(idx + 1)
28
- argv.delete_at(idx)
29
- end
30
- super unless argv.empty?
28
+ @keys_to_ignore = argv.all_options('ignore')
29
+ super
30
+ end
31
+
32
+ def validate!
33
+ super
34
+ @project1, @project2 = open_project!(@path_project1, @path_project2)
31
35
  end
32
36
 
33
37
  def run
34
- hash_1 = Project.new(@path_project1).to_tree_hash.dup
35
- hash_2 = Project.new(@path_project2).to_tree_hash.dup
38
+ hash_1 = @project1.to_tree_hash.dup
39
+ hash_2 = @project2.to_tree_hash.dup
36
40
  @keys_to_ignore.each do |key|
37
41
  Differ.clean_hash!(hash_1, key)
38
42
  Differ.clean_hash!(hash_2, key)
@@ -42,9 +46,9 @@ module Xcodeproj
42
46
 
43
47
  require 'yaml'
44
48
  yaml = diff.to_yaml
45
- yaml = yaml.gsub(@path_project1, @path_project1.cyan)
46
- yaml = yaml.gsub(@path_project2, @path_project2.magenta)
47
- yaml = yaml.gsub(':diff:', 'diff:'.yellow)
49
+ yaml.gsub!(@path_project1, @path_project1.cyan)
50
+ yaml.gsub!(@path_project2, @path_project2.magenta)
51
+ yaml.gsub!(':diff:', 'diff:'.yellow)
48
52
  puts yaml
49
53
  end
50
54
  end
@@ -1,45 +1,44 @@
1
1
  module Xcodeproj
2
2
  class Command
3
3
  class Show < Command
4
- def self.banner
5
- %(Shows an overview of a project in a YAML representation.'
6
-
7
- $ show [PROJECT]
8
-
9
- If no `PROJECT' is specified then the current work directory is searched
10
- for one.)
11
- end
4
+ self.summary = 'Shows an overview of a project in a YAML representation.'
12
5
 
13
6
  def self.options
14
7
  [
15
- ['--format [hash|tree_hash|raw]', 'YAML output format, optional'],
8
+ ['--format=[hash|tree_hash|raw]', 'YAML output format'],
16
9
  ].concat(super)
17
10
  end
18
11
 
12
+ self.arguments = [
13
+ CLAide::Argument.new('PROJECT', false),
14
+ ]
15
+
19
16
  def initialize(argv)
20
- xcodeproj_path = argv.shift_argument
21
- @xcodeproj_path = File.expand_path(xcodeproj_path) if xcodeproj_path
17
+ self.xcodeproj_path = argv.shift_argument
18
+ @output_format = argv.option('format')
19
+ @output_format &&= @output_format.to_sym
20
+ super
21
+ end
22
22
 
23
- if argv.option('--format')
24
- @output_format = argv.shift_argument
23
+ def validate
24
+ super
25
+ unless [nil, :hash, :tree_hash, :raw].include?(@output_format)
26
+ help! "Unknown format `#{@output_format}`"
25
27
  end
26
-
27
- super unless argv.empty?
28
+ open_project!
28
29
  end
29
30
 
30
31
  def run
31
32
  require 'yaml'
32
33
 
33
34
  if @output_format
34
- case @output_format.to_sym
35
+ case @output_format
35
36
  when :hash
36
37
  puts xcodeproj.to_hash.to_yaml
37
38
  when :tree_hash
38
39
  puts xcodeproj.to_tree_hash.to_yaml
39
40
  when :raw
40
41
  puts xcodeproj.to_yaml
41
- else
42
- raise Informative, "Unknowh format #{@output_format}!"
43
42
  end
44
43
  return
45
44
  end
@@ -1,19 +1,26 @@
1
1
  module Xcodeproj
2
2
  class Command
3
3
  class Sort < Command
4
- def self.banner
5
- %(Sorts the give project
4
+ self.description = <<-eos
5
+ Sorts the given project.
6
6
 
7
- $ sort [PROJECT]
7
+ If no `PROJECT' is specified then the current work directory is searched for one.
8
+ eos
8
9
 
9
- If no `PROJECT' is specified then the current work directory is searched
10
- for one.)
11
- end
10
+ self.summary = 'Sorts the give project.'
11
+
12
+ self.arguments = [
13
+ CLAide::Argument.new('PROJECT', false),
14
+ ]
12
15
 
13
16
  def initialize(argv)
14
- xcodeproj_path = argv.shift_argument
15
- @xcodeproj_path = File.expand_path(xcodeproj_path) if xcodeproj_path
16
- super unless argv.empty?
17
+ self.xcodeproj_path = argv.shift_argument
18
+ super
19
+ end
20
+
21
+ def validate!
22
+ super
23
+ open_project!
17
24
  end
18
25
 
19
26
  def run
@@ -1,13 +1,7 @@
1
1
  module Xcodeproj
2
2
  class Command
3
3
  class TargetDiff < Command
4
- def self.banner
5
- %(Shows the difference between two targets:
6
-
7
- $ targets-diff [target 1] [target 2]
8
-
9
- Only supports build source files atm.)
10
- end
4
+ self.summary = 'Shows the difference between two targets'
11
5
 
12
6
  def self.options
13
7
  [
@@ -15,13 +9,21 @@ module Xcodeproj
15
9
  ].concat(super)
16
10
  end
17
11
 
12
+ self.arguments = [
13
+ CLAide::Argument.new('TARGET1', true),
14
+ CLAide::Argument.new('TARGET2', true),
15
+ ]
16
+
18
17
  def initialize(argv)
19
18
  @target1 = argv.shift_argument
20
19
  @target2 = argv.shift_argument
21
- if argv.option('--project')
22
- @xcodeproj_path = File.expand_path(argv.shift_argument)
23
- end
24
- super unless argv.empty?
20
+ self.xcodeproj_path = argv.option('--project')
21
+ super
22
+ end
23
+
24
+ def validate!
25
+ super
26
+ open_project!
25
27
  end
26
28
 
27
29
  def run
@@ -1,5 +1,5 @@
1
1
  module Xcodeproj
2
2
  # The version of the xcodeproj gem.
3
3
  #
4
- VERSION = '0.25.1' unless defined? Xcodeproj::VERSION
4
+ VERSION = '0.26.0' unless defined? Xcodeproj::VERSION
5
5
  end
@@ -3,6 +3,7 @@ require 'securerandom'
3
3
 
4
4
  require 'xcodeproj/project/object'
5
5
  require 'xcodeproj/project/project_helper'
6
+ require 'xcodeproj/project/uuid_generator'
6
7
  require 'xcodeproj/plist_helper'
7
8
 
8
9
  module Xcodeproj
@@ -321,6 +322,21 @@ module Xcodeproj
321
322
  Xcodeproj.write_plist(to_hash, file)
322
323
  end
323
324
 
325
+ # Replaces all the UUIDs in the project with deterministic MD5 checksums.
326
+ #
327
+ # @note The current sorting of the project is taken into account when
328
+ # generating the new UUIDs.
329
+ #
330
+ # @note This method should only be used for entirely machine-generated
331
+ # projects, as true UUIDs are useful for tracking changes in the
332
+ # project.
333
+ #
334
+ # @return [void]
335
+ #
336
+ def predictabilize_uuids
337
+ UUIDGenerator.new(self).generate!
338
+ end
339
+
324
340
  public
325
341
 
326
342
  # @!group Creating objects
@@ -0,0 +1,100 @@
1
+ module Xcodeproj
2
+ class Project
3
+ class UUIDGenerator
4
+ def initialize(project)
5
+ @project = project
6
+ @new_objects_by_uuid = {}
7
+ @paths_by_object = {}
8
+ end
9
+
10
+ def generate!
11
+ all_objects = @project.objects
12
+ generate_paths(@project.root_object)
13
+ switch_uuids(all_objects)
14
+ verify_no_duplicates!(all_objects)
15
+ fixup_uuid_references
16
+ @project.instance_variable_set(:@generated_uuids, @project.instance_variable_get(:@available_uuids))
17
+ @project.instance_variable_set(:@objects_by_uuid, @new_objects_by_uuid)
18
+ end
19
+
20
+ private
21
+
22
+ def verify_no_duplicates!(all_objects)
23
+ duplicates = all_objects - @new_objects_by_uuid.values
24
+ raise "[Xcodeproj] Generated duplicate UUIDs:\n\n" <<
25
+ duplicates.map { |d| "#{d.isa} -- #{@paths_by_object[d]}" }.join("\n") unless duplicates.empty?
26
+ end
27
+
28
+ def fixup_uuid_references
29
+ fixup = ->(object, attr) do
30
+ if object.respond_to?(attr) && link = @project.objects_by_uuid[object.send(attr)]
31
+ object.send(:"#{attr}=", link.uuid)
32
+ end
33
+ end
34
+ @project.objects.each do |object|
35
+ [:remote_global_id_string, :container_portal, :target_proxy].each do |attr|
36
+ fixup[object, attr]
37
+ end
38
+ end
39
+ end
40
+
41
+ def generate_paths(object, path = '')
42
+ @paths_by_object[object] = path
43
+
44
+ object.to_one_attributes.each do |attrb|
45
+ obj = attrb.get_value(object)
46
+ generate_paths(obj, path + '/' << attrb.plist_name) if obj
47
+ end
48
+
49
+ object.to_many_attributes.each do |attrb|
50
+ attrb.get_value(object).each do |o|
51
+ generate_paths(o, path + '/' << attrb.plist_name << "/#{path_component_for_object(o)}")
52
+ end
53
+ end
54
+
55
+ object.references_by_keys_attributes.each do |attrb|
56
+ attrb.get_value(object).each do |dictionary|
57
+ dictionary.each do |key, value|
58
+ generate_paths(value, path + '/' << attrb.plist_name << "/k:#{key}/#{path_component_for_object(value)}")
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ def switch_uuids(objects)
65
+ objects.each do |object|
66
+ next unless path = @paths_by_object[object]
67
+ uuid = uuid_for_path(path)
68
+ object.instance_variable_set(:@uuid, uuid)
69
+ @new_objects_by_uuid[uuid] = object
70
+ end
71
+ end
72
+
73
+ def uuid_for_path(path)
74
+ Digest::MD5.hexdigest(path).upcase
75
+ end
76
+
77
+ def path_component_for_object(object)
78
+ hash = object.to_tree_hash
79
+ tree_hash_to_path(hash)
80
+ end
81
+
82
+ def tree_hash_to_path(object)
83
+ case object
84
+ when Hash
85
+ object.sort.each_with_object('') do |(key, value), string|
86
+ string << key << ':' << tree_hash_to_path(value) << ','
87
+ end
88
+ when Array
89
+ object.map do |value|
90
+ tree_hash_to_path(value)
91
+ end.join(',')
92
+ when String
93
+ object
94
+ else
95
+ raise "[Xcodeproj] Unrecognized object `#{hash}` in #tree_hash_to_path"
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcodeproj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.1
4
+ version: 0.26.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: 2015-06-27 00:00:00.000000000 Z
11
+ date: 2015-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: colored
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: claide
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.0
41
55
  description: Xcodeproj lets you create and modify Xcode projects from Ruby. Script
42
56
  boring management tasks or build Xcode-friendly libraries. Also includes support
43
57
  for Xcode workspaces (.xcworkspace) and configuration files (.xcconfig).
@@ -85,6 +99,7 @@ files:
85
99
  - lib/xcodeproj/project/object_dictionary.rb
86
100
  - lib/xcodeproj/project/object_list.rb
87
101
  - lib/xcodeproj/project/project_helper.rb
102
+ - lib/xcodeproj/project/uuid_generator.rb
88
103
  - lib/xcodeproj/scheme.rb
89
104
  - lib/xcodeproj/user_interface.rb
90
105
  - lib/xcodeproj/workspace.rb
@@ -100,12 +115,12 @@ require_paths:
100
115
  - lib
101
116
  required_ruby_version: !ruby/object:Gem::Requirement
102
117
  requirements:
103
- - - ">="
118
+ - - '>='
104
119
  - !ruby/object:Gem::Version
105
120
  version: 2.0.0
106
121
  required_rubygems_version: !ruby/object:Gem::Requirement
107
122
  requirements:
108
- - - ">="
123
+ - - '>='
109
124
  - !ruby/object:Gem::Version
110
125
  version: '0'
111
126
  requirements: []