@@ -29,10 +29,103 @@ def update_changelog(new_version)
2929 }
3030end
3131
32+ def upgrade_sandwich_android ( new_version )
33+ path = "../android/build.gradle"
34+ common_part = "implementation \" io.qonversion.sandwich:sandwich:"
35+ regex = /#{ common_part } .*"/
36+ result_value = "#{ common_part } #{ new_version } \" "
37+
38+ update_file ( path , regex , result_value )
39+ end
40+
41+ def upgrade_sandwich_apple ( platform , new_version )
42+ path = "../#{ platform } /qonversion_flutter.podspec"
43+ common_part = "s.dependency \" QonversionSandwich\" , \" "
44+ regex = /#{ common_part } .*"/
45+ result_value = "#{ common_part } #{ new_version } \" "
46+
47+ update_file ( path , regex , result_value )
48+ end
49+
50+ def update_file ( path , regex , result_value )
51+ file = File . read ( path )
52+ new_content = file . gsub ( regex , result_value )
53+ File . open ( path , 'w' ) { |line | line . puts new_content }
54+ end
55+
56+ def get_tag
57+ tag = last_git_tag ( )
58+ puts tag
59+ result_tag = tag . scan ( %r{\d {1,2}.\d {1,2}.\d {1,3}} ) . first
60+ return result_tag
61+ end
62+
63+ def calculate_minor_version ( tag )
64+ major , minor , patch = parse_versions ( tag )
65+ new_minor_version = minor . to_i . next . to_s
66+ new_version = major + "." + new_minor_version + "." + "0"
67+ return new_version
68+ end
69+
70+ def calculate_patch_version ( tag )
71+ major , minor , patch = parse_versions ( tag )
72+ new_patch_version = patch . to_i . next . to_s
73+ new_version = major + "." + minor + "." + new_patch_version
74+
75+ return new_version
76+ end
77+
78+ def push_tag ( tag )
79+ system ( "git checkout develop" )
80+ system ( "git pull origin develop" )
81+ add_git_tag ( tag : tag )
82+ push_git_tags ( tag : tag )
83+ end
84+
85+ def parse_versions ( tag )
86+ split_version_array = tag . split ( "." , 3 )
87+
88+ if split_version_array . length == 3
89+ major = split_version_array [ 0 ]
90+ minor = split_version_array [ 1 ]
91+ patch = split_version_array [ 2 ]
92+
93+ return major , minor , patch
94+ end
95+ end
96+
97+ lane :patch do
98+ tag = get_tag
99+ new_version = calculate_patch_version ( tag )
100+ new_tag = "prerelease/" + new_version
101+ push_tag ( new_tag )
102+ end
103+
104+ lane :minor do
105+ tag = get_tag
106+ new_version = calculate_minor_version ( tag )
107+ new_tag = "prerelease/" + new_version
108+ push_tag ( new_tag )
109+ end
110+
32111lane :bump do |options |
33112 new_version = options [ :version ]
34113
35114 update_dart ( new_version )
36115 update_yaml ( new_version )
37116 update_changelog ( new_version )
38117end
118+
119+ lane :upgrade_sandwich do |options |
120+ new_version = options [ :version ]
121+
122+ upgrade_sandwich_android ( new_version )
123+ upgrade_sandwich_apple ( "ios" , new_version )
124+ upgrade_sandwich_apple ( "macos" , new_version )
125+ end
126+
127+ lane :provide_next_patch_version do
128+ tag = get_tag
129+ new_version = calculate_patch_version ( tag )
130+ sh ( "echo version=#{ new_version } >> \" $GITHUB_ENV\" " )
131+ end
0 commit comments