fastlane-plugin-ios_flavors 0.1.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df7d598d1a31cfd1e8ace3ca65bc58b878b2e042ff70003cd8430f9028800571
4
- data.tar.gz: 1a37509b59b16f29884853e3b7af57d7c625e92c7034f4907979fa51a26ee99e
3
+ metadata.gz: 7142da69c9365ae2ddb0529d0193a9c624d91d382c3d50de05730d140c3e5c23
4
+ data.tar.gz: ee07e9021165000d8b7c0a284f5855b93a4e0c8a75d9ada213ada9bc896406b0
5
5
  SHA512:
6
- metadata.gz: cfc5a802cdbe7f63802c8cf95a926f9da95e2c006e94561f05c47d1a41a11ea9aa0a0a326dc349213e87846eba12aae1ac05f2e1ac8a33413f34f08b931781f8
7
- data.tar.gz: bd6f574701e4fe611d8057ad832cb5217bbe271fb3702324526ef3a8424d5c52f5f9c31e9c512ea21db4a59bbac17b42cd68848dbc280da56bd35bb8b7d83e04
6
+ metadata.gz: 155d51aa457a53bdba92352e32a0f72538ae6685546c580fcbcd7c7e3f5d2bc9a3b4de95b7e6c619f840027946fcf277a5b9d94081af96631dd2538c6f3c4ce4
7
+ data.tar.gz: c73c7ac047f47f6d10937045875e92fa4b06ddd01f222624f6e062d8bdf40208a7d306f021638223c2dc0c22118274c16414f92af332a25494b5d8b858e54d48
@@ -4,8 +4,8 @@ require_relative '../helper/ios_flavors_helper'
4
4
  module Fastlane
5
5
  module Actions
6
6
  module SharedValues
7
- IOS_FLAVORS_INPUT = :IOS_FLAVORS_INPUT
8
- IOS_FLAVORS_OUTPUT = :IOS_FLAVORS_OUTPUT
7
+ IOS_FLAVORS_IPA_INPUT = :IOS_FLAVORS_IPA_INPUT
8
+ IOS_FLAVORS_IPA_OUTPUT = :IOS_FLAVORS_IPA_OUTPUT
9
9
  IOS_FLAVORS_SIGNING_IDENTITY = :IOS_FLAVORS_SIGNING_IDENTITY
10
10
  IOS_FLAVORS_PROVISIONING_PROFILE = :IOS_FLAVORS_PROVISIONING_PROFILE
11
11
  end
@@ -13,7 +13,7 @@ module Fastlane
13
13
  class CreateIpaFlavorsAction < Action
14
14
  def self.run(params)
15
15
  Helper::IOSFlavorsHelper.verify_dependencies
16
- params = Helper::IOSFlavorsHelper.parse_params(params)
16
+ params = parse_params(params)
17
17
  create_flavors_from(ipa: params[:ipa], target_plist: params[:target_plist])
18
18
  end
19
19
 
@@ -27,8 +27,8 @@ module Fastlane
27
27
 
28
28
  def self.output
29
29
  [
30
- ['IOS_FLAVORS_INPUT', 'The input .ipa file'],
31
- ['IOS_FLAVORS_OUTPUT', 'The output directory containing flavors'],
30
+ ['IOS_FLAVORS_IPA_INPUT', 'The input .ipa file'],
31
+ ['IOS_FLAVORS_IPA_OUTPUT', 'The output directory containing flavors'],
32
32
  ['IOS_FLAVORS_SIGNING_IDENTITY', 'The signing identity used to sign flavors'],
33
33
  ['IOS_FLAVORS_PROVISIONING_PROFILE', 'The provisioning profile used to sign flavors']
34
34
  ]
@@ -43,7 +43,7 @@ module Fastlane
43
43
  type: String),
44
44
 
45
45
  FastlaneCore::ConfigItem.new(key: :flavors,
46
- env_name: "IOS_FLAVORS_INPUT",
46
+ env_name: "IOS_FLAVORS_DIRECTORY",
47
47
  description: "The directory containing .plist files to use to create your flavors",
48
48
  default_value: "fastlane/flavors",
49
49
  optional: true,
@@ -81,9 +81,42 @@ module Fastlane
81
81
  [:ios].include?(platform)
82
82
  end
83
83
 
84
+ def self.parse_params(params)
85
+ ipa = params[:ipa] || lane_context[SharedValues::IPA_OUTPUT_PATH]
86
+ flavors = params[:flavors] || 'flavors'
87
+ output_directory = params[:output_directory] || 'build_output/flavors'
88
+ target_plist = params[:target_plist] || 'Info.plist'
89
+ signing_identity = params[:signing_identity]
90
+ provisioning_profile = params[:provisioning_profile] || Helper::IOSFlavorsHelper.locate_installed_provisioning_profile_for_ipa(params[:ipa]) || lane_context[SharedValues::SIGH_PROFILE_PATH]
91
+
92
+ raise "You must supply an :ipa (can be omitted if using 'ipa')" unless ipa
93
+ raise 'You must supply a :flavors directory of .plist files.' unless flavors
94
+ raise 'You must supply a :target_plist to be replaced in the :ipa.' unless target_plist
95
+ raise 'You must supply a :signing_identity' unless signing_identity
96
+ raise "Could not locate a :provisioning_profile for the :ipa provided." unless provisioning_profile
97
+
98
+ raise "#{ipa} not found." unless File.file?(ipa)
99
+ raise "#{flavors} not found." unless Dir.exist?(flavors)
100
+ # TODO: Add check for signing_identity validity?
101
+ raise "#{provisioning_profile} not found." unless File.file?(provisioning_profile)
102
+
103
+ lane_context[SharedValues::IOS_FLAVORS_IPA_INPUT] = File.expand_path(flavors)
104
+ lane_context[SharedValues::IOS_FLAVORS_IPA_OUTPUT] = File.expand_path(output_directory)
105
+ lane_context[SharedValues::IOS_FLAVORS_SIGNING_IDENTITY] = signing_identity
106
+ lane_context[SharedValues::IOS_FLAVORS_PROVISIONING_PROFILE] = File.expand_path(provisioning_profile)
107
+
108
+ return {
109
+ ipa: File.expand_path(ipa),
110
+ flavors: flavors,
111
+ target_plist: target_plist,
112
+ signing_identity: signing_identity,
113
+ provisioning_profile: provisioning_profile
114
+ }
115
+ end
116
+
84
117
  def self.create_flavors_from(ipa:, target_plist:)
85
- input_directory = Actions.lane_context[SharedValues::IOS_FLAVORS_INPUT]
86
- output_directory = Actions.lane_context[SharedValues::IOS_FLAVORS_OUTPUT]
118
+ input_directory = lane_context[SharedValues::IOS_FLAVORS_IPA_INPUT]
119
+ output_directory = lane_context[SharedValues::IOS_FLAVORS_IPA_OUTPUT]
87
120
 
88
121
  FileUtils.mkdir_p(output_directory)
89
122
 
@@ -93,9 +126,9 @@ module Fastlane
93
126
  end
94
127
 
95
128
  def self.create_flavor_ipa(ipa:, plist:, target_plist:)
96
- output_directory = Actions.lane_context[SharedValues::IOS_FLAVORS_OUTPUT]
97
- signing_identity = Actions.lane_context[SharedValues::IOS_FLAVORS_SIGNING_IDENTITY]
98
- provisioning_profile = Actions.lane_context[SharedValues::IOS_FLAVORS_PROVISIONING_PROFILE]
129
+ output_directory = lane_context[SharedValues::IOS_FLAVORS_IPA_OUTPUT]
130
+ signing_identity = lane_context[SharedValues::IOS_FLAVORS_SIGNING_IDENTITY]
131
+ provisioning_profile = lane_context[SharedValues::IOS_FLAVORS_PROVISIONING_PROFILE]
99
132
 
100
133
  expanded = {
101
134
  plist: File.expand_path(plist)
@@ -107,7 +140,7 @@ module Fastlane
107
140
  UI.header "Flavor: #{output_filename}"
108
141
 
109
142
  UI.message "Copying #{ipa} to #{output_ipa}"
110
- FileUtils.cp(ipa, output_ipa)
143
+ FileUtils.cp_r(ipa, output_ipa, remove_destination: true)
111
144
 
112
145
  UI.message "Replacing #{target_plist} with #{plist}"
113
146
  other_action.act(
@@ -0,0 +1,123 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/ios_flavors_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ module SharedValues
7
+ IOS_FLAVORS_APP_INPUT = :IOS_FLAVORS_APP_INPUT
8
+ IOS_FLAVORS_APP_OUTPUT = :IOS_FLAVORS_APP_OUTPUT
9
+ end
10
+
11
+ class CreateSimFlavorsAction < Action
12
+ def self.run(params)
13
+ Helper::IOSFlavorsHelper.verify_dependencies
14
+ params = parse_params(params)
15
+ create_flavors_from(app: params[:app], target_plist: params[:target_plist])
16
+ end
17
+
18
+ def self.description
19
+ "Create multiple build flavors of an iOS .app (for the simulator) using a directory of .plist files"
20
+ end
21
+
22
+ def self.authors
23
+ ["Zachary Davison"]
24
+ end
25
+
26
+ def self.output
27
+ [
28
+ ['IOS_FLAVORS_APP_INPUT', 'The input .app file'],
29
+ ['IOS_FLAVORS_APP_OUTPUT', 'The output directory containing flavors']
30
+ ]
31
+ end
32
+
33
+ def self.available_options
34
+ [
35
+ FastlaneCore::ConfigItem.new(key: :app,
36
+ env_name: "IOS_FLAVORS_APP",
37
+ description: "The .app file to use as a basis for creating your flavors",
38
+ optional: false,
39
+ type: String),
40
+
41
+ FastlaneCore::ConfigItem.new(key: :flavors,
42
+ env_name: "IOS_FLAVORS_DIRECTORY",
43
+ description: "The directory containing .plist files to use to create your flavors",
44
+ default_value: "fastlane/flavors",
45
+ optional: true,
46
+ type: String),
47
+
48
+ FastlaneCore::ConfigItem.new(key: :output_directory,
49
+ env_name: "IOS_FLAVORS_OUTPUT",
50
+ description: "The output flavors directory",
51
+ default_value: "fastlane/build_output/flavors",
52
+ optional: true,
53
+ type: String),
54
+
55
+ FastlaneCore::ConfigItem.new(key: :target_plist,
56
+ env_name: "IOS_FLAVORS_TARGET_PLIST",
57
+ description: "The name of the .plist file to overwrite with your flavor .plist",
58
+ default_value: "Info.plist",
59
+ optional: true,
60
+ type: String)
61
+ ]
62
+ end
63
+
64
+ def self.is_supported?(platform)
65
+ [:ios].include?(platform)
66
+ end
67
+
68
+ def self.parse_params(params)
69
+ app = params[:app]
70
+ flavors = params[:flavors] || 'flavors'
71
+ output_directory = params[:output_directory] || 'build_output/flavors'
72
+ target_plist = params[:target_plist] || 'Info.plist'
73
+
74
+ raise "You must supply an :app." unless app
75
+ raise 'You must supply a :flavors directory of .plist files.' unless flavors
76
+ raise 'You must supply a :target_plist to be replaced in the :app.' unless target_plist
77
+
78
+ raise "#{app} not found." unless Dir.exist?(app)
79
+ raise "#{flavors} not found." unless Dir.exist?(flavors)
80
+
81
+ lane_context[SharedValues::IOS_FLAVORS_APP_INPUT] = File.expand_path(flavors)
82
+ lane_context[SharedValues::IOS_FLAVORS_APP_OUTPUT] = File.expand_path(output_directory)
83
+
84
+ return {
85
+ app: File.expand_path(app),
86
+ flavors: flavors,
87
+ target_plist: target_plist
88
+ }
89
+ end
90
+
91
+ def self.create_flavors_from(app:, target_plist:)
92
+ input_directory = Actions.lane_context[SharedValues::IOS_FLAVORS_APP_INPUT]
93
+ output_directory = Actions.lane_context[SharedValues::IOS_FLAVORS_APP_OUTPUT]
94
+
95
+ FileUtils.mkdir_p(output_directory)
96
+
97
+ Dir["#{input_directory}/*.plist"].each do |flavor|
98
+ self.create_flavor_app(app: app, plist: flavor, target_plist: target_plist)
99
+ end
100
+ end
101
+
102
+ def self.create_flavor_app(app:, plist:, target_plist:)
103
+ output_directory = Actions.lane_context[SharedValues::IOS_FLAVORS_APP_OUTPUT]
104
+
105
+ expanded = {
106
+ plist: File.expand_path(plist)
107
+ }
108
+
109
+ output_filename = File.basename(plist, '.plist')
110
+ output_app = "#{output_directory}/#{output_filename}.app"
111
+
112
+ UI.header "Flavor: #{output_filename}"
113
+
114
+ UI.message "Copying #{app} to #{output_app}"
115
+ FileUtils.cp_r(app, output_app, remove_destination: true)
116
+
117
+ UI.message "Replacing #{output_app}/#{target_plist} with #{plist}"
118
+ FileUtils.cp_r(expanded[:plist],"#{output_app}/#{target_plist}", remove_destination: true)
119
+ end
120
+ end
121
+ end
122
+ end
123
+
@@ -12,39 +12,6 @@ module Fastlane
12
12
  raise 'fastlane-plugin-act is required.' unless defined?(Fastlane::Actions::ActAction)
13
13
  end
14
14
 
15
- def self.parse_params(params)
16
- ipa = params[:ipa] || Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH]
17
- flavors = params[:flavors] || 'flavors'
18
- output_directory = params[:output_directory] || 'build_output/flavors'
19
- target_plist = params[:target_plist] || 'Info.plist'
20
- signing_identity = params[:signing_identity]
21
- provisioning_profile = params[:provisioning_profile] || locate_installed_provisioning_profile_for_ipa(params[:ipa]) || Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATH]
22
-
23
- raise "You must supply an :ipa (can be omitted if using 'ipa')" unless ipa
24
- raise 'You must supply a :flavors directory of .plist files.' unless flavors
25
- raise 'You must supply a :target_plist to be replaced in the :ipa.' unless flavors
26
- raise 'You must supply a :signing_identity' unless signing_identity
27
- raise "Could not locate a :provisioning_profile for the :ipa provided." unless provisioning_profile
28
-
29
- raise "#{ipa} not found." unless File.file?(ipa)
30
- raise "#{flavors} not found." unless Dir.exist?(flavors)
31
- # TODO: Add check for signing_identity validity?
32
- raise "#{provisioning_profile} not found." unless File.file?(provisioning_profile)
33
-
34
- Actions.lane_context[Actions::SharedValues::IOS_FLAVORS_INPUT] = File.expand_path(flavors)
35
- Actions.lane_context[Actions::SharedValues::IOS_FLAVORS_OUTPUT] = File.expand_path(output_directory)
36
- Actions.lane_context[Actions::SharedValues::IOS_FLAVORS_SIGNING_IDENTITY] = signing_identity
37
- Actions.lane_context[Actions::SharedValues::IOS_FLAVORS_PROVISIONING_PROFILE] = File.expand_path(provisioning_profile)
38
-
39
- return {
40
- ipa: File.expand_path(ipa),
41
- flavors: flavors,
42
- target_plist: target_plist,
43
- signing_identity: signing_identity,
44
- provisioning_profile: provisioning_profile
45
- }
46
- end
47
-
48
15
  def self.locate_installed_provisioning_profile_for_ipa(path)
49
16
 
50
17
  working_directory = Dir.pwd
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module IosFlavors
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-ios_flavors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zachary Davison
@@ -160,6 +160,7 @@ files:
160
160
  - README.md
161
161
  - lib/fastlane/plugin/ios_flavors.rb
162
162
  - lib/fastlane/plugin/ios_flavors/actions/create_ipa_flavors.rb
163
+ - lib/fastlane/plugin/ios_flavors/actions/create_sim_flavors.rb
163
164
  - lib/fastlane/plugin/ios_flavors/helper/ios_flavors_helper.rb
164
165
  - lib/fastlane/plugin/ios_flavors/version.rb
165
166
  homepage: https://github.com/zdavison/fastlane-plugin-ios_flavors