xcconfig 0.1.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 +7 -0
- data/bin/xcconfig +47 -0
- data/lib/project.rb +45 -0
- data/lib/utility.rb +105 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 154d5596b807e2479f52af33422cbb5316f4b92c
|
4
|
+
data.tar.gz: d51550d0ae141a5d006495722cc12caa030a3283
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 24c311040d270e856af8560b2808041aee222d6014d3c1032526091e618e0f86880d77035749583601daea8fb9dff90f7003ea93b9b36d705628ddb740549014
|
7
|
+
data.tar.gz: 7bbdc700642957bef206a842cbec88f11aae8b73a873c547969bae60e5a40262264a230fb04bde8197a1bca1f684d868c714da0e411a2ba3d24ee781a7af9b3a
|
data/bin/xcconfig
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'xcodeproj'
|
4
|
+
require 'colored'
|
5
|
+
require 'project.rb'
|
6
|
+
require 'utility.rb'
|
7
|
+
|
8
|
+
# Read config file
|
9
|
+
|
10
|
+
if File.file?("Configfile") == false
|
11
|
+
|
12
|
+
puts "No Configfile found!".red
|
13
|
+
exit
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
file = File.read("Configfile")
|
18
|
+
project_spec = eval(file)
|
19
|
+
|
20
|
+
# Open project
|
21
|
+
project = Xcodeproj::Project::open(project_spec.file_name)
|
22
|
+
|
23
|
+
# Add files to project if necessary and set config files for configurations on project level
|
24
|
+
Xcconfig::add_config_files(project, project, project_spec.config_files)
|
25
|
+
|
26
|
+
# Set config files for configurations on target level
|
27
|
+
project_spec.targets.each do |target_spec|
|
28
|
+
|
29
|
+
target = nil
|
30
|
+
|
31
|
+
project.targets.each do |t|
|
32
|
+
|
33
|
+
if t.name == target_spec.name
|
34
|
+
|
35
|
+
target = t
|
36
|
+
break
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
Xcconfig::add_config_files(project, target, target_spec.config_files)
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
# Save project
|
47
|
+
project.save(project_spec.file_name)
|
data/lib/project.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
class Target
|
2
|
+
|
3
|
+
attr_accessor :name
|
4
|
+
attr_reader :config_files
|
5
|
+
|
6
|
+
def initialize(name)
|
7
|
+
|
8
|
+
@config_files = {}
|
9
|
+
@name = name
|
10
|
+
|
11
|
+
yield self
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
class Project
|
18
|
+
|
19
|
+
attr_reader :config_files
|
20
|
+
attr_reader :targets
|
21
|
+
attr_accessor :name
|
22
|
+
|
23
|
+
def initialize(name)
|
24
|
+
|
25
|
+
@name = name
|
26
|
+
@targets = []
|
27
|
+
@config_files = {}
|
28
|
+
|
29
|
+
yield self
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def target(name, &block)
|
34
|
+
|
35
|
+
targets << Target.new(name, &block)
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
def file_name
|
40
|
+
|
41
|
+
return @name + ".xcodeproj"
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/lib/utility.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'xcodeproj'
|
2
|
+
|
3
|
+
def source(repo)
|
4
|
+
|
5
|
+
`git clone #{repo}`
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
module Xcconfig
|
10
|
+
|
11
|
+
def Xcconfig.merge_files_array(files)
|
12
|
+
|
13
|
+
if files == nil
|
14
|
+
|
15
|
+
return nil
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
resources = []
|
20
|
+
files.each do |source|
|
21
|
+
|
22
|
+
resources.concat Dir[source]
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
return resources
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def Xcconfig.add_groups_for_files(project,files)
|
31
|
+
|
32
|
+
files.each do |path|
|
33
|
+
|
34
|
+
groups = File.dirname(path).split("/")
|
35
|
+
concate = ""
|
36
|
+
|
37
|
+
groups.each do |g|
|
38
|
+
|
39
|
+
concate += g + "/"
|
40
|
+
group_ref = project.main_group.find_subpath(concate, true)
|
41
|
+
group_ref.set_path(g)
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def Xcconfig.get_or_add_file(project,file)
|
50
|
+
|
51
|
+
filename = File.basename(file)
|
52
|
+
dir = File.dirname(file)
|
53
|
+
|
54
|
+
group = project.main_group.find_subpath(dir, false)
|
55
|
+
file_ref = group.find_file_by_path(filename)
|
56
|
+
|
57
|
+
unless file_ref != nil
|
58
|
+
|
59
|
+
file_ref = group.new_file(filename)
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
return file_ref
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
def Xcconfig.get_or_add_files(project, files)
|
68
|
+
|
69
|
+
resources = merge_files_array(files)
|
70
|
+
|
71
|
+
add_groups_for_files(project, resources)
|
72
|
+
|
73
|
+
resources.each do |source|
|
74
|
+
|
75
|
+
get_or_add_file(project,source)
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
def Xcconfig.add_config_files(project, entity, config_files)
|
82
|
+
|
83
|
+
# Add configuration group
|
84
|
+
|
85
|
+
add_groups_for_files(project, config_files.values)
|
86
|
+
|
87
|
+
config_files.each do |config,file_name|
|
88
|
+
|
89
|
+
unless file_name == nil
|
90
|
+
|
91
|
+
file = get_or_add_file(project,file_name)
|
92
|
+
|
93
|
+
configuration = entity.build_configuration_list[config]
|
94
|
+
|
95
|
+
unless configuration == nil
|
96
|
+
configuration.base_configuration_reference = file
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xcconfig
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jens Meder
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: xcodeproj
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0.beta.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0.beta.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: colored
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.11'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.11'
|
55
|
+
description: An xcconfig management tool
|
56
|
+
email:
|
57
|
+
- gems@jensmeder.de
|
58
|
+
executables:
|
59
|
+
- xcconfig
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- bin/xcconfig
|
64
|
+
- lib/project.rb
|
65
|
+
- lib/utility.rb
|
66
|
+
homepage: https://www.github.com/jensmeder/xcconfig
|
67
|
+
licenses:
|
68
|
+
- MIT
|
69
|
+
metadata: {}
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements: []
|
85
|
+
rubyforge_project:
|
86
|
+
rubygems_version: 2.5.0
|
87
|
+
signing_key:
|
88
|
+
specification_version: 4
|
89
|
+
summary: xcconfig downloads xcconfig files from a given git repository and updates
|
90
|
+
an Xcode project based on a Configfile
|
91
|
+
test_files: []
|