fastlane 1.42.0 → 1.43.0

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
  SHA1:
3
- metadata.gz: 0c03722df09da95510991ab9eea200d5d7c55e7b
4
- data.tar.gz: 4e927ca836a174e46e5e458f31e46f9bd6bbdacc
3
+ metadata.gz: 95994f49466294aa1e7ef950d47a5a9788e59617
4
+ data.tar.gz: d6adab25fe8157c89a419147fbd77ba2c91c740e
5
5
  SHA512:
6
- metadata.gz: 6dac74d4c244047309f411deeabf2fe600bb059eea4fa5e07625c4e8573e777e31f3f5c690b6a80e19219d9ea66a9e4efe89e1315de07c6061e46cdaf8fde2b8
7
- data.tar.gz: 0af452b64822bd790c9f4d48cb33c1d652f54f48c9e66ffc25a0f2611903cc67273a6d53b8d685f61fc23e3398691f925051971f53cac252333179ffe549cd6a
6
+ metadata.gz: ea9c34530dd8289efae9ee733ba0f0d59286956088bf058564c8371cb1108cf41ff7bf64f06b0fef1e0d129ae29758f64179b2abaa8d5e3be509c87950b39f3c
7
+ data.tar.gz: 80aad4ac9589e98c826a0ac1382f8a026fab6550d8259e495dc967c55e6321780c9a4af1581c6149cf8f0dfe051dd978fa29fede661ae943b2aa26c63b00f038
@@ -0,0 +1,96 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ CREATE_PULL_REQUEST_HTML_URL = :CREATE_PULL_REQUEST_HTML_URL
5
+ end
6
+
7
+ class CreatePullRequestAction < Action
8
+ def self.run(params)
9
+ require 'excon'
10
+ require 'base64'
11
+
12
+ Helper.log.info "Creating new pull request from '#{params[:head]}' to branch '#{params[:base]}' of '#{params[:repo]}'"
13
+
14
+ url = "https://api.github.com/repos/#{params[:repo]}/pulls"
15
+ headers = { 'User-Agent' => 'fastlane-create_pull_request' }
16
+ headers['Authorization'] = "Basic #{Base64.strict_encode64(params[:api_token])}" if params[:api_token]
17
+
18
+ data = {
19
+ 'title' => params[:title],
20
+ 'head' => params[:head],
21
+ 'base' => params[:base]
22
+ }
23
+
24
+ data['body'] = params[:body] if params[:body]
25
+
26
+ response = Excon.post(url, headers: headers, body: data.to_json)
27
+
28
+ if response[:status] == 201
29
+ body = JSON.parse(response.body)
30
+ number = body['number']
31
+ html_url = body['html_url']
32
+ Helper.log.info "Successfully created pull request ##{number}. You can see it at '#{html_url}'".green
33
+
34
+ Actions.lane_context[SharedValues::CREATE_PULL_REQUEST_HTML_URL] = html_url
35
+ else
36
+ if response[:status] != 200
37
+ Helper.log.error "GitHub responded with #{response[:status]}: #{response[:body]}".red
38
+ end
39
+ end
40
+ end
41
+
42
+ #####################################################
43
+ # @!group Documentation
44
+ #####################################################
45
+
46
+ def self.description
47
+ "This will create a new pull request on GitHub"
48
+ end
49
+
50
+ def self.available_options
51
+ [
52
+ FastlaneCore::ConfigItem.new(key: :api_token,
53
+ env_name: "GITHUB_PULL_REQUEST_API_TOKEN",
54
+ description: "Personal API Token for GitHub - generate one at https://github.com/settings/tokens",
55
+ is_string: true,
56
+ optional: false),
57
+ FastlaneCore::ConfigItem.new(key: :repo,
58
+ env_name: "GITHUB_PULL_REQUEST_REPO",
59
+ description: "The name of the repository you want to submit the pull request to",
60
+ is_string: true,
61
+ optional: false),
62
+ FastlaneCore::ConfigItem.new(key: :title,
63
+ env_name: "GITHUB_PULL_REQUEST_TITLE",
64
+ description: "The title of the pull request",
65
+ is_string: true,
66
+ optional: false),
67
+ FastlaneCore::ConfigItem.new(key: :body,
68
+ env_name: "GITHUB_PULL_REQUEST_BODY",
69
+ description: "The contents of the pull request",
70
+ is_string: true,
71
+ optional: true),
72
+ FastlaneCore::ConfigItem.new(key: :head,
73
+ env_name: "GITHUB_PULL_REQUEST_HEAD",
74
+ description: "The name of the branch where your changes are implemented (defaults to the current branch name)",
75
+ is_string: true,
76
+ default_value: Actions.git_branch,
77
+ optional: true),
78
+ FastlaneCore::ConfigItem.new(key: :base,
79
+ env_name: "GITHUB_PULL_REQUEST_BASE",
80
+ description: "The name of the branch you want your changes pulled into (defaults to `master`)",
81
+ is_string: true,
82
+ default_value: 'master',
83
+ optional: true)
84
+ ]
85
+ end
86
+
87
+ def self.author
88
+ ["seei"]
89
+ end
90
+
91
+ def self.is_supported?(platform)
92
+ return true
93
+ end
94
+ end
95
+ end
96
+ end
@@ -26,7 +26,7 @@ module Fastlane
26
26
  return command.join(' ') if Helper.is_test?
27
27
 
28
28
  Actions.sh(command.join(' '))
29
- Helper.log.info 'Sucesfully pushed to remote.'
29
+ Helper.log.info 'Successfully pushed to remote.'
30
30
  end
31
31
 
32
32
  def self.description
@@ -5,10 +5,18 @@ module Fastlane
5
5
  end
6
6
 
7
7
  class SlatherAction < Action
8
+ # rubocop:disable Metrics/CyclomaticComplexity
9
+ # rubocop:disable Metrics/PerceivedComplexity
8
10
  def self.run(params)
9
- Actions.verify_gem!('slather')
11
+ # This will fail if using Bundler. Skip the check rather than needing to
12
+ # require bundler
13
+ unless params[:use_bundle_exec]
14
+ Actions.verify_gem!('slather')
15
+ end
10
16
 
11
- command = "slather coverage "
17
+ command = ""
18
+ command += "bundle exec " if params[:use_bundle_exec]
19
+ command += "slather coverage "
12
20
  command += " --build-directory #{params[:build_directory]}" if params[:build_directory]
13
21
  command += " --input-format #{params[:input_format]}" if params[:input_format]
14
22
  command += " --scheme #{params[:scheme]}" if params[:scheme]
@@ -128,7 +136,12 @@ Slather is available at https://github.com/venmo/slather
128
136
  FastlaneCore::ConfigItem.new(key: :ignore,
129
137
  env_name: "FL_SLATHER_IGNORE",
130
138
  description: "Tell slather to ignore files matching a path",
131
- optional: true)
139
+ optional: true),
140
+ FastlaneCore::ConfigItem.new(key: :use_bundle_exec,
141
+ env_name: "FL_SLATHER_USE_BUNDLE_EXEC",
142
+ description: "Use bundle exec to execute slather. Make sure it is in the Gemfile",
143
+ is_string: false,
144
+ default_value: false)
132
145
  ]
133
146
  end
134
147
 
@@ -0,0 +1,86 @@
1
+ module Fastlane
2
+ module Actions
3
+ class UpdateAppIdentifierAction < Action
4
+ def self.run(params)
5
+ require 'plist'
6
+ require 'xcodeproj'
7
+
8
+ identifier_key = 'PRODUCT_BUNDLE_IDENTIFIER'
9
+
10
+ # Read existing plist file
11
+ info_plist_path = File.join(params[:xcodeproj], '..', params[:plist_path])
12
+ raise "Couldn't find info plist file at path '#{params[:plist_path]}'".red unless File.exist?(info_plist_path)
13
+ plist = Plist.parse_xml(info_plist_path)
14
+
15
+ # Check if current app identifier product bundle identifier
16
+ if plist['CFBundleIdentifier'] == "$(#{identifier_key})"
17
+ # Load .xcodeproj
18
+ project_path = params[:xcodeproj]
19
+ project = Xcodeproj::Project.open(project_path)
20
+
21
+ # Fetch the build configuration objects
22
+ configs = project.objects.select { |obj| obj.isa == 'XCBuildConfiguration' && !obj.build_settings[identifier_key].nil? }
23
+ raise "Info plist uses $(#{identifier_key}), but xcodeproj does not".red unless configs.count > 0
24
+
25
+ # For each of the build configurations, set app identifier
26
+ configs.each do |c|
27
+ c.build_settings[identifier_key] = params[:app_identifier]
28
+ end
29
+
30
+ # Write changes to the file
31
+ project.save
32
+
33
+ Helper.log.info "Updated #{params[:xcodeproj]} 💾.".green
34
+ else
35
+ # Update plist value
36
+ plist['CFBundleIdentifier'] = params[:app_identifier]
37
+
38
+ # Write changes to file
39
+ plist_string = Plist::Emit.dump(plist)
40
+ File.write(info_plist_path, plist_string)
41
+
42
+ Helper.log.info "Updated #{params[:plist_path]} 💾.".green
43
+ end
44
+ end
45
+
46
+ #####################################################
47
+ # @!group Documentation
48
+ #####################################################
49
+
50
+ def self.is_supported?(platform)
51
+ [:ios].include?(platform)
52
+ end
53
+
54
+ def self.description
55
+ "Update the project's bundle identifier"
56
+ end
57
+
58
+ def self.available_options
59
+ [
60
+ FastlaneCore::ConfigItem.new(key: :xcodeproj,
61
+ env_name: "FL_UPDATE_APP_IDENTIFIER_PROJECT_PATH",
62
+ description: "Path to your Xcode project",
63
+ default_value: Dir['*.xcodeproj'].first,
64
+ verify_block: proc do |value|
65
+ raise "Please pass the path to the project, not the workspace".red if value.include? "workspace"
66
+ raise "Could not find Xcode project".red unless File.exist?(value)
67
+ end),
68
+ FastlaneCore::ConfigItem.new(key: :plist_path,
69
+ env_name: "FL_UPDATE_APP_IDENTIFIER_PLIST_PATH",
70
+ description: "Path to info plist, relative to your Xcode project",
71
+ verify_block: proc do |value|
72
+ raise "Invalid plist file".red unless value[-6..-1].downcase == ".plist"
73
+ end),
74
+ FastlaneCore::ConfigItem.new(key: :app_identifier,
75
+ env_name: 'FL_UPDATE_APP_IDENTIFIER',
76
+ description: 'The app Identifier you want to set',
77
+ default_value: ENV['PRODUCE_APP_IDENTIFIER'])
78
+ ]
79
+ end
80
+
81
+ def self.authors
82
+ ['squarefrog', 'tobiasstrebitzer']
83
+ end
84
+ end
85
+ end
86
+ end
@@ -3,6 +3,7 @@ module Fastlane
3
3
  # Execute a shell command
4
4
  # This method will output the string and execute it
5
5
  # Just an alias for sh_no_action
6
+ # When running this in tests, it will return the actual command instead of executing it
6
7
  # @param log [boolean] should fastlane print out the executed command
7
8
  def self.sh(command, log: true)
8
9
  sh_no_action(command, log: log)
@@ -25,6 +26,7 @@ module Fastlane
25
26
  IO.popen(command, err: [:child, :out]) do |io|
26
27
  io.sync = true
27
28
  io.each do |line|
29
+ next unless log
28
30
  Helper.log.info ['[SHELL]', line.strip].join(': ')
29
31
  result << line
30
32
  end
@@ -1,3 +1,3 @@
1
1
  module Fastlane
2
- VERSION = '1.42.0'
2
+ VERSION = '1.43.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.42.0
4
+ version: 1.43.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-30 00:00:00.000000000 Z
11
+ date: 2015-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: krausefx-shenzhen
@@ -580,6 +580,7 @@ files:
580
580
  - lib/fastlane/actions/copy_artifacts.rb
581
581
  - lib/fastlane/actions/crashlytics.rb
582
582
  - lib/fastlane/actions/create_keychain.rb
583
+ - lib/fastlane/actions/create_pull_request.rb
583
584
  - lib/fastlane/actions/debug.rb
584
585
  - lib/fastlane/actions/default_platform.rb
585
586
  - lib/fastlane/actions/delete_keychain.rb
@@ -663,6 +664,7 @@ files:
663
664
  - lib/fastlane/actions/typetalk.rb
664
665
  - lib/fastlane/actions/unlock_keychain.rb
665
666
  - lib/fastlane/actions/update_app_group_identifiers.rb
667
+ - lib/fastlane/actions/update_app_identifier.rb
666
668
  - lib/fastlane/actions/update_fastlane.rb
667
669
  - lib/fastlane/actions/update_info_plist.rb
668
670
  - lib/fastlane/actions/update_project_code_signing.rb