fastlane-craft 1.2.7 → 1.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fastlane_craft.rb +0 -2
- data/lib/fastlane_craft/tag_release.rb +54 -8
- data/lib/fastlane_craft/tag_release_manager.rb +62 -48
- data/lib/fastlane_craft/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed453af9060430952658fc7c3626694130a3fa41ef48c429580072ec6408d0db
|
4
|
+
data.tar.gz: 5a617fdd68fffa5c5da35bbb9eca75038b31ecf75aa6c5ae747fae5c6143d5c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 426de8520f37bce11b75348448ba6ead10355585cbc5f40abeba393cc9da85163da52bdade1e36f7c823e55a44b71ade01bdb6aa47d51e9a2bc03bbaabfc7777
|
7
|
+
data.tar.gz: c00e7387f47338730e748e7cd755fadfb380e00cb0be21c4b804266ddfe02fc3fceeca6c89b9fb1d41a58eab13f65ab186f5db6e6d7b47bfcb1752c18217294f
|
data/lib/fastlane_craft.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative 'tag_release_manager'
|
2
|
+
require 'fastlane'
|
2
3
|
|
3
4
|
module Fastlane
|
4
5
|
module Actions
|
@@ -7,7 +8,11 @@ module Fastlane
|
|
7
8
|
|
8
9
|
def self.run(params)
|
9
10
|
TagReleaseManager.new(
|
10
|
-
params[:
|
11
|
+
params[:scheme],
|
12
|
+
params[:info_plist],
|
13
|
+
params[:extra_info_plists],
|
14
|
+
params[:branch],
|
15
|
+
params[:tag] || Actions.last_git_tag_name,
|
11
16
|
params[:target_suffix]
|
12
17
|
).release
|
13
18
|
end
|
@@ -27,24 +32,65 @@ module Fastlane
|
|
27
32
|
def self.available_options
|
28
33
|
[
|
29
34
|
FastlaneCore::ConfigItem.new(
|
30
|
-
key: :
|
31
|
-
description: '
|
32
|
-
|
35
|
+
key: :scheme,
|
36
|
+
description: 'project scheme',
|
37
|
+
verify_block: proc do |value|
|
38
|
+
UI.user_error!('empty scheme') if value.empty?
|
39
|
+
end
|
33
40
|
),
|
34
41
|
FastlaneCore::ConfigItem.new(
|
35
|
-
key: :
|
42
|
+
key: :info_plist,
|
36
43
|
description: 'target info plist path',
|
37
44
|
verify_block: proc do |value|
|
38
|
-
msg = '
|
39
|
-
UI.user_error!(msg) unless
|
45
|
+
msg = 'info plist path not found'
|
46
|
+
UI.user_error!(msg) unless File.file?(value)
|
40
47
|
end
|
48
|
+
),
|
49
|
+
FastlaneCore::ConfigItem.new(
|
50
|
+
key: :extra_info_plists,
|
51
|
+
description: 'extra info plists paths',
|
52
|
+
type: Array,
|
53
|
+
default_value: [],
|
54
|
+
verify_block: proc do |value|
|
55
|
+
msg = 'invalid info plists paths'
|
56
|
+
UI.user_error!(msg) unless value.all? { |p| File.file?(p) }
|
57
|
+
end
|
58
|
+
),
|
59
|
+
FastlaneCore::ConfigItem.new(
|
60
|
+
key: :branch,
|
61
|
+
description: 'branch',
|
62
|
+
default_value: 'master',
|
63
|
+
verify_block: proc do |value|
|
64
|
+
UI.user_error!('invalid branch') if value.empty?
|
65
|
+
end
|
66
|
+
),
|
67
|
+
FastlaneCore::ConfigItem.new(
|
68
|
+
key: :tag,
|
69
|
+
description: 'git tag',
|
70
|
+
optional: true
|
71
|
+
),
|
72
|
+
FastlaneCore::ConfigItem.new(
|
73
|
+
key: :target_suffix,
|
74
|
+
description: 'Specific target suffix',
|
75
|
+
optional: true
|
41
76
|
)
|
42
77
|
]
|
43
78
|
end
|
44
79
|
|
45
80
|
def self.example_code
|
46
81
|
[
|
47
|
-
'tag_release(
|
82
|
+
'tag_release(
|
83
|
+
scheme: "AppScheme",
|
84
|
+
info_plist: "/path/to/info/plist"
|
85
|
+
)',
|
86
|
+
'tag_release(
|
87
|
+
scheme: "Application",
|
88
|
+
info_plist: "/path/to/info/plist",
|
89
|
+
extra_info_plists: ["plist1", "plist2"],
|
90
|
+
branch: "master",
|
91
|
+
tag: "2.3.0",
|
92
|
+
target_suffix: "_sfx"
|
93
|
+
)'
|
48
94
|
]
|
49
95
|
end
|
50
96
|
|
@@ -1,60 +1,74 @@
|
|
1
1
|
require_relative 'info_plist_controller'
|
2
|
+
require 'fastlane_core'
|
3
|
+
require 'fastlane'
|
2
4
|
|
3
5
|
module FastlaneCraft
|
4
6
|
class TagReleaseManager
|
5
|
-
|
7
|
+
include FastlaneCore
|
8
|
+
include Gem
|
9
|
+
|
10
|
+
def initialize(scheme, info_plist, extra_info_plists, branch, tag, target_suffix = nil)
|
11
|
+
raise 'Invalid Branch' if branch.empty?
|
12
|
+
raise 'Invalid Scheme' if scheme.empty?
|
13
|
+
raise 'Invalid Tag' if tag.nil? || tag.empty?
|
14
|
+
|
15
|
+
@scheme = scheme
|
16
|
+
@branch = branch
|
17
|
+
@tag = tag
|
6
18
|
@target_suffix = target_suffix
|
7
19
|
@plist_controller = InfoPlistController.new(info_plist, extra_info_plists)
|
8
20
|
end
|
9
21
|
|
10
22
|
def release
|
11
|
-
|
23
|
+
bump_version
|
24
|
+
archive
|
25
|
+
upload_to_tf
|
26
|
+
@plist_controller.bump_build_version_patch
|
27
|
+
push_version_bump
|
28
|
+
end
|
29
|
+
|
30
|
+
def bump_version
|
31
|
+
msg = 'The version of the tag is less than the actual app version'
|
32
|
+
UI.user_error! msg if tag_version < @plist_controller.version
|
33
|
+
UI.user_error! "Tag '#{@tag}' has no suffix: '#{@target_suffix}'" unless tag_valid?
|
34
|
+
return unless tag_version > @plist_controller.version
|
35
|
+
|
36
|
+
@plist_controller.set_version(tag_version)
|
37
|
+
@plist_controller.set_build_version(Version.new(tag_version.to_s + '.0'))
|
38
|
+
UI.success "Version was successfully bumped to #{version_dump}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def upload_to_tf
|
42
|
+
cmd = 'fastlane upload_to_testflight --skip_submission true'
|
43
|
+
raise "TF uploading Failed! Command execution error: '#{cmd}'" unless system(cmd)
|
44
|
+
end
|
45
|
+
|
46
|
+
def push_version_bump
|
47
|
+
cmd = "fastlane commit_version_bump -message #{version_dump} --force true"
|
48
|
+
raise "Git Commit Failed! Command execution error: '#{cmd}'" unless system(cmd)
|
49
|
+
|
50
|
+
cmd = "git push origin HEAD:#{@branch}"
|
51
|
+
raise "Git Push Failed! Command execution error: '#{cmd}'" unless system(cmd)
|
52
|
+
end
|
53
|
+
|
54
|
+
def tag_version
|
55
|
+
version_format = /[0-9.]+/
|
56
|
+
tag = @tag.match(version_format)[0]
|
57
|
+
Version.new(tag)
|
58
|
+
end
|
59
|
+
|
60
|
+
def tag_valid?
|
61
|
+
return true if @target_suffix.nil? || @target_suffix.empty?
|
62
|
+
@tag.end_with? @target_suffix
|
63
|
+
end
|
64
|
+
|
65
|
+
def archive
|
66
|
+
cmd = "fastlane gym --scheme #{@scheme} --export_method app-store"
|
67
|
+
raise "Archiving failed! Command execution error: '#{cmd}'" unless system(cmd)
|
68
|
+
end
|
69
|
+
|
70
|
+
def version_dump
|
71
|
+
"#{@plist_controller.version}/#{@plist_controller.build_version}"
|
12
72
|
end
|
13
73
|
end
|
14
74
|
end
|
15
|
-
|
16
|
-
# lane :bump_version do |options|
|
17
|
-
# if tag_version < app_version
|
18
|
-
# UI.user_error! 'The version of the tag is less than the actual app version'
|
19
|
-
# end
|
20
|
-
#
|
21
|
-
# if tag_version > app_version
|
22
|
-
# version = tag_version.to_s
|
23
|
-
# build_version = Gem::Version.new(version.to_s + '.0')
|
24
|
-
# elsif tag_version == app_version && options[:bump_patch]
|
25
|
-
# version = app_version.to_s
|
26
|
-
# build_version = bumped_version(app_build_version)
|
27
|
-
# end
|
28
|
-
#
|
29
|
-
# set_app_version(version)
|
30
|
-
# set_app_build_version(build_version)
|
31
|
-
# UI.success "Version was successfully bumped to #{version}/#{build_version}"
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# lane :push_version_bump do
|
35
|
-
# commit_version_bump(
|
36
|
-
# message: "Bump version to #{app_version}/#{app_build_version}",
|
37
|
-
# force: true
|
38
|
-
# )
|
39
|
-
#
|
40
|
-
# push_to_git_remote(
|
41
|
-
# local_branch: 'master',
|
42
|
-
# remote_branch: 'master'
|
43
|
-
# )
|
44
|
-
# end
|
45
|
-
#
|
46
|
-
# lane :release do
|
47
|
-
# bump_version
|
48
|
-
# certificates
|
49
|
-
# archive_appstore
|
50
|
-
# upload_to_testflight(skip_submission: true)
|
51
|
-
# bump_version(bump_patch: true)
|
52
|
-
# push_version_bump
|
53
|
-
# broadcast_release
|
54
|
-
# end
|
55
|
-
#
|
56
|
-
# def tag_version
|
57
|
-
# version_format = /[0-9.]+/
|
58
|
-
# tag = last_git_tag.match(version_format)[0]
|
59
|
-
# Gem::Version.new(tag)
|
60
|
-
# end
|