fastlane-plugin-android_versioning 0.3.1 → 0.5.4

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
  SHA1:
3
- metadata.gz: a6333c5aac52eaaedce5f2d2fe5b225dddb30a27
4
- data.tar.gz: 238cee201f9cade2f8bb356f9ee934588279a9c8
3
+ metadata.gz: b18ed0f97fbda93363f1a8bc6a17f088f371925e
4
+ data.tar.gz: 8d3a32e846a7ab93d4bba16934e07ddc095ad644
5
5
  SHA512:
6
- metadata.gz: 2ea2e3cb881d543fd4f789078d797b07cf4043ffcff3ba8934a45636694a0ac96248110840174e4d3f4873b50e26c8bf085b5419286d0f45e121e788e4b24cd6
7
- data.tar.gz: eda795b415b473fcee2ecc76c6c8f47517c70b1f3957c11dad5bb8e75373149436a19d96f5119510f455ac02a6d89ae3b971d2109359261543b2390c2e5b0f2f
6
+ metadata.gz: 95f9076481db3b049d168028332d04317a2ee2e0cbc703f3bec50a8c569a13ef06f683f319a0b3070d19d85937fa71cdac9d018a468e4a0e92ce55c569cd3059
7
+ data.tar.gz: 62c6d541464f545696747fa56934b849e394ff06a4a7bbf3355ae0429b0f35611de45149d866bc436825e5e5c5bd8122f469ecd86cd969620b6b49d86127da17
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-android_versioning)
4
4
  [![Gem Version](https://badge.fury.io/rb/fastlane-plugin-android_versioning.svg)](https://badge.fury.io/rb/fastlane-plugin-android_versioning)
5
+ [![CircleCI](https://circleci.com/gh/otkmnb2783/fastlane-plugin-android_versioning.svg?style=svg)](https://circleci.com/gh/otkmnb2783/fastlane-plugin-android_versioning)
5
6
 
6
7
  ## Getting Started
7
8
 
@@ -19,7 +20,7 @@ Allows to set/get app version name and version code directly to/from build.gradl
19
20
 
20
21
  ## Example
21
22
 
22
- Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
23
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane show_version`.
23
24
 
24
25
  **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
25
26
 
@@ -5,17 +5,39 @@ module Fastlane
5
5
  class GetValueFromBuildAction < Action
6
6
  def self.run(params)
7
7
  app_project_dir ||= params[:app_project_dir]
8
+ regex = Regexp.new(/(?<key>#{params[:key]}\s+)(?<left>[\'\"]?)(?<value>[a-zA-Z0-9\.\_]*)(?<right>[\'\"]?)(?<comment>.*)/)
9
+ flavor = params[:flavor]
10
+ flavorSpecified = !(flavor.nil? or flavor.empty?)
11
+ regex_flavor = Regexp.new(/[ \t]#{flavor}[ \t]/)
8
12
  value = ""
9
13
  found = false
14
+ flavorFound = false
15
+ productFlavorsSection = false
10
16
  Dir.glob("#{app_project_dir}/build.gradle") do |path|
17
+ UI.verbose("path: #{path}")
18
+ UI.verbose("absolute_path: #{File.expand_path(path)}")
11
19
  begin
12
20
  File.open(path, 'r') do |file|
13
21
  file.each_line do |line|
14
- unless line.include? "#{params[:key]} " and !found
22
+
23
+ if flavorSpecified and !productFlavorsSection
24
+ unless line.include? "productFlavors"
25
+ next
26
+ end
27
+ productFlavorsSection = true
28
+ end
29
+
30
+ if flavorSpecified and !flavorFound
31
+ unless line.match(regex_flavor)
32
+ next
33
+ end
34
+ flavorFound = true
35
+ end
36
+
37
+ unless line.match(regex) and !found
15
38
  next
16
39
  end
17
- components = line.strip.split(' ').reject { |item| item.start_with?("//") }
18
- value = components.last.tr("\"", "").tr("\'", "")
40
+ key, left, value, right, comment = line.match(regex).captures
19
41
  break
20
42
  end
21
43
  file.close
@@ -36,6 +58,11 @@ module Fastlane
36
58
  optional: true,
37
59
  type: String,
38
60
  default_value: "android/app"),
61
+ FastlaneCore::ConfigItem.new(key: :flavor,
62
+ env_name: "ANDROID_VERSIONING_FLAVOR",
63
+ description: "The product flavor name (optional)",
64
+ optional: true,
65
+ type: String),
39
66
  FastlaneCore::ConfigItem.new(key: :key,
40
67
  description: "The property key",
41
68
  type: String)
@@ -6,6 +6,7 @@ module Fastlane
6
6
  def self.run(params)
7
7
  GetValueFromBuildAction.run(
8
8
  app_project_dir: params[:app_project_dir],
9
+ flavor: params[:flavor],
9
10
  key: "versionCode"
10
11
  )
11
12
  end
@@ -20,7 +21,12 @@ module Fastlane
20
21
  description: "The path to the application source folder in the Android project (default: android/app)",
21
22
  optional: true,
22
23
  type: String,
23
- default_value: "android/app")
24
+ default_value: "android/app"),
25
+ FastlaneCore::ConfigItem.new(key: :flavor,
26
+ env_name: "ANDROID_VERSIONING_FLAVOR",
27
+ description: "The product flavor name (optional)",
28
+ optional: true,
29
+ type: String)
24
30
  ]
25
31
  end
26
32
 
@@ -6,6 +6,7 @@ module Fastlane
6
6
  def self.run(params)
7
7
  GetValueFromBuildAction.run(
8
8
  app_project_dir: params[:app_project_dir],
9
+ flavor: params[:flavor],
9
10
  key: "versionName"
10
11
  )
11
12
  end
@@ -20,7 +21,12 @@ module Fastlane
20
21
  description: "The path to the application source folder in the Android project (default: android/app)",
21
22
  optional: true,
22
23
  type: String,
23
- default_value: "android/app")
24
+ default_value: "android/app"),
25
+ FastlaneCore::ConfigItem.new(key: :flavor,
26
+ env_name: "ANDROID_VERSIONING_FLAVOR",
27
+ description: "The product flavor name (optional)",
28
+ optional: true,
29
+ type: String)
24
30
  ]
25
31
  end
26
32
 
@@ -9,9 +9,19 @@ module Fastlane
9
9
  class IncrementVersionCodeAction < Action
10
10
  def self.run(params)
11
11
  current_version_code = GetVersionCodeAction.run(params)
12
- new_version_code = params[:version_code].nil? ? current_version_code.to_i + 1 : params[:version_code].to_i
12
+
13
+ new_version_code =
14
+ if params[:version_code].nil?
15
+ current_version_code.to_i + 1
16
+ elsif params[:version_code] == -1
17
+ ((Time.now.to_f * 1000).to_i / (60 * 1000)).to_i
18
+ else
19
+ params[:version_code].to_i
20
+ end
21
+
13
22
  SetValueInBuildAction.run(
14
23
  app_project_dir: params[:app_project_dir],
24
+ flavor: params[:flavor],
15
25
  key: "versionCode",
16
26
  value: new_version_code
17
27
  )
@@ -24,17 +34,22 @@ module Fastlane
24
34
  #####################################################
25
35
  def self.available_options
26
36
  [
27
- FastlaneCore::ConfigItem.new(key: :app_project_dir,
28
- env_name: "ANDROID_VERSIONING_APP_PROJECT_DIR",
29
- description: "The path to the application source folder in the Android project (default: android/app)",
30
- optional: true,
31
- type: String,
32
- default_value: "android/app"),
33
- FastlaneCore::ConfigItem.new(key: :version_code,
34
- env_name: "ANDROID_VERSIONING_VERSION_CODE",
35
- description: "Change to a specific version (optional)",
36
- optional: true,
37
- type: Integer)
37
+ FastlaneCore::ConfigItem.new(key: :app_project_dir,
38
+ env_name: "ANDROID_VERSIONING_APP_PROJECT_DIR",
39
+ description: "The path to the application source folder in the Android project (default: android/app)",
40
+ optional: true,
41
+ type: String,
42
+ default_value: "android/app"),
43
+ FastlaneCore::ConfigItem.new(key: :flavor,
44
+ env_name: "ANDROID_VERSIONING_FLAVOR",
45
+ description: "The product flavor name (optional)",
46
+ optional: true,
47
+ type: String),
48
+ FastlaneCore::ConfigItem.new(key: :version_code,
49
+ env_name: "ANDROID_VERSIONING_VERSION_CODE",
50
+ description: "Change to a specific version (optional)",
51
+ optional: true,
52
+ type: Integer)
38
53
  ]
39
54
  end
40
55
 
@@ -31,6 +31,7 @@ module Fastlane
31
31
  end
32
32
  SetValueInBuildAction.run(
33
33
  app_project_dir: params[:app_project_dir],
34
+ flavor: params[:flavor],
34
35
  key: "versionName",
35
36
  value: new_version
36
37
  )
@@ -49,6 +50,11 @@ module Fastlane
49
50
  optional: true,
50
51
  type: String,
51
52
  default_value: "android/app"),
53
+ FastlaneCore::ConfigItem.new(key: :flavor,
54
+ env_name: "ANDROID_VERSIONING_FLAVOR",
55
+ description: "The product flavor name (optional)",
56
+ optional: true,
57
+ type: String),
52
58
  FastlaneCore::ConfigItem.new(key: :bump_type,
53
59
  env_name: "ANDROID_VERSIONING_BUMP_TYPE",
54
60
  description: "Change to a specific type (optional)",
@@ -6,19 +6,40 @@ module Fastlane
6
6
  class SetValueInBuildAction < Action
7
7
  def self.run(params)
8
8
  app_project_dir ||= params[:app_project_dir]
9
+ regex = Regexp.new(/(?<key>#{params[:key]}\s+)(?<left>[\'\"]?)(?<value>[a-zA-Z0-9\.\_]*)(?<right>[\'\"]?)(?<comment>.*)/)
10
+ flavor = params[:flavor]
11
+ flavorSpecified = !(flavor.nil? or flavor.empty?)
12
+ regex_flavor = Regexp.new(/[ \t]#{flavor}[ \t]/)
9
13
  found = false
14
+ productFlavorsSection = false
15
+ flavorFound = false
10
16
  Dir.glob("#{app_project_dir}/build.gradle") do |path|
11
17
  begin
12
18
  temp_file = Tempfile.new('versioning')
13
19
  File.open(path, 'r') do |file|
14
20
  file.each_line do |line|
15
- unless line.include? "#{params[:key]} " and !found
21
+
22
+ if flavorSpecified and !productFlavorsSection
23
+ unless line.include? "productFlavors" or productFlavorsSection
24
+ temp_file.puts line
25
+ next
26
+ end
27
+ productFlavorsSection = true
28
+ end
29
+
30
+ if flavorSpecified and !flavorFound
31
+ unless line.match(regex_flavor)
32
+ temp_file.puts line
33
+ next
34
+ end
35
+ flavorFound = true
36
+ end
37
+
38
+ unless line.match(regex) and !found
16
39
  temp_file.puts line
17
40
  next
18
41
  end
19
- components = line.strip.split(' ')
20
- value = components.last.tr("\"", "").tr("\'", "")
21
- line.replace line.sub(value, params[:value].to_s)
42
+ line = line.gsub regex, "\\k<key>\\k<left>#{params[:value]}\\k<right>\\k<comment>"
22
43
  found = true
23
44
  temp_file.puts line
24
45
  end
@@ -43,6 +64,11 @@ module Fastlane
43
64
  optional: true,
44
65
  type: String,
45
66
  default_value: "android/app"),
67
+ FastlaneCore::ConfigItem.new(key: :flavor,
68
+ env_name: "ANDROID_VERSIONING_FLAVOR",
69
+ description: "The product flavor name (optional)",
70
+ optional: true,
71
+ type: String),
46
72
  FastlaneCore::ConfigItem.new(key: :key,
47
73
  description: "The property key",
48
74
  type: String),
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module AndroidVersioning
3
- VERSION = "0.3.1"
3
+ VERSION = "0.5.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-android_versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu OHTAKE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-11 00:00:00.000000000 Z
11
+ date: 2021-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  requirements: []
132
132
  rubyforge_project:
133
- rubygems_version: 2.4.5.1
133
+ rubygems_version: 2.6.14.1
134
134
  signing_key:
135
135
  specification_version: 4
136
136
  summary: Allows to set/get app version name and version code directly to/from build.gradle