ambient-xcode 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: 71ecb6caa8059718bc5587df94fefe7a7ded74e5
4
- data.tar.gz: ace88b9f5419157c109fe6826af14e504a6e89fb
3
+ metadata.gz: 535741512152decacc083ba6036ccbd108c87d4f
4
+ data.tar.gz: da77b7cd41fa0585720138b545bf51e4f983153e
5
5
  SHA512:
6
- metadata.gz: 75d57629a7ad52ab157454e511ef074475cfb5c7e656ef58e679bd942a78fc56a15d9566d1864da252383308042e05aea388ca2f9463f4475147190d09033603
7
- data.tar.gz: 96233c4bb64322f6aac12d535aa44d04c0233384572ee65f2c8047703ed750aff898ef3babfc18b3e0204752e808928b195807cfd21e1d75c94309e603589ac6
6
+ metadata.gz: 72734e410a4173855c755e17f13504afff8090bb9e6eb17110ed5365e5e63c6a7d0bc1c388ce7db73249d203f8370e075b6e1510e59492de6c8b96dd3055205d
7
+ data.tar.gz: 5596a7103942b59e4f3e57808956d3d6ad17cf5665a478ae78ba3f8c981678da259e38cc12afcfaf95236d284a6423113d8006d841341495b45721f283b5e46e
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+
3
+ tags
data/README.md CHANGED
@@ -43,12 +43,22 @@ plist("MyProject/Info.plist") do
43
43
  end
44
44
  ```
45
45
 
46
- Run `ambient` from the command line to write your settings into your project.
46
+ Run `ambient` from the command line to write your settings into your project:
47
+ ```
48
+ usage:
49
+ $ ambient COMMAND
50
+
51
+ Commands:
52
+ + [no arguments] Applies the settings from the Ambientfile
53
+ + init Creates an Ambientfile in the current directory
54
+ + new NAME Creates a new iOS Xcode project with given name
55
+ + [anything else] Applies the settings from the file name supplied
56
+ ```
47
57
 
48
- If you want, you can have a multiple `Ambientfile` for the same project. Just name it something else and run `ambient [filename]` (e.g. `ambient Ambientfile-enterprise`)
58
+ You can also have more than one `Ambientfile` for the same project. Just name it something else and run `ambient [filename]` (e.g. `ambient Ambientfile-enterprise`). Use `use_settings_from` to inherit settings:
49
59
 
50
60
  ```ruby
51
- use_settings_from 'Ambientfile' # inherits all of the settings from Ambientfile
61
+ use_settings_from 'Ambientfile'
52
62
 
53
63
  target "Monies" do
54
64
  development_team "341MONEY25"
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = 'ambient-xcode'
6
- gem.version = '0.6.0'
6
+ gem.version = '0.7.0'
7
7
  gem.authors = ['Daniel Inkpen']
8
8
  gem.email = ['dan2552@gmail.com']
9
9
  gem.description = %q{CLI for configuring Xcode projects from a Ruby file.}
data/bin/ambient CHANGED
@@ -4,5 +4,35 @@ require 'fileutils'
4
4
  $:.push File.expand_path("../../lib", __FILE__)
5
5
 
6
6
  require 'ambient'
7
- file = ARGV[0] || 'Ambientfile'
8
- Ambient.setup_project(file)
7
+
8
+ def print_help
9
+ print_version
10
+ puts ""
11
+ puts "usage: "
12
+ puts "$ ambient COMMAND"
13
+ puts ""
14
+ puts "Commands:"
15
+ puts "+ [no arguments]\tApplies the settings from the Ambientfile"
16
+ puts "+ init\t\t\tCreates an Ambientfile in the current directory"
17
+ puts "+ new NAME\t\tCreates a new iOS Xcode project with given name"
18
+ puts "+ [anything else]\tApplies the settings from the file name supplied"
19
+ end
20
+
21
+ def print_version
22
+ path = File.expand_path("../../", __FILE__)
23
+ gem_contents = File.read("#{path}/ambient-xcode.gemspec")
24
+ match = gem_contents.match /^\s*gem.version\s*= ('|")(.*)('|")/
25
+ puts "ambient-xcode #{match[2]}"
26
+ end
27
+
28
+ if ARGV[0] == "init"
29
+ Ambient::Init.new.create_ambientfile
30
+ elsif ARGV[0] == "new"
31
+ Ambient::ProjectCreation.new(Dir.pwd, ARGV[1]).create_ios_project
32
+ elsif ARGV[0] == "help" || ARGV[0] == "--help"
33
+ print_help
34
+ elsif ARGV[0] == "version" || ARGV[0] == "--version" || ARGV[0] == "-v"
35
+ print_version
36
+ else
37
+ Ambient::Application.new.run_ambientfile(ARGV[0])
38
+ end
data/example/Ambientfile CHANGED
@@ -1,5 +1,5 @@
1
- PROJECT = "EmptyProject"
2
- PREFIX = "uk.danielgreen."
1
+ PROJECT = "MyProject"
2
+ PREFIX = "com.organization."
3
3
 
4
4
  base_ios_settings! PROJECT,
5
5
  prefix: PREFIX,
@@ -1,5 +1,5 @@
1
- PROJECT = "EmptyProject"
2
- PREFIX = "uk.danielgreen."
1
+ PROJECT = "MyProject"
2
+ PREFIX = "com.organization."
3
3
 
4
4
  base_ios_settings! PROJECT,
5
5
  prefix: PREFIX,
data/lib/ambient.rb CHANGED
@@ -1,160 +1,10 @@
1
- unless Kernel.respond_to?(:require_relative)
2
- module Kernel
3
- def require_relative(path)
4
- require File.join(File.dirname(caller[0]), path.to_str)
5
- end
6
- end
7
- end
8
-
9
- require_relative 'project_helper'
10
- require_relative 'capabilities_helper'
11
- require_relative 'plist_helper'
12
- require_relative 'dsl'
13
-
14
- module Ambient
15
- extend self
16
- Ambient::ROOT = File.expand_path('.', File.dirname(__FILE__))
17
-
18
- @use_defaults = false
19
- @project_options = {}
20
- @shared_target_options = {}
21
- @target_options = {}
22
- @scheme_options = {}
23
- @parents = {}
24
- @capabilities = {}
25
- @development_teams = {}
26
-
27
- def configure(&block)
28
- instance_eval &block
29
- end
30
-
31
- def project_helper
32
- @project_helper ||= ProjectHelper.new
33
- end
34
-
35
- def set_parent_scheme(target: nil, child: nil, parent: nil)
36
- target = target || :all
37
- @parents[target] ||= {}
38
- @parents[target][child] = parent
39
- end
40
-
41
- def set_option(option, value, target: nil, scheme: nil, parent: nil)
42
- value = "YES" if value == true
43
- value = "NO" if value == false
44
- value = nil if value == :default
45
-
46
- if target
47
- if scheme
48
- @target_options[target] ||= {}
49
- @target_options[target][scheme] ||= {}
50
- @target_options[target][scheme][option] = value
51
- else
52
- @shared_target_options[target] ||= {}
53
- @shared_target_options[target][option] = value
54
- end
55
- else
56
- if scheme
57
- @scheme_options[scheme] ||= {}
58
- @scheme_options[scheme][option] = value
59
- else
60
- @project_options[option] = value
61
- end
62
- end
63
- end
64
-
65
- def set_capability(target_name, capability_name)
66
- capabilities = @capabilities[target_name] ||= []
67
- capabilities << capability_name
68
- end
69
-
70
- def set_development_team(target_name, team_name)
71
- @development_teams[target_name] = team_name
72
- end
73
-
74
- def setup_project(ambientfile)
75
- run_ambientfile(ambientfile)
76
- project_helper.print_info
77
- reset_project_to_defaults if @use_defaults
78
- reset_targets_to_defaults if @use_defaults
79
- reset_capabilites_to_defaults if @use_defaults
80
- load_in_parent_scheme_values
81
- process_project_options
82
- process_scheme_options
83
- process_shared_target_options
84
- process_target_options
85
- process_capabilities
86
- process_development_teams
87
- project_helper.save_changes
88
- end
89
-
90
- def reset_project_to_defaults
91
- puts "resetting project settings to xcode default settings"
92
- project_helper.reset_project_to_defaults
93
- end
94
-
95
- def reset_targets_to_defaults
96
- puts "resetting target settings to xcode default settings"
97
- project_helper.reset_targets_to_defaults
98
- end
99
-
100
- def reset_capabilites_to_defaults
101
- puts "resetting capabilities to xcode default settings"
102
- project_helper.reset_capabilities_to_defaults
103
- end
104
-
105
- def process_project_options
106
- puts "applying ambient project settings"
107
- project_helper.process_project_options(@project_options)
108
- end
109
-
110
- def process_scheme_options
111
- puts "applying ambient scheme settings"
112
- project_helper.process_scheme_options(@scheme_options)
113
- end
114
-
115
- def process_shared_target_options
116
- puts "applying ambient shared target settings"
117
- project_helper.process_shared_target_options(@shared_target_options)
118
- end
119
-
120
- def process_target_options
121
- puts "applying ambient target settings"
122
- project_helper.process_target_options(@target_options)
123
- end
124
-
125
- def process_capabilities
126
- puts "applying ambient capabilities"
127
- project_helper.process_capabilities(@capabilities)
128
- end
129
-
130
- def process_development_teams
131
- puts "applying ambient development teams"
132
- project_helper.process_development_teams(@development_teams)
133
- end
134
-
135
- def load_in_parent_scheme_values
136
- @parents.each do |target, parents|
137
- parents.each do |child, parent|
138
- if parent
139
- if target == :all
140
- puts "Identified #{child} as a child of #{parent}"
141
- child_options = @scheme_options[child]
142
- parent_options = @scheme_options[parent]
143
- else
144
- target_options = @target_options[target]
145
- child_options = target_options[child]
146
- parent_options = target_options[parent]
147
- end
148
- child_options.merge!(parent_options) { |_, child, _| child }
149
- end
150
- end
151
- end
152
- end
153
-
154
- def run_ambientfile(filename)
155
- puts "# Reading settings from #{filename}"
156
- ambient = File.join(Dir.pwd, filename)
157
- raise "#{filename} not found in current directory." unless File.exists?(ambient)
158
- load ambient
159
- end
160
- end
1
+ require 'xcodeproj'
2
+ require 'plist'
3
+
4
+ require_relative 'ambient/project_helper'
5
+ require_relative 'ambient/capabilities_helper'
6
+ require_relative 'ambient/plist_helper'
7
+ require_relative 'ambient/dsl'
8
+ require_relative 'ambient/project_creation'
9
+ require_relative 'ambient/init'
10
+ require_relative 'ambient/application'
@@ -0,0 +1,165 @@
1
+ module Ambient
2
+ class Application
3
+ attr_reader :path
4
+
5
+ def initialize(path = nil)
6
+ @path = path || File.expand_path('.', File.dirname(__FILE__))
7
+
8
+ @use_defaults = false
9
+ @project_options = {}
10
+ @shared_target_options = {}
11
+ @target_options = {}
12
+ @scheme_options = {}
13
+ @parents = {}
14
+ @capabilities = {}
15
+ @development_teams = {}
16
+ end
17
+
18
+ def run_ambientfile(file = nil)
19
+ setup_project(file || "Ambientfile")
20
+ end
21
+
22
+ def configure(&block)
23
+ instance_eval(&block)
24
+ end
25
+
26
+ private
27
+
28
+ def project_helper
29
+ @project_helper ||= ProjectHelper.new(path)
30
+ end
31
+
32
+ def set_parent_scheme(target: nil, child: nil, parent: nil)
33
+ target = target || :all
34
+ @parents[target] ||= {}
35
+ @parents[target][child] = parent
36
+ end
37
+
38
+ def set_option(option, value, target: nil, scheme: nil, parent: nil)
39
+ value = "YES" if value == true
40
+ value = "NO" if value == false
41
+ value = nil if value == :default
42
+
43
+ if target
44
+ if scheme
45
+ @target_options[target] ||= {}
46
+ @target_options[target][scheme] ||= {}
47
+ @target_options[target][scheme][option] = value
48
+ else
49
+ @shared_target_options[target] ||= {}
50
+ @shared_target_options[target][option] = value
51
+ end
52
+ else
53
+ if scheme
54
+ @scheme_options[scheme] ||= {}
55
+ @scheme_options[scheme][option] = value
56
+ else
57
+ @project_options[option] = value
58
+ end
59
+ end
60
+ end
61
+
62
+ def set_capability(target_name, capability_name)
63
+ capabilities = @capabilities[target_name] ||= []
64
+ capabilities << capability_name
65
+ end
66
+
67
+ def set_development_team(target_name, team_name)
68
+ @development_teams[target_name] = team_name
69
+ end
70
+
71
+ def setup_project(ambientfile)
72
+ read(ambientfile)
73
+ project_helper.print_info
74
+ reset_project_to_defaults if @use_defaults
75
+ reset_targets_to_defaults if @use_defaults
76
+ reset_capabilites_to_defaults if @use_defaults
77
+ load_in_parent_scheme_values
78
+ process_project_options
79
+ process_scheme_options
80
+ process_shared_target_options
81
+ process_target_options
82
+ process_capabilities
83
+ process_development_teams
84
+ project_helper.save_changes
85
+ end
86
+
87
+ def reset_project_to_defaults
88
+ puts "resetting project settings to xcode default settings"
89
+ project_helper.reset_project_to_defaults
90
+ end
91
+
92
+ def reset_targets_to_defaults
93
+ puts "resetting target settings to xcode default settings"
94
+ project_helper.reset_targets_to_defaults
95
+ end
96
+
97
+ def reset_capabilites_to_defaults
98
+ puts "resetting capabilities to xcode default settings"
99
+ project_helper.reset_capabilities_to_defaults
100
+ end
101
+
102
+ def process_project_options
103
+ puts "applying ambient project settings"
104
+ project_helper.process_project_options(@project_options)
105
+ end
106
+
107
+ def process_scheme_options
108
+ puts "applying ambient scheme settings"
109
+ project_helper.process_scheme_options(@scheme_options)
110
+ end
111
+
112
+ def process_shared_target_options
113
+ puts "applying ambient shared target settings"
114
+ project_helper.process_shared_target_options(@shared_target_options)
115
+ end
116
+
117
+ def process_target_options
118
+ puts "applying ambient target settings"
119
+ project_helper.process_target_options(@target_options)
120
+ end
121
+
122
+ def process_capabilities
123
+ puts "applying ambient capabilities"
124
+ project_helper.process_capabilities(@capabilities)
125
+ end
126
+
127
+ def process_development_teams
128
+ puts "applying ambient development teams"
129
+ project_helper.process_development_teams(@development_teams)
130
+ end
131
+
132
+ def load_in_parent_scheme_values
133
+ @parents.each do |target, parents|
134
+ parents.each do |child, parent|
135
+ if parent
136
+ if target == :all
137
+ puts "Identified #{child} as a child of #{parent}"
138
+ child_options = @scheme_options[child]
139
+ parent_options = @scheme_options[parent]
140
+ else
141
+ target_options = @target_options[target]
142
+ child_options = target_options[child]
143
+ parent_options = target_options[parent]
144
+ end
145
+ child_options.merge!(parent_options) { |_, child, _| child }
146
+ end
147
+ end
148
+ end
149
+ end
150
+
151
+ def read(filename)
152
+ puts "# Reading settings from #{filename}"
153
+ ambient = File.join(path, filename)
154
+
155
+ unless File.exists?(ambient)
156
+ puts "😱 #{filename} not found in current directory."
157
+ exit 1
158
+ end
159
+
160
+ DSL::MainScope.new(self).instance_eval do
161
+ eval(File.read(ambient))
162
+ end
163
+ end
164
+ end
165
+ end