phoenx 0.3.2 → 0.3.3
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 +4 -4
- data/lib/phoenx/cli/cli_factory.rb +0 -78
- data/lib/phoenx/cli/command.rb +1 -68
- data/lib/phoenx/cli/option.rb +1 -5
- data/lib/phoenx/entities/configuration.rb +0 -3
- data/lib/phoenx/entities/dependency.rb +0 -3
- data/lib/phoenx/entities/project.rb +0 -11
- data/lib/phoenx/entities/scheme.rb +0 -5
- data/lib/phoenx/entities/target.rb +0 -19
- data/lib/phoenx/entities/workspace.rb +6 -9
- data/lib/phoenx/gem_version.rb +1 -1
- data/lib/phoenx/use_cases/extract_build_settings.rb +0 -20
- data/lib/phoenx/use_cases/generate_project.rb +0 -44
- data/lib/phoenx/use_cases/generate_target.rb +0 -210
- data/lib/phoenx/use_cases/generate_workspace.rb +1 -29
- data/lib/phoenx/use_cases/target/add_header.rb +0 -32
- data/lib/phoenx/utilities/files_utils.rb +0 -11
- data/lib/phoenx/utilities/xcodeproj_utils.rb +0 -43
- data/lib/phoenx/validators/project_validator.rb +2 -8
- data/lib/phoenx/validators/workspace_validator.rb +1 -10
- metadata +2 -2
@@ -3,78 +3,50 @@ require 'colored'
|
|
3
3
|
module Phoenx
|
4
4
|
|
5
5
|
class GenerateWorkspace
|
6
|
-
|
7
6
|
:project_files
|
8
7
|
:workspace
|
9
8
|
|
10
9
|
def initialize(workspace)
|
11
|
-
|
12
10
|
@workspace = workspace
|
13
11
|
@project_files = []
|
14
|
-
|
15
12
|
end
|
16
13
|
|
17
14
|
def generate_workspace
|
18
|
-
|
19
15
|
workspace = Xcodeproj::Workspace.new(@workspace.main_project_path + @workspace.main_project_name + "." + XCODE_PROJECT_EXTENSION)
|
20
|
-
|
21
16
|
@workspace.projects.each do |key,value|
|
22
|
-
|
23
17
|
workspace << value + key + "." + XCODE_PROJECT_EXTENSION
|
24
|
-
|
25
18
|
end
|
26
|
-
|
27
19
|
workspace.save_as(@workspace.name + "." + XCODE_WORKSPACE_EXTENSION)
|
28
|
-
|
29
20
|
end
|
30
21
|
|
31
22
|
def generate_project(name, value)
|
32
|
-
|
33
23
|
path = value
|
34
|
-
|
35
24
|
if path == nil
|
36
|
-
|
37
25
|
path = '.'
|
38
|
-
|
39
26
|
end
|
40
|
-
|
41
27
|
abort "Missing project folder ".red + path.bold unless Dir.exists?(path)
|
42
|
-
|
43
28
|
Dir.chdir(path) do
|
44
|
-
|
45
29
|
file_name = name + '.' + PROJECT_EXTENSION
|
46
30
|
specs = Dir[file_name]
|
47
|
-
|
48
31
|
puts "> Project ".green + name.bold
|
49
|
-
|
50
32
|
abort "Missing project specification ".red + (path + file_name).bold unless specs.first
|
51
|
-
|
52
33
|
file = File.read(specs.first)
|
53
34
|
spec = eval(file)
|
54
|
-
|
55
35
|
generator = Phoenx::GenerateProject.new spec
|
56
36
|
generator.build
|
57
37
|
end
|
58
|
-
|
59
38
|
end
|
60
39
|
|
61
40
|
def generate_projects
|
62
|
-
|
63
|
-
@workspace.projects.each do |key,value|
|
64
|
-
|
41
|
+
@workspace.generated_projects.each do |key,value|
|
65
42
|
self.generate_project(key,value)
|
66
|
-
|
67
43
|
end
|
68
|
-
|
69
44
|
self.generate_project(@workspace.main_project_name,@workspace.main_project_path)
|
70
|
-
|
71
45
|
end
|
72
46
|
|
73
47
|
def generate
|
74
|
-
|
75
48
|
self.generate_projects
|
76
49
|
self.generate_workspace
|
77
|
-
|
78
50
|
end
|
79
51
|
|
80
52
|
end
|
@@ -3,58 +3,39 @@ module Phoenx
|
|
3
3
|
module Target
|
4
4
|
|
5
5
|
class HeaderBuilder
|
6
|
-
|
7
6
|
attr_reader :project
|
8
7
|
attr_reader :target
|
9
|
-
|
10
8
|
attr_reader :target_spec
|
11
|
-
|
12
9
|
attr_reader :umbrella_headers
|
13
10
|
|
14
11
|
def initialize(project, target, target_spec)
|
15
|
-
|
16
12
|
@project = project
|
17
13
|
@target = target
|
18
|
-
|
19
14
|
@target_spec = target_spec
|
20
|
-
|
21
15
|
@umbrella_headers = []
|
22
|
-
|
23
16
|
end
|
24
17
|
|
25
18
|
def build
|
26
|
-
|
27
19
|
self.add_public_headers
|
28
20
|
self.add_project_headers
|
29
21
|
self.add_private_headers
|
30
|
-
|
31
22
|
self.generate_umbrella_header
|
32
|
-
|
33
23
|
end
|
34
24
|
|
35
25
|
def add_public_headers
|
36
|
-
|
37
26
|
self.add_headers(@target_spec.public_headers, ATTRIBUTES_PUBLIC_HEADERS, true)
|
38
|
-
|
39
27
|
end
|
40
28
|
|
41
29
|
def add_project_headers
|
42
|
-
|
43
30
|
self.add_headers(@target_spec.project_headers, ATTRIBUTES_PROJECT_HEADERS, true)
|
44
|
-
|
45
31
|
end
|
46
32
|
|
47
33
|
def add_private_headers
|
48
|
-
|
49
34
|
self.add_headers(@target_spec.private_headers, ATTRIBUTES_PRIVATE_HEADERS, false)
|
50
|
-
|
51
35
|
end
|
52
36
|
|
53
|
-
|
54
37
|
def generate_umbrella_header
|
55
|
-
|
56
38
|
unless @target_spec.umbrella_header == nil
|
57
|
-
|
58
39
|
entries = @umbrella_headers.map{ |header|
|
59
40
|
unless @target_spec.module_name == nil
|
60
41
|
import = '<' + @target_spec.module_name + '/' + File.basename(header) + '>'
|
@@ -63,44 +44,31 @@ module Phoenx
|
|
63
44
|
end
|
64
45
|
'#import ' + import
|
65
46
|
}.sort
|
66
|
-
|
67
47
|
open(@target_spec.umbrella_header, "w") { |file|
|
68
48
|
entries.each { |header| file.puts header }
|
69
49
|
}
|
70
|
-
|
71
50
|
self.add_header(@target_spec.umbrella_header, ATTRIBUTES_PUBLIC_HEADERS)
|
72
|
-
|
73
51
|
end
|
74
|
-
|
75
52
|
end
|
76
53
|
|
77
54
|
def add_headers(header_files, attributes, add_to_umbrella_header)
|
78
|
-
|
79
55
|
headers = Phoenx.merge_files_array(header_files)
|
80
|
-
|
81
56
|
unless !header_files || header_files.empty? || !headers.empty?
|
82
57
|
puts "No #{attributes["ATTRIBUTES"].first} headers found".yellow
|
83
58
|
end
|
84
|
-
|
85
59
|
Phoenx.add_groups_for_files(@project, headers)
|
86
|
-
|
87
60
|
headers.each do |header|
|
88
|
-
|
89
61
|
self.add_header(header, attributes)
|
90
|
-
|
91
62
|
end
|
92
|
-
|
93
63
|
if add_to_umbrella_header
|
94
64
|
@umbrella_headers += headers
|
95
65
|
else
|
96
66
|
@umbrella_headers -= headers
|
97
67
|
end
|
98
|
-
|
99
68
|
end
|
100
69
|
|
101
70
|
def add_header(header, attributes)
|
102
71
|
file = Phoenx.get_or_add_file(@project, header)
|
103
|
-
|
104
72
|
build_file = @target.headers_build_phase.add_file_reference(file, true)
|
105
73
|
build_file.settings = attributes
|
106
74
|
end
|
@@ -1,28 +1,17 @@
|
|
1
1
|
module Phoenx
|
2
2
|
|
3
3
|
def Phoenx.merge_files_array(files, excluded_files = nil)
|
4
|
-
|
5
4
|
if files == nil
|
6
|
-
|
7
5
|
return nil
|
8
|
-
|
9
6
|
end
|
10
|
-
|
11
7
|
resources = []
|
12
8
|
files.each do |source|
|
13
|
-
|
14
9
|
resources.concat Dir[source]
|
15
|
-
|
16
10
|
end
|
17
|
-
|
18
11
|
unless excluded_files == nil
|
19
|
-
|
20
12
|
resources -= merge_files_array(excluded_files)
|
21
|
-
|
22
13
|
end
|
23
|
-
|
24
14
|
return resources
|
25
|
-
|
26
15
|
end
|
27
16
|
|
28
17
|
end
|
@@ -3,112 +3,69 @@ require 'xcodeproj'
|
|
3
3
|
module Phoenx
|
4
4
|
|
5
5
|
def Phoenx.is_bundle?(file)
|
6
|
-
|
7
6
|
return file.include?('xcassets') || file.include?('bundle') || file.include?('playground')
|
8
|
-
|
9
7
|
end
|
10
8
|
|
11
9
|
def Phoenx.is_translation_folder?(file)
|
12
|
-
|
13
10
|
return file.include?('lproj')
|
14
|
-
|
15
11
|
end
|
16
12
|
|
17
13
|
def Phoenx.add_groups_for_files(project,files)
|
18
|
-
|
19
14
|
files.each do |path|
|
20
|
-
|
21
15
|
abort "Missing file ".red + path.bold unless File.exists?(path)
|
22
|
-
|
23
16
|
groups = File.dirname(path).split("/")
|
24
17
|
concate = ""
|
25
|
-
|
26
18
|
groups.each do |g|
|
27
|
-
|
28
19
|
if Phoenx.is_bundle?(g) || Phoenx.is_translation_folder?(g)
|
29
|
-
|
30
20
|
break
|
31
|
-
|
32
21
|
end
|
33
|
-
|
34
22
|
concate += g + "/"
|
35
23
|
group_ref = project.main_group.find_subpath(concate, true)
|
36
24
|
group_ref.set_path(g)
|
37
|
-
|
38
25
|
end
|
39
|
-
|
40
26
|
end
|
41
|
-
|
42
27
|
end
|
43
28
|
|
44
29
|
def Phoenx.get_or_add_files(project, files)
|
45
|
-
|
46
30
|
resources = Phoenx.merge_files_array(files)
|
47
|
-
|
48
31
|
Phoenx.add_groups_for_files(project, resources)
|
49
|
-
|
50
32
|
resources.each do |source|
|
51
|
-
|
52
33
|
Phoenx.get_or_add_file(project,source)
|
53
|
-
|
54
34
|
end
|
55
|
-
|
56
35
|
end
|
57
36
|
|
58
37
|
def Phoenx.get_or_add_file(project,file)
|
59
|
-
|
60
38
|
abort "Missing file ".red + path.bold unless File.exists?(file)
|
61
|
-
|
62
39
|
filename = File.basename(file)
|
63
40
|
dir = File.dirname(file)
|
64
|
-
|
65
41
|
group = project.main_group.find_subpath(dir, false)
|
66
42
|
file_ref = group.find_file_by_path(filename)
|
67
|
-
|
68
43
|
unless file_ref != nil
|
69
|
-
|
70
44
|
file_ref = group.new_file(filename)
|
71
|
-
|
72
45
|
end
|
73
|
-
|
74
46
|
return file_ref
|
75
47
|
|
76
48
|
end
|
77
49
|
|
78
50
|
def Phoenx.set_target_build_settings_defaults(target)
|
79
|
-
|
80
51
|
target.build_configuration_list.build_configurations.each do |config|
|
81
|
-
|
82
52
|
config.build_settings = {}
|
83
|
-
|
84
53
|
end
|
85
|
-
|
86
54
|
end
|
87
55
|
|
88
56
|
def Phoenx.set_project_build_settings_defaults(project)
|
89
|
-
|
90
57
|
project.build_configuration_list.build_configurations.each do |config|
|
91
|
-
|
92
58
|
config.build_settings = {}
|
93
|
-
|
94
59
|
end
|
95
|
-
|
96
60
|
end
|
97
61
|
|
98
62
|
def Phoenx.target_for_name(project,name)
|
99
|
-
|
100
63
|
project.targets.each do |t|
|
101
|
-
|
102
64
|
if t.name == name
|
103
|
-
|
104
65
|
return t
|
105
|
-
|
106
66
|
end
|
107
|
-
|
108
67
|
end
|
109
|
-
|
110
68
|
return nil
|
111
|
-
|
112
69
|
end
|
113
70
|
|
114
71
|
end
|
@@ -1,22 +1,16 @@
|
|
1
1
|
module Phoenx
|
2
2
|
|
3
3
|
class ProjectValidator
|
4
|
-
|
5
4
|
ERROR_NONE = 0
|
6
5
|
ERROR_INVALID_NAME = 1
|
7
|
-
|
6
|
+
|
8
7
|
def validate(project)
|
9
|
-
|
10
8
|
if project.name == nil || project.name == ""
|
11
|
-
|
12
9
|
return ERROR_INVALID_NAME
|
13
|
-
|
14
10
|
end
|
15
|
-
|
16
11
|
return ERROR_NONE
|
17
|
-
|
18
12
|
end
|
19
|
-
|
13
|
+
|
20
14
|
end
|
21
15
|
|
22
16
|
end
|
@@ -1,27 +1,18 @@
|
|
1
1
|
module Phoenx
|
2
2
|
|
3
3
|
class WorkspaceValidator
|
4
|
-
|
5
4
|
ERROR_NONE = 0
|
6
5
|
ERROR_INVALID_NAME = 1
|
7
6
|
ERROR_INVALID_MAIN_PROJECT = 2
|
8
7
|
|
9
8
|
def validate(workspace)
|
10
|
-
|
11
9
|
if workspace.name == nil || workspace.name == ""
|
12
|
-
|
13
10
|
return ERROR_INVALID_NAME
|
14
|
-
|
15
11
|
end
|
16
|
-
|
17
12
|
if workspace.main_project == nil || workspace.main_project == ""
|
18
|
-
|
19
|
-
return ERROR_INVALID_MAIN_PROJECT
|
20
|
-
|
13
|
+
return ERROR_INVALID_MAIN_PROJECT
|
21
14
|
end
|
22
|
-
|
23
15
|
return ERROR_NONE
|
24
|
-
|
25
16
|
end
|
26
17
|
|
27
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phoenx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Meder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|