branch_io_cli 0.1.0 → 0.2.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: 1ccbe6055b11c7d84271ce19783c90890e6c7b5f
4
- data.tar.gz: ac6119e721f6e4c8529a2a01f4fc76fbb97e096e
3
+ metadata.gz: 78fa18c46004f307435a9372ca7d86f870188b4b
4
+ data.tar.gz: be9a50a0308af7b2f6b1525d686915dc44b8da91
5
5
  SHA512:
6
- metadata.gz: f8e945dc2c6db1e08264537075bec5f45f8c562e58a3bc37821ce1ab7c1493021f95b9a89c25d08dfcac6ef7fee7a4f3a0904536967bb6cd961fd17416746f32
7
- data.tar.gz: 804615d6d37b159d79e3b801a4d818f62ffebfe45d50c60160253ca7469074c939806a3d64f35a7a7f9dbd9fa69b9b3418b324b7bba8c6802ffc9dd91e56f66e
6
+ metadata.gz: b19c8b3558ae9c7d08574bc71ac2c71bdd6300ba9d38fa79aa39700de9540537f3a30c51a283abf4b8e84706d79787fbbb1001f57c30efbcc3bea2fe69ecfa92
7
+ data.tar.gz: 2d7605b8ffabd835c76ff53652f54f4397f3471220eeff601f9dff77e9569bed777c3ef8b485674ec7cf8dc5fe708054afb5003686437cc84558ad745793bc1c
data/README.md CHANGED
@@ -61,7 +61,7 @@ This can be suppressed using `--no_patch_source`.
61
61
 
62
62
  #### Prerequisites
63
63
 
64
- Before using this action, make sure to set up your app in the [Branch Dashboard](https://dashboard.branch.io). See https://docs.branch.io/pages/dashboard/integrate/ for details. To use the `setup` command, you need:
64
+ Before using this command, make sure to set up your app in the [Branch Dashboard](https://dashboard.branch.io). See https://docs.branch.io/pages/dashboard/integrate/ for details. To use the `setup` command, you need:
65
65
 
66
66
  - Branch key(s), either live, test or both
67
67
  - Domain name(s) used for Branch links
@@ -87,8 +87,9 @@ Before using this action, make sure to set up your app in the [Branch Dashboard]
87
87
  |--no_patch_source|Don't add Branch SDK calls to the AppDelegate|
88
88
  |--commit|Commit the results to Git|
89
89
 
90
- All parameters are optional, but either `--live_key` or `--test_key` or both must be specified, as well as
91
- `--app_link_subdomain` or `--domains` or both.
90
+ All parameters are optional. A live key or test key, or both is required, as well as at least one domain.
91
+ Specify --live_key, --test_key or both and --app_link_subdomain, --domains or both. If these are not
92
+ specified, this command will prompt you for this information.
92
93
 
93
94
  ### Validate command
94
95
 
@@ -11,7 +11,7 @@ module BranchIOCLI
11
11
  program :description, "More to come"
12
12
 
13
13
  command :setup do |c|
14
- c.syntax = "branch_io setup"
14
+ c.syntax = "branch_io setup [OPTIONS]"
15
15
  c.description = "Set up an iOS project to use the Branch SDK."
16
16
 
17
17
  # Required Branch params
@@ -39,8 +39,8 @@ module BranchIOCLI
39
39
  end
40
40
 
41
41
  command :validate do |c|
42
- c.syntax = "branch_io validate"
43
- c.description = "Validate the Universal Link configuration for an Xcode project"
42
+ c.syntax = "branch_io validate [OPTIONS]"
43
+ c.description = "Validate the Universal Link configuration for an Xcode project."
44
44
 
45
45
  c.option "--xcodeproj MyProject.xcodeproj", String, "Path to an Xcode project to update"
46
46
  c.option "--target MyAppTarget", String, "Name of a target to modify in the Xcode project"
@@ -4,27 +4,12 @@ module BranchIOCLI
4
4
  class Command
5
5
  class << self
6
6
  def setup(options)
7
- @domains = all_domains options
8
- @keys = keys options
7
+ options = Helper::ConfigurationHelper.validate_setup_options options
9
8
 
10
- if @keys.empty?
11
- say "Please specify --live_key or --test_key or both."
12
- return
13
- end
14
-
15
- if @domains.empty?
16
- say "Please specify --app_link_subdomain or --domains or both."
17
- return
18
- end
19
-
20
- @xcodeproj_path = xcodeproj_path options
21
- unless @xcodeproj_path
22
- say "Please specify the --xcodeproj option."
23
- return
24
- end
25
-
26
- # raises
27
- xcodeproj = Xcodeproj::Project.open @xcodeproj_path
9
+ @keys = Helper::ConfigurationHelper.keys
10
+ @domains = Helper::ConfigurationHelper.all_domains
11
+ @xcodeproj_path = options.xcodeproj
12
+ xcodeproj = Helper::ConfigurationHelper.xcodeproj
28
13
 
29
14
  update_podfile(options) || update_cartfile(options, xcodeproj)
30
15
 
@@ -57,14 +42,10 @@ module BranchIOCLI
57
42
  end
58
43
 
59
44
  def validate(options)
60
- path = xcodeproj_path options
61
- unless path
62
- say "Please specify the --xcodeproj option."
63
- return
64
- end
45
+ options = Helper::ConfigurationHelper.validate_validation_options options
65
46
 
66
47
  # raises
67
- xcodeproj = Xcodeproj::Project.open path
48
+ xcodeproj = Helper::ConfigurationHelper.xcodeproj
68
49
 
69
50
  valid = true
70
51
 
@@ -102,69 +83,6 @@ module BranchIOCLI
102
83
  BranchIOCLI::Helper::BranchHelper
103
84
  end
104
85
 
105
- def xcodeproj_path(options)
106
- return options.xcodeproj if options.xcodeproj
107
-
108
- repo_path = "."
109
-
110
- all_xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))]
111
- # find an xcodeproj (ignoring the Pods and Carthage folders)
112
- # TODO: Improve this filter
113
- xcodeproj_paths = all_xcodeproj_paths.reject { |p| p =~ /Pods|Carthage/ }
114
-
115
- # no projects found: error
116
- say 'Could not find a .xcodeproj in the current repository\'s working directory.' and return nil if xcodeproj_paths.count == 0
117
-
118
- # too many projects found: error
119
- if xcodeproj_paths.count > 1
120
- repo_pathname = Pathname.new repo_path
121
- relative_projects = xcodeproj_paths.map { |e| Pathname.new(e).relative_path_from(repo_pathname).to_s }.join("\n")
122
- say "Found multiple .xcodeproj projects in the current repository's working directory. Please specify your app's main project: \n#{relative_projects}"
123
- return nil
124
- end
125
-
126
- # one project found: great
127
- xcodeproj_paths.first
128
- end
129
-
130
- def app_link_subdomains(options)
131
- app_link_subdomain = options.app_link_subdomain
132
- live_key = options.live_key
133
- test_key = options.test_key
134
- return [] if live_key.nil? and test_key.nil?
135
- return [] if app_link_subdomain.nil?
136
-
137
- domains = []
138
- unless live_key.nil?
139
- domains += [
140
- "#{app_link_subdomain}.app.link",
141
- "#{app_link_subdomain}-alternate.app.link"
142
- ]
143
- end
144
- unless test_key.nil?
145
- domains += [
146
- "#{app_link_subdomain}.test-app.link",
147
- "#{app_link_subdomain}-alternate.test-app.link"
148
- ]
149
- end
150
- domains
151
- end
152
-
153
- def all_domains(options)
154
- app_link_subdomains = app_link_subdomains options
155
- custom_domains = options.domains || []
156
- (app_link_subdomains + custom_domains).uniq
157
- end
158
-
159
- def keys(options)
160
- live_key = options.live_key
161
- test_key = options.test_key
162
- keys = {}
163
- keys[:live] = live_key unless live_key.nil?
164
- keys[:test] = test_key unless test_key.nil?
165
- keys
166
- end
167
-
168
86
  def podfile_path(options)
169
87
  # Disable Podfile update if add_sdk: false is present
170
88
  return nil if options.no_add_sdk
@@ -1 +1,2 @@
1
1
  require "branch_io_cli/helper/branch_helper"
2
+ require "branch_io_cli/helper/configuration_helper"
@@ -0,0 +1,102 @@
1
+ require "xcodeproj"
2
+
3
+ module BranchIOCLI
4
+ module Helper
5
+ class ConfigurationHelper
6
+ class << self
7
+ attr_accessor :xcodeproj
8
+ attr_accessor :keys
9
+ attr_accessor :all_domains
10
+
11
+ def validate_setup_options(options)
12
+ options.xcodeproj = xcodeproj_path options
13
+ validate_keys_from_setup_options options
14
+ validate_all_domains options
15
+ options
16
+ end
17
+
18
+ def validate_validation_options(options)
19
+ options.xcodeproj = xcodeproj_path options
20
+ options
21
+ end
22
+
23
+ def validate_keys_from_setup_options(options)
24
+ live_key = options.live_key
25
+ test_key = options.test_key
26
+ @keys = {}
27
+ @keys[:live] = live_key unless live_key.nil?
28
+ @keys[:test] = test_key unless test_key.nil?
29
+
30
+ while @keys.empty?
31
+ say "A live key, a test key or both is required."
32
+ live_key = ask "Please enter your live Branch key or use --live_key [enter for none]: "
33
+ test_key = ask "Please enter your test Branch key or use --test_key [enter for none]: "
34
+
35
+ @keys[:live] = live_key unless live_key == ""
36
+ @keys[:test] = test_key unless test_key == ""
37
+ end
38
+ end
39
+
40
+ def validate_all_domains(options)
41
+ app_link_subdomains = app_link_subdomains options
42
+ custom_domains = options.domains || []
43
+ @all_domains = (app_link_subdomains + custom_domains).uniq
44
+
45
+ while @all_domains.empty?
46
+ @all_domains = ask "Please enter domains as a comma-separated list: ", ->(str) { str.split "," }
47
+ end
48
+ end
49
+
50
+ # 1. Look for options.xcodeproj.
51
+ # 2. If not specified, look for projects under . (excluding anything in Pods or Carthage folder).
52
+ # 3. If none or more than one found, prompt the user.
53
+ def xcodeproj_path(options)
54
+ if options.xcodeproj
55
+ path = options.xcodeproj
56
+ else
57
+ all_xcodeproj_paths = Dir[File.expand_path(File.join(".", "**/*.xcodeproj"))]
58
+ # find an xcodeproj (ignoring the Pods and Carthage folders)
59
+ # TODO: Improve this filter
60
+ xcodeproj_paths = all_xcodeproj_paths.reject { |p| p =~ /Pods|Carthage/ }
61
+
62
+ path = xcodeproj_paths.first if xcodeproj_paths.count == 1
63
+ end
64
+
65
+ loop do
66
+ path = ask "Please enter the path to your Xcode project or use --xcodeproj: " if path.nil?
67
+ # TODO: Allow the user to choose if xcodeproj_paths.count > 0
68
+ begin
69
+ @xcodeproj = Xcodeproj::Project.open path
70
+ return path
71
+ rescue StandardError => e
72
+ say e.message
73
+ end
74
+ end
75
+ end
76
+
77
+ def app_link_subdomains(options)
78
+ app_link_subdomain = options.app_link_subdomain
79
+ live_key = options.live_key
80
+ test_key = options.test_key
81
+ return [] if live_key.nil? and test_key.nil?
82
+ return [] if app_link_subdomain.nil?
83
+
84
+ domains = []
85
+ unless live_key.nil?
86
+ domains += [
87
+ "#{app_link_subdomain}.app.link",
88
+ "#{app_link_subdomain}-alternate.app.link"
89
+ ]
90
+ end
91
+ unless test_key.nil?
92
+ domains += [
93
+ "#{app_link_subdomain}.test-app.link",
94
+ "#{app_link_subdomain}-alternate.test-app.link"
95
+ ]
96
+ end
97
+ domains
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -1,3 +1,3 @@
1
1
  module BranchIOCLI
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: branch_io_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Branch
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-14 00:00:00.000000000 Z
12
+ date: 2017-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: commander
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: bundler
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: pry
72
86
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +96,7 @@ dependencies:
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
- name: bundler
99
+ name: rake
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - ">="
@@ -110,7 +124,7 @@ dependencies:
110
124
  - !ruby/object:Gem::Version
111
125
  version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
- name: rake
127
+ name: rspec_junit_formatter
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
130
  - - ">="
@@ -184,6 +198,7 @@ files:
184
198
  - lib/branch_io_cli/helper.rb
185
199
  - lib/branch_io_cli/helper/android_helper.rb
186
200
  - lib/branch_io_cli/helper/branch_helper.rb
201
+ - lib/branch_io_cli/helper/configuration_helper.rb
187
202
  - lib/branch_io_cli/helper/ios_helper.rb
188
203
  - lib/branch_io_cli/version.rb
189
204
  homepage: http://github.com/BranchMetrics/branch_io_cli