branch_io_cli 0.12.0 → 0.12.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be0daf95d93295d62f31315a658b57fc4907530d6f4a1b6dc1fef5366a18d78e
4
- data.tar.gz: 63c2469083e71c37a99ebcaeabc67eb11e76efa2ad2ddf7210c66b2daad1aced
3
+ metadata.gz: a1614c75a346bfa728be2437d7e729a54c381199c1786699210defc36a33e390
4
+ data.tar.gz: '0334849b987d626b6e606972c552a1ae2e737aad2746b96519da1402a8a48c85'
5
5
  SHA512:
6
- metadata.gz: bda3669c526febfb881867e4f583340ee8d3450d2683d7d3631fca1b8719e44ed73b5d2ff9b93ca415243e92c4675e76014e5938b029bf5c2e3276b3a09ed47f
7
- data.tar.gz: be88db9e6b26f92a18a9aac27d6004f82fdc9e63cc6cb06c039a1edc97cce206788531c650b9aff4fbb40f94cbd1238551e47c263b2b015b1fadbb8dde7b8121
6
+ metadata.gz: d6ddacc36d94b84d8fa6f90b7a80c1964915e9a3b174d2d0928b53be0112cc31de7758a0f441e7c89adb1d0ce3baea2cb74ed5d7b4220dc770b43664ccfb512f
7
+ data.tar.gz: 29f548ba0c9c57583682f80c0f633cd8ef837f342342ba32ba8472a6f55554efe7a92b38e98ab5902c08c5bc39097251436fade3e53e542af8d0a41c52cc6603
@@ -1,4 +1,5 @@
1
1
  #!/bin/bash
2
+ # This file is generated. Run rake readme to regenerate it.
2
3
 
3
4
  _branch_io_complete()
4
5
  {
@@ -8,19 +9,16 @@ _branch_io_complete()
8
9
  prev="${COMP_WORDS[COMP_CWORD-1]}"
9
10
  cmd="${COMP_WORDS[1]}"
10
11
 
11
- commands="report setup validate"
12
+ commands="setup report validate"
12
13
  global_opts="-h --help -t --trace -v --version"
13
14
 
14
- setup_opts="$global_opts -L --live-key -T --test-key -D --domains --app-link-subdomain -U --uri-scheme"
15
- setup_opts="$setup_opts --xcodeproj --target --frameworks --podfile --cartfile --carthage-command --setting -s"
16
- setup_opts="$setup_opts --test-configurations --no-test-configurations --no-check-repo-changes --no-confirm"
17
- # Don't autocomplete the default values here, e.g. --no-force, --pod-repo-update.
18
- setup_opts="$setup_opts --no-add-sdk --no-validate --force --no-pod-repo-update --commit --no-patch-source"
19
15
 
20
- validate_opts="$global_opts -D --domains --xcodeproj --target"
16
+ setup_opts="-L --live-key -T --test-key -D --domains --app-link-subdomain -U --uri-scheme -s --setting --test-configurations --xcodeproj --target --podfile --cartfile --carthage-command --frameworks --no-pod-repo-update --no-validate --force --no-add-sdk --no-patch-source --commit --no-confirm"
17
+
18
+ report_opts="--workspace --xcodeproj --scheme --target --configuration --sdk --podfile --cartfile --no-clean -H --header-only --no-pod-repo-update -o --out"
19
+
20
+ validate_opts="-D --domains --xcodeproj --target"
21
21
 
22
- report_opts="$global_opts --xcodeproj --workspace -H --header-only --no-clean --scheme --target --configuration --sdk --out"
23
- report_opts="$report_opts --podfile --cartfile --no-pod-repo-update"
24
22
 
25
23
  if [[ ${cur} == -* ]] ; then
26
24
  case "${cmd}" in
@@ -1,14 +1,11 @@
1
1
  #!/bin/zsh
2
+ # This file is generated. Run rake readme to regenerate it.
2
3
 
3
4
  _branch_io_complete() {
4
5
  local word opts
5
6
  word="$1"
6
7
  opts="-h --help -t --trace -v --version"
7
- opts="$opts -L --live-key -T --test-key -D --domains --app-link-subdomain -U --uri-scheme"
8
- opts="$opts --xcodeproj --target --frameworks --podfile --cartfile --carthage-command --setting -s"
9
- opts="$opts --test-configurations --no-test-configurations --no-check-repo-changes --no-confirm"
10
- # Don't autocomplete the default values here, e.g. --no-force, --pod-repo-update.
11
- opts="$opts --no-add-sdk --no-validate --force --no-pod-repo-update --commit --no-patch-source"
8
+ opts = "$opts -L --live-key -T --test-key -D --domains --app-link-subdomain -U --uri-scheme -s --setting --test-configurations --xcodeproj --target --podfile --cartfile --carthage-command --frameworks --no-pod-repo-update --no-validate --force --no-add-sdk --no-patch-source --commit --no-confirm"
12
9
 
13
10
  reply=( "${(ps: :)opts}" )
14
11
  }
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+ # This file is generated. Run rake readme to regenerate it.
3
+
4
+ _branch_io_complete()
5
+ {
6
+ local cur prev opts global_opts setup_opts validate_opts commands cmd
7
+ COMPREPLY=()
8
+ cur="${COMP_WORDS[COMP_CWORD]}"
9
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
10
+ cmd="${COMP_WORDS[1]}"
11
+
12
+ commands="<%= all_commands.join (' ') %>"
13
+ global_opts="-h --help -t --trace -v --version"
14
+
15
+ <% all_commands.each do |command| %>
16
+ <%= %(#{command}_opts="#{options_for_command command}") %>
17
+ <% end %>
18
+
19
+ if [[ ${cur} == -* ]] ; then
20
+ case "${cmd}" in
21
+ report)
22
+ opts=$report_opts
23
+ ;;
24
+ setup)
25
+ opts=$setup_opts
26
+ ;;
27
+ validate)
28
+ opts=$validate_opts
29
+ ;;
30
+ *)
31
+ opts=$global_opts
32
+ ;;
33
+ esac
34
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
35
+ elif [[ ${prev} == branch_io ]] ; then
36
+ COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) )
37
+ else
38
+ COMPREPLY=( $(compgen -o default ${cur}) )
39
+ fi
40
+ return 0
41
+ }
42
+ complete -F _branch_io_complete branch_io
@@ -0,0 +1,13 @@
1
+ #!/bin/zsh
2
+ # This file is generated. Run rake readme to regenerate it.
3
+
4
+ _branch_io_complete() {
5
+ local word opts
6
+ word="$1"
7
+ opts="-h --help -t --trace -v --version"
8
+ <%= %(opts = "$opts #{options_for_command 'setup'}") %>
9
+
10
+ reply=( "${(ps: :)opts}" )
11
+ }
12
+
13
+ compctl -K _branch_io_complete branch_io
@@ -61,10 +61,12 @@ module BranchIOCLI
61
61
  attr_reader :workspace
62
62
  attr_reader :workspace_path
63
63
  attr_reader :pod_repo_update
64
+ attr_reader :sdk
64
65
 
65
66
  def initialize(options)
66
67
  @options = options
67
68
  @pod_repo_update = options.pod_repo_update if self.class.available_options.map(&:name).include?(:pod_repo_update)
69
+ @sdk = "iphonesimulator" # to load Xcode build settings for commands without a --sdk option
68
70
 
69
71
  Configuration.current = self
70
72
 
@@ -359,7 +361,7 @@ EOF
359
361
  return @branch_imports if @branch_imports
360
362
 
361
363
  source_files = target.source_build_phase.files.map { |f| f.file_ref.real_path.to_s }
362
- source_files << bridging_header_path if bridging_header_path
364
+ source_files << bridging_header_path if bridging_header_path && File.exist?(bridging_header_path)
363
365
  @branch_imports = source_files.compact.map do |f|
364
366
  imports = branch_imports_from_file f
365
367
  next {} if imports.empty?
@@ -377,6 +379,10 @@ EOF
377
379
  imports << "#{line_no}: #{line.chomp}"
378
380
  end
379
381
  imports
382
+ rescue StandardError
383
+ # Quietly ignore anything that can't be opened for now.
384
+ # TODO: Get these errors into report output.
385
+ []
380
386
  end
381
387
 
382
388
  def method_missing(method_sym, *arguments, &block)
@@ -29,6 +29,7 @@ module BranchIOCLI
29
29
 
30
30
  def initialize(configuration)
31
31
  @configuration = configuration
32
+
32
33
  load_settings_from_xcode
33
34
  end
34
35
 
@@ -1,5 +1,6 @@
1
1
  require "branch_io_cli/format/highline_format"
2
2
  require "branch_io_cli/format/markdown_format"
3
+ require "branch_io_cli/format/shell_format"
3
4
 
4
5
  module BranchIOCLI
5
6
  module Format
@@ -0,0 +1,34 @@
1
+ module BranchIOCLI
2
+ module Format
3
+ module ShellFormat
4
+ include Format
5
+
6
+ def option(opt)
7
+ o = @configuration.available_options.find { |o1| o1.name == opt.to_sym }
8
+
9
+ cli_opt = opt.to_s.gsub(/_/, '-')
10
+
11
+ all_opts = o.aliases || []
12
+
13
+ if o.nil? || o.default_value.nil? || o.default_value != true
14
+ all_opts << "--#{cli_opt}"
15
+ else
16
+ all_opts << "--no-#{cli_opt}"
17
+ end
18
+
19
+ all_opts.join(" ")
20
+ end
21
+
22
+ def all_commands
23
+ Dir[File.expand_path(File.join("..", "..", "command", "**_command.rb"), __FILE__)].map { |p| p.sub(%r{^.*/([a-z0-9_]+)_command.rb$}, '\1') }
24
+ end
25
+
26
+ def options_for_command(command)
27
+ @configuration = Object.const_get("BranchIOCLI")
28
+ .const_get("Configuration")
29
+ .const_get("#{command.capitalize}Configuration")
30
+ @configuration.available_options.map { |o| option(o.name) }.join(" ")
31
+ end
32
+ end
33
+ end
34
+ end
@@ -168,11 +168,11 @@ module BranchIOCLI
168
168
  report += " Branch key(s) #{annotation}:\n"
169
169
  if branch_key.kind_of? Hash
170
170
  branch_key.each_key do |key|
171
- resolved_key = helper.expand_build_settings branch_key[key], config.target, configuration
171
+ resolved_key = config.target.expand_build_settings branch_key[key], configuration
172
172
  report += " #{key.capitalize}: #{resolved_key}\n"
173
173
  end
174
174
  elsif branch_key
175
- resolved_key = helper.expand_build_settings branch_key, config.target, configuration
175
+ resolved_key = config.target.expand_build_settings branch_key, configuration
176
176
  report += " #{resolved_key}\n"
177
177
  else
178
178
  report += " (none found)\n"
@@ -72,7 +72,13 @@ module Xcodeproj
72
72
  setting_value = resolved_build_setting(setting_name, false)[configuration]
73
73
  end
74
74
 
75
- return if setting_value.nil?
75
+ # TODO: What is the correct resolution order here? Which overrides which in
76
+ # Xcode?
77
+ if setting_value.nil? && defined?(BranchIOCLI::Configuration::XcodeSettings)
78
+ setting_value = BranchIOCLI::Configuration::XcodeSettings[configuration][setting_name]
79
+ end
80
+
81
+ return nil if setting_value.nil?
76
82
 
77
83
  expand_build_settings setting_value, configuration
78
84
  end
@@ -89,13 +95,10 @@ module Xcodeproj
89
95
  search_position = 0
90
96
  string = string.clone
91
97
 
92
- # HACK: When matching against an xcconfig, as here, sometimes the macro is just returned
93
- # without delimiters, e.g. TARGET_NAME or BUILT_PRODUCTS_DIR/Branch.framework. We allow
94
- # these two patterns for now.
95
- while (matches = %r{\$\(([^(){}]*)\)|\$\{([^(){}]*)\}|^([A-Z_]+)(/.*)?$}.match(string, search_position))
96
- original_macro = matches[1] || matches[2] || matches[3]
97
- delimiter_length = matches[3] ? 0 : 3 # $() or ${}
98
- delimiter_offset = matches[3] ? 0 : 2 # $( or ${
98
+ while (matches = /\$\(([^(){}]*)\)|\$\{([^(){}]*)\}/.match(string, search_position))
99
+ original_macro = matches[1] || matches[2]
100
+ delimiter_length = 3 # $() or ${}
101
+ delimiter_offset = 2 # $( or ${
99
102
  search_position = string.index(original_macro) - delimiter_offset
100
103
 
101
104
  if (m = /^(.+):(.+)$/.match original_macro)
@@ -118,6 +121,15 @@ module Xcodeproj
118
121
  string.gsub!(/\$\(#{original_macro}\)|\$\{#{original_macro}\}|^#{original_macro}/, expanded_macro)
119
122
  search_position += expanded_macro.length
120
123
  end
124
+
125
+ # HACK: When matching against an xcconfig, as here, sometimes the macro is just returned
126
+ # without delimiters, e.g. TARGET_NAME or PROJECT_DIR/PROJECT_NAME/BridgingHeader.h. We allow
127
+ # these two patterns for now.
128
+ string = string.split("/").map do |component|
129
+ next component unless component =~ /^[A-Z0-9_]+$/
130
+ expanded_build_setting(component, configuration) || component
131
+ end.join("/")
132
+
121
133
  string
122
134
  end
123
135
  end
@@ -1,3 +1,3 @@
1
1
  module BranchIOCLI
2
- VERSION = "0.12.0"
2
+ VERSION = "0.12.1"
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.12.0
4
+ version: 0.12.1
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-11-18 00:00:00.000000000 Z
12
+ date: 2017-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: CFPropertyList
@@ -288,6 +288,8 @@ files:
288
288
  - lib/assets/patches/open_url_swift.yml
289
289
  - lib/assets/patches/swift_import.yml
290
290
  - lib/assets/templates/command.erb
291
+ - lib/assets/templates/completion.bash.erb
292
+ - lib/assets/templates/completion.zsh.erb
291
293
  - lib/assets/templates/program_description.erb
292
294
  - lib/assets/templates/report_description.erb
293
295
  - lib/assets/templates/setup_description.erb
@@ -313,6 +315,7 @@ files:
313
315
  - lib/branch_io_cli/format.rb
314
316
  - lib/branch_io_cli/format/highline_format.rb
315
317
  - lib/branch_io_cli/format/markdown_format.rb
318
+ - lib/branch_io_cli/format/shell_format.rb
316
319
  - lib/branch_io_cli/helper.rb
317
320
  - lib/branch_io_cli/helper/android_helper.rb
318
321
  - lib/branch_io_cli/helper/branch_helper.rb