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.
@@ -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.2
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-05 00:00:00.000000000 Z
11
+ date: 2017-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj