Class: Fastlane::Actions::SetValueInBuildAction
- Inherits:
-
Action
- Object
- Action
- Fastlane::Actions::SetValueInBuildAction
- Defined in:
- lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb
Documentation collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .is_supported?(platform) ⇒ Boolean
Class Method Summary collapse
Class Method Details
.authors ⇒ Object
117 118 119 |
# File 'lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb', line 117 def self. ['Manabu OHTAKE'] end |
.available_options ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb', line 76 def self. [ FastlaneCore::ConfigItem.new( key: :app_project_dir, env_name: 'ANDROID_VERSIONING_APP_PROJECT_DIR', description: 'The path to the application source folder in the Android project (default: android/app)', optional: true, type: String, default_value: 'android/app' ), FastlaneCore::ConfigItem.new( key: :flavor, env_name: 'ANDROID_VERSIONING_FLAVOR', description: 'The product flavor name (optional)', optional: true, type: String ), FastlaneCore::ConfigItem.new( key: :key, description: 'The property key', type: String ), FastlaneCore::ConfigItem.new( key: :value, description: 'The property value', type: String ) ] end |
.description ⇒ Object
107 108 109 |
# File 'lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb', line 107 def self.description 'Set the value of your project' end |
.details ⇒ Object
111 112 113 114 115 |
# File 'lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb', line 111 def self.details [ 'This action will set the value directly in build.gradle.kts ' ].join("\n") end |
.is_supported?(platform) ⇒ Boolean
121 122 123 |
# File 'lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb', line 121 def self.is_supported?(platform) platform == :android end |
.run(params) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/fastlane/plugin/android_versioning_kts/actions/set_value_in_build.rb', line 9 def self.run(params) app_project_dir ||= params[:app_project_dir] regex = / (?<key>#{params[:key]}\s*=\s*) (?<left>['"]?) (?<value>[a-zA-Z0-9._]*) (?<right>['"]?) (?<comment>.*) /x flavor = params[:flavor] flavor_specified = !(flavor.nil? || flavor.empty?) regex_flavor = /[ \t]create\("#{flavor}"\)[ \t]/ found = false product_flavors_section = false flavor_found = false Dir.glob("#{app_project_dir}/build.gradle.kts") do |path| temp_file = Tempfile.new('versioning') File.open(path, 'r') do |file| file.each_line do |line| if flavor_specified && !product_flavors_section unless line.include?('productFlavors') || product_flavors_section temp_file.puts line next end product_flavors_section = true end if flavor_specified && !flavor_found unless line.match(regex_flavor) temp_file.puts line next end flavor_found = true end unless line.match(regex) && !found temp_file.puts line next end line = line.gsub regex, "\\k<key>\\k<left>#{params[:value]}\\k<right>\\k<comment>" found = true temp_file.puts line end file.close end temp_file.rewind temp_file.close begin FileUtils.mv(temp_file.path, path) rescue => ex if ex..to_s.include? 'Operation not permitted' FileUtils.cp(temp_file.path, path) FileUtils.rm(temp_file.path) else raise ex end end temp_file.unlink end end |