fastlane-plugin-ios_flavors 0.1.2 → 0.1.3

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
  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