From e5a248b78da2755f4c2eded0b0e31bf94d9cdbaa Mon Sep 17 00:00:00 2001 From: Ian Y Date: Fri, 1 Mar 2024 12:22:36 +0800 Subject: [PATCH 1/2] feat: kotlin files support --- .../actions/rename_android_package_action.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb b/lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb index 5388cc9..f9bf859 100644 --- a/lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb +++ b/lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb @@ -20,8 +20,14 @@ def self.run(params) FileUtils.mv file, new_folder_path end + kotlin_sources = Dir.glob("#{path}/app/src/main/java/#{folder}/*.kt") + kotlin_sources.each do |file| + FileUtils.mv file, new_folder_path + end + Bundler.with_clean_env do sh "find #{path}/app/src -name '*.java' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" + sh "find #{path}/app/src -name '*.kt' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" sh "find #{path}/app/src -name 'AndroidManifest.xml' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" sh "find #{path}/app -name 'build.gradle' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" end From 737058fe30ded10b8cd280d9112eaf29660f25af Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Wed, 5 Feb 2025 14:16:01 -0500 Subject: [PATCH 2/2] feat: wakeup project --- .circleci/config.yml | 43 ----- .github/dependabot.yml | 8 + .github/workflows/deploy.yml | 24 +++ .github/workflows/test.yml | 25 +++ .gitignore | 3 + .rubocop.yml | 162 +++++++++------- .travis.yml | 4 - Gemfile | 11 ++ README.md | 14 +- fastlane-plugin-rename_android.gemspec | 19 ++ ...lane-plugin-rename_android_package.gemspec | 30 --- fastlane/Fastfile | 2 +- fastlane/Pluginfile | 1 - lib/fastlane/plugin/rename_android.rb | 15 ++ .../actions/rename_android_action.rb} | 31 ++-- lib/fastlane/plugin/rename_android/version.rb | 5 + lib/fastlane/plugin/rename_android_package.rb | 16 -- .../helper/rename_android_package_helper.rb | 16 -- .../plugin/rename_android_package/version.rb | 5 - spec/rename_android_package_action_spec.rb | 9 - spec/rename_android_package_spec.rb | 174 ++++++++++++++++++ spec/spec_helper.rb | 4 +- 22 files changed, 404 insertions(+), 217 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/deploy.yml create mode 100644 .github/workflows/test.yml delete mode 100644 .travis.yml create mode 100644 fastlane-plugin-rename_android.gemspec delete mode 100644 fastlane-plugin-rename_android_package.gemspec delete mode 100644 fastlane/Pluginfile create mode 100644 lib/fastlane/plugin/rename_android.rb rename lib/fastlane/plugin/{rename_android_package/actions/rename_android_package_action.rb => rename_android/actions/rename_android_action.rb} (61%) create mode 100644 lib/fastlane/plugin/rename_android/version.rb delete mode 100644 lib/fastlane/plugin/rename_android_package.rb delete mode 100644 lib/fastlane/plugin/rename_android_package/helper/rename_android_package_helper.rb delete mode 100644 lib/fastlane/plugin/rename_android_package/version.rb delete mode 100644 spec/rename_android_package_action_spec.rb create mode 100644 spec/rename_android_package_spec.rb diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 74ccea8..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,43 +0,0 @@ -# Ruby CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-ruby/ for more details -# -version: 2 -jobs: - build: - docker: - # specify the version you desire here - - image: circleci/ruby:2.4.2 - - working_directory: ~/repo - - steps: - - checkout - - # Download and cache dependencies - - restore_cache: - keys: - - v1-dependencies-{{ checksum "Gemfile" }} - # fallback to using the latest cache if no exact match is found - - v1-dependencies- - - - run: - name: install dependencies - command: bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle - - - save_cache: - paths: - - ./vendor - key: v1-dependencies-{{ checksum "Gemfile" }} - - # run tests! - - run: - name: run tests - command: bundle exec rake - - # collect reports - - store_test_results: - path: ~/repo/test-results - - store_artifacts: - path: ~/repo/test-results - destination: test-results diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b912060 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + time: "08:00" + timezone: "America/New_York" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..b94c0b2 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,24 @@ +name: Deploy +on: + workflow_dispatch +permissions: + id-token: write + contents: write + +jobs: + deploy: + environment: deploy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + ruby-version: ruby + + - name: Install dependencies + run: bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle + + - uses: rubygems/release-gem@v1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..5904b5c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,25 @@ +name: Test + +on: + push: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + ruby-version: 2.7.7 + + - name: Run tests + run: bundle exec rake + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: test-results + path: test-results diff --git a/.gitignore b/.gitignore index b7e3986..24900d7 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ fastlane/README.md fastlane/report.xml coverage test-results + +# IDEs +.idea diff --git a/.rubocop.yml b/.rubocop.yml index 8445932..f3d0b67 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,4 +1,27 @@ --- +require: + - rubocop/require_tools + - rubocop-performance +AllCops: + TargetRubyVersion: 2.6 + NewCops: enable + Include: + - "**/*.rb" + - "**/*file" + - "**/*.gemspec" + - "*/lib/assets/*Template" + - "*/lib/assets/*TemplateAndroid" + Exclude: + - "**/lib/assets/custom_action_template.rb" + - "./vendor/**/*" + - "**/lib/assets/DefaultFastfileTemplate" + - "**/lib/assets/MatchfileTemplate" + - "**/spec/fixtures/broken_files/broken_file.rb" + - "**/*.provisionprofile" +Lint/ErbNewArguments: + Enabled: false +Style/SlicingWithRange: + Enabled: false Style/MultipleComparison: Enabled: false Style/PercentLiteralDelimiters: @@ -19,11 +42,11 @@ Metrics/BlockLength: Enabled: false Metrics/ModuleLength: Enabled: false -Style/VariableNumber: +Naming/VariableNumber: Enabled: false -Style/MethodMissing: +Style/MissingRespondToMissing: Enabled: false -MultilineBlockChain: +Style/MultilineBlockChain: Enabled: false Style/NumericLiteralPrefix: Enabled: false @@ -31,26 +54,25 @@ Style/TernaryParentheses: Enabled: false Style/EmptyMethod: Enabled: false -Style/BracesAroundHashParameters: - Enabled: false Lint/UselessAssignment: Exclude: - - "**/spec/**/*" + - "**/spec/**/*" Require/MissingRequireStatement: Exclude: - - "**/spec/**/*.rb" - - "**/spec_helper.rb" - - spaceship/lib/spaceship/babosa_fix.rb - - "**/Fastfile" - - "**/*.gemspec" - - rakelib/**/* - - "**/*.rake" - - "**/Rakefile" - - fastlane/**/* - - supply/**/* -Layout/IndentHash: - Enabled: false -Layout/AlignHash: + - "**/spec/**/*.rb" + - "**/spec_helper.rb" + - spaceship/lib/spaceship/babosa_fix.rb + - fastlane_core/lib/fastlane_core/ui/disable_colors.rb + - "**/Fastfile" + - "**/*.gemspec" + - rakelib/**/* + - "**/*.rake" + - "**/Rakefile" + - fastlane/**/* + - supply/**/* +Layout/FirstHashElementIndentation: + Enabled: false +Layout/HashAlignment: Enabled: false Layout/DotPosition: Enabled: false @@ -58,12 +80,12 @@ Style/DoubleNegation: Enabled: false Style/SymbolArray: Enabled: false -Layout/IndentHeredoc: +Layout/HeredocIndentation: Enabled: false Style/MixinGrouping: Exclude: - - "**/spec/**/*" -Lint/HandleExceptions: + - "**/spec/**/*" +Lint/SuppressedException: Enabled: false Lint/UnusedBlockArgument: Enabled: false @@ -94,16 +116,16 @@ Style/AndOr: EnforcedStyle: conditionals Metrics/ClassLength: Max: 320 -Metrics/LineLength: +Layout/LineLength: Max: 370 Metrics/ParameterLists: Max: 17 -Metrics/PerceivedComplexity: - Max: 18 Style/GuardClause: Enabled: false Style/StringLiterals: Enabled: false +Style/QuotedSymbols: + Enabled: false Style/ConditionalAssignment: Enabled: false Style/RedundantSelf: @@ -112,34 +134,26 @@ Lint/UnusedMethodArgument: Enabled: false Lint/ParenthesesAsGroupedExpression: Exclude: - - "**/spec/**/*" -Style/PredicateName: + - "**/spec/**/*" +Naming/PredicateName: Enabled: false Style/PerlBackrefs: Enabled: false Layout/SpaceAroundOperators: Exclude: - - "**/spec/actions_specs/xcodebuild_spec.rb" -AllCops: - TargetRubyVersion: 2.0 - Include: - - "*/lib/assets/*Template" - - "*/lib/assets/*TemplateAndroid" + - "**/spec/actions_specs/xcodebuild_spec.rb" +Naming/FileName: Exclude: - - "**/lib/assets/custom_action_template.rb" - - "./vendor/**/*" - - "**/lib/assets/DefaultFastfileTemplate" -Style/FileName: - Exclude: - - "**/Dangerfile" - - "**/Brewfile" - - "**/Gemfile" - - "**/Podfile" - - "**/Rakefile" - - "**/Fastfile" - - "**/Deliverfile" - - "**/Snapfile" - - "**/*.gemspec" + - "**/Dangerfile" + - "**/Brewfile" + - "**/Gemfile" + - "**/Podfile" + - "**/Rakefile" + - "**/Fastfile" + - "**/Deliverfile" + - "**/Snapfile" + - "**/Pluginfile" + - "**/*.gemspec" Style/Documentation: Enabled: false Style/MutableConstant: @@ -150,29 +164,35 @@ Style/IfInsideElse: Enabled: false Style/CollectionMethods: Enabled: false -CrossPlatform/ForkUsage: - Exclude: - - "**/plugins/template/**/*" Style/MethodCallWithArgsParentheses: Enabled: true - IgnoredMethods: - - require - - require_relative - - fastlane_require - - gem - - program - - command - - raise - - attr_accessor - - attr_reader - - desc - - lane - - private_lane - - platform - - to - - describe - - it - - be - - context - - before - - after + AllowedMethods: + - require + - require_relative + - fastlane_require + - gem + - program + - command + - raise + - attr_accessor + - attr_reader + - desc + - lane + - private_lane + - platform + - to + - not_to + - describe + - it + - be + - context + - before + - after +Bundler/OrderedGems: + Enabled: true + TreatCommentsAsGroupSeparators: false +Gemspec/DevelopmentDependencies: + Enabled: true + EnforcedStyle: Gemfile +Metrics/PerceivedComplexity: + Max: 10 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3b35e45..0000000 --- a/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -# os: osx # enable this if you need macOS support -language: ruby -rvm: - - 2.2.4 diff --git a/Gemfile b/Gemfile index 7e8dba6..5c170af 100644 --- a/Gemfile +++ b/Gemfile @@ -2,5 +2,16 @@ source('https://rubygems.org') gemspec +# Add development dependencies here +gem 'fastlane', '>= 2.225.0' +gem 'pry' +gem 'rake' +gem 'rspec' +gem 'rspec_junit_formatter' +gem 'rubocop', '1.50.2' +gem 'rubocop-performance' +gem 'rubocop-require_tools' +gem 'simplecov' + plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/README.md b/README.md index 4ee4dc8..50f6f1d 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ -# rename_android_package plugin +# rename_android fastlane plugin +_Forked from [joshdholtz/fastlane-plugin-rename_android_package](https://github.com/joshdholtz/fastlane-plugin-rename_android_package) due to abandonment._ -[![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-rename_android_package) +[![Gem Version](https://badge.fury.io/rb/fastlane-plugin-rename_android.svg)](https://badge.fury.io/rb/fastlane-plugin-rename_android) ## Getting Started -This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-rename_android_package`, add it to your project by running: +This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-rename_android`, add it to your project by running: ```bash -fastlane add_plugin rename_android_package +fastlane add_plugin rename_android ``` -## About rename_android_package - -Renames Android package +## About rename_android +Renames Android package for .java, .kt, AndroidManifest.xml, and build.gradle files ## Example diff --git a/fastlane-plugin-rename_android.gemspec b/fastlane-plugin-rename_android.gemspec new file mode 100644 index 0000000..f9146e7 --- /dev/null +++ b/fastlane-plugin-rename_android.gemspec @@ -0,0 +1,19 @@ +lib = File.expand_path('lib', __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'fastlane/plugin/rename_android/version' + +Gem::Specification.new do |spec| + spec.name = 'fastlane-plugin-rename_android' + spec.version = Fastlane::RenameAndroid::VERSION + spec.authors = ['Josh Holtz', 'Sourcetoad'] + spec.email = 'info@sourcetoad.com' + + spec.summary = 'Renames Android package for .java, .kt, AndroidManifest.xml, and build.gradle files' + spec.homepage = "https://github.com/sourcetoad/fastlane-plugin-rename_android" + spec.license = "MIT" + + spec.files = Dir["lib/**/*"] + %w(README.md LICENSE) + spec.require_paths = ['lib'] + spec.metadata['rubygems_mfa_required'] = 'true' + spec.required_ruby_version = '>= 2.6' +end diff --git a/fastlane-plugin-rename_android_package.gemspec b/fastlane-plugin-rename_android_package.gemspec deleted file mode 100644 index db48e03..0000000 --- a/fastlane-plugin-rename_android_package.gemspec +++ /dev/null @@ -1,30 +0,0 @@ -# coding: utf-8 - -lib = File.expand_path("../lib", __FILE__) -$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'fastlane/plugin/rename_android_package/version' - -Gem::Specification.new do |spec| - spec.name = 'fastlane-plugin-rename_android_package' - spec.version = Fastlane::RenameAndroidPackage::VERSION - spec.author = 'Josh Holtz' - spec.email = 'me@joshholtz.com' - - spec.summary = 'Renames Android package' - # spec.homepage = "https://github.com/joshdholtz/fastlane-plugin-rename_android_package" - spec.license = "MIT" - - spec.files = Dir["lib/**/*"] + %w(README.md LICENSE) - spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) - spec.require_paths = ['lib'] - - spec.add_development_dependency('pry') - spec.add_development_dependency('bundler') - spec.add_development_dependency('rspec') - spec.add_development_dependency('rspec_junit_formatter') - spec.add_development_dependency('rake') - spec.add_development_dependency('rubocop', '0.49.1') - spec.add_development_dependency('rubocop-require_tools') - spec.add_development_dependency('simplecov') - spec.add_development_dependency('fastlane', '>= 2.102.0') -end diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 756698f..daf2c39 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,3 +1,3 @@ lane :test do - rename_android_package + rename_android end diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile deleted file mode 100644 index e0576b0..0000000 --- a/fastlane/Pluginfile +++ /dev/null @@ -1 +0,0 @@ -# Autogenerated by fastlane diff --git a/lib/fastlane/plugin/rename_android.rb b/lib/fastlane/plugin/rename_android.rb new file mode 100644 index 0000000..d9eb362 --- /dev/null +++ b/lib/fastlane/plugin/rename_android.rb @@ -0,0 +1,15 @@ +require 'fastlane/plugin/rename_android/version' + +module Fastlane + module RenameAndroidPackage + # Return all .rb files inside the "actions" directory + def self.all_classes + Dir[File.expand_path('**/{actions}/*.rb', File.dirname(__FILE__))] + end + end +end + +# By default, we want to import all available actions +Fastlane::RenameAndroidPackage.all_classes.each do |current| + require current +end diff --git a/lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb b/lib/fastlane/plugin/rename_android/actions/rename_android_action.rb similarity index 61% rename from lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb rename to lib/fastlane/plugin/rename_android/actions/rename_android_action.rb index f9bf859..32e5f4f 100644 --- a/lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb +++ b/lib/fastlane/plugin/rename_android/actions/rename_android_action.rb @@ -1,10 +1,17 @@ require 'fastlane/action' -require_relative '../helper/rename_android_package_helper' +require 'fastlane_core/configuration/config_item' +require 'fastlane_core/ui/ui' module Fastlane + UI = FastlaneCore::UI unless Fastlane.const_defined?(:UI) + module Actions - class RenameAndroidPackageAction < Action + class RenameAndroidAction < Action def self.run(params) + UI.user_error!("No path provided") if params[:path].nil? + UI.user_error!("No package_name provided") if params[:package_name].nil? + UI.user_error!("No new_package_name provided") if params[:new_package_name].nil? + path = params[:path] package_name = params[:package_name] new_package_name = params[:new_package_name] @@ -13,32 +20,32 @@ def self.run(params) new_folder = new_package_name.gsub('.', '/') new_folder_path = "#{path}/app/src/main/java/#{new_folder}" - FileUtils::mkdir_p new_folder_path + FileUtils.mkdir_p(new_folder_path) java_sources = Dir.glob("#{path}/app/src/main/java/#{folder}/*.java") java_sources.each do |file| - FileUtils.mv file, new_folder_path + FileUtils.mv(file, new_folder_path) end kotlin_sources = Dir.glob("#{path}/app/src/main/java/#{folder}/*.kt") kotlin_sources.each do |file| - FileUtils.mv file, new_folder_path + FileUtils.mv(file, new_folder_path) end - Bundler.with_clean_env do - sh "find #{path}/app/src -name '*.java' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" - sh "find #{path}/app/src -name '*.kt' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" - sh "find #{path}/app/src -name 'AndroidManifest.xml' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" - sh "find #{path}/app -name 'build.gradle' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;" + Bundler.with_unbundled_env do + sh("find #{path}/app/src -name '*.java' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;") + sh("find #{path}/app/src -name '*.kt' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;") + sh("find #{path}/app/src -name 'AndroidManifest.xml' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;") + sh("find #{path}/app -name 'build.gradle' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;") end end def self.description - "Renames Android package" + "Renames Android package for .java, .kt, AndroidManifest.xml, and build.gradle files" end def self.authors - ["joshdholtz"] + %w[joshdholtz sourcetoad] end def self.details diff --git a/lib/fastlane/plugin/rename_android/version.rb b/lib/fastlane/plugin/rename_android/version.rb new file mode 100644 index 0000000..5e69506 --- /dev/null +++ b/lib/fastlane/plugin/rename_android/version.rb @@ -0,0 +1,5 @@ +module Fastlane + module RenameAndroid + VERSION = "1.0.0" + end +end diff --git a/lib/fastlane/plugin/rename_android_package.rb b/lib/fastlane/plugin/rename_android_package.rb deleted file mode 100644 index caac2fe..0000000 --- a/lib/fastlane/plugin/rename_android_package.rb +++ /dev/null @@ -1,16 +0,0 @@ -require 'fastlane/plugin/rename_android_package/version' - -module Fastlane - module RenameAndroidPackage - # Return all .rb files inside the "actions" and "helper" directory - def self.all_classes - Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))] - end - end -end - -# By default we want to import all available actions and helpers -# A plugin can contain any number of actions and plugins -Fastlane::RenameAndroidPackage.all_classes.each do |current| - require current -end diff --git a/lib/fastlane/plugin/rename_android_package/helper/rename_android_package_helper.rb b/lib/fastlane/plugin/rename_android_package/helper/rename_android_package_helper.rb deleted file mode 100644 index 45e4778..0000000 --- a/lib/fastlane/plugin/rename_android_package/helper/rename_android_package_helper.rb +++ /dev/null @@ -1,16 +0,0 @@ -require 'fastlane_core/ui/ui' - -module Fastlane - UI = FastlaneCore::UI unless Fastlane.const_defined?("UI") - - module Helper - class RenameAndroidPackageHelper - # class methods that you define here become available in your action - # as `Helper::RenameAndroidPackageHelper.your_method` - # - def self.show_message - UI.message("Hello from the rename_android_package plugin helper!") - end - end - end -end diff --git a/lib/fastlane/plugin/rename_android_package/version.rb b/lib/fastlane/plugin/rename_android_package/version.rb deleted file mode 100644 index 3474fd4..0000000 --- a/lib/fastlane/plugin/rename_android_package/version.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Fastlane - module RenameAndroidPackage - VERSION = "0.1.0" - end -end diff --git a/spec/rename_android_package_action_spec.rb b/spec/rename_android_package_action_spec.rb deleted file mode 100644 index 7e4da26..0000000 --- a/spec/rename_android_package_action_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -describe Fastlane::Actions::RenameAndroidPackageAction do - describe '#run' do - it 'prints a message' do - expect(Fastlane::UI).to receive(:message).with("The rename_android_package plugin is working!") - - Fastlane::Actions::RenameAndroidPackageAction.run(nil) - end - end -end diff --git a/spec/rename_android_package_spec.rb b/spec/rename_android_package_spec.rb new file mode 100644 index 0000000..d3e244d --- /dev/null +++ b/spec/rename_android_package_spec.rb @@ -0,0 +1,174 @@ +require 'spec_helper' +require 'fileutils' +require 'tmpdir' + +describe Fastlane::Actions::RenameAndroidAction do + describe '#run' do + let(:test_path) { Dir.mktmpdir } + let(:old_package) { 'com.old.package' } + let(:new_package) { 'com.new.package' } + let(:old_path) { "#{test_path}/app/src/main/java/#{old_package.gsub('.', '/')}" } + let(:new_path) { "#{test_path}/app/src/main/java/#{new_package.gsub('.', '/')}" } + + before do + # Set up test directory structure + FileUtils.mkdir_p(old_path) + + # Create test files + File.write("#{old_path}/MainActivity.java", "package #{old_package};") + File.write("#{old_path}/Helper.kt", "package #{old_package}") + File.write("#{test_path}/app/src/main/AndroidManifest.xml", + "\n") + File.write("#{test_path}/app/build.gradle", + "applicationId \"#{old_package}\"") + + # Mock shell commands + allow(Fastlane::Actions::RenameAndroidAction).to receive(:sh) do |command| + if command.include?("sed") + if command.include?(".java") + java_content = File.read("#{new_path}/MainActivity.java") + File.write("#{new_path}/MainActivity.java", + java_content.gsub(old_package, new_package)) + elsif command.include?(".kt") + kotlin_content = File.read("#{new_path}/Helper.kt") + File.write("#{new_path}/Helper.kt", + kotlin_content.gsub(old_package, new_package)) + elsif command.include?("AndroidManifest.xml") + manifest_content = File.read("#{test_path}/app/src/main/AndroidManifest.xml") + File.write("#{test_path}/app/src/main/AndroidManifest.xml", + manifest_content.gsub(old_package, new_package)) + elsif command.include?("build.gradle") + gradle_content = File.read("#{test_path}/app/build.gradle") + File.write("#{test_path}/app/build.gradle", + gradle_content.gsub(old_package, new_package)) + end + end + end + + # Mock Bundler.with_unbundled_env + allow(Bundler).to receive(:with_unbundled_env).and_yield + end + + after do + FileUtils.remove_entry(test_path) + end + + it 'moves files to new package directory' do + params = { + path: test_path, + package_name: old_package, + new_package_name: new_package + } + + Fastlane::Actions::RenameAndroidAction.run(params) + + expect(File.exist?("#{new_path}/MainActivity.java")).to be true + expect(File.exist?("#{new_path}/Helper.kt")).to be true + expect(File.exist?("#{old_path}/MainActivity.java")).to be false + expect(File.exist?("#{old_path}/Helper.kt")).to be false + end + + it 'updates package names in Java files' do + params = { + path: test_path, + package_name: old_package, + new_package_name: new_package + } + + Fastlane::Actions::RenameAndroidAction.run(params) + + java_content = File.read("#{new_path}/MainActivity.java") + expect(java_content).to include("package #{new_package};") + expect(java_content).not_to include("package #{old_package};") + end + + it 'updates package names in Kotlin files' do + params = { + path: test_path, + package_name: old_package, + new_package_name: new_package + } + + Fastlane::Actions::RenameAndroidAction.run(params) + + kotlin_content = File.read("#{new_path}/Helper.kt") + expect(kotlin_content).to include("package #{new_package}") + expect(kotlin_content).not_to include("package #{old_package}") + end + + it 'updates AndroidManifest.xml' do + params = { + path: test_path, + package_name: old_package, + new_package_name: new_package + } + + Fastlane::Actions::RenameAndroidAction.run(params) + + manifest_content = File.read("#{test_path}/app/src/main/AndroidManifest.xml") + expect(manifest_content).to include("package=\"#{new_package}\"") + expect(manifest_content).not_to include("package=\"#{old_package}\"") + end + + it 'updates build.gradle' do + params = { + path: test_path, + package_name: old_package, + new_package_name: new_package + } + + Fastlane::Actions::RenameAndroidAction.run(params) + + gradle_content = File.read("#{test_path}/app/build.gradle") + expect(gradle_content).to include("applicationId \"#{new_package}\"") + expect(gradle_content).not_to include("applicationId \"#{old_package}\"") + end + + it 'raises an error when path is nil' do + params = { + path: nil, + package_name: old_package, + new_package_name: new_package + } + + expect do + Fastlane::Actions::RenameAndroidAction.run(params) + end.to raise_error(FastlaneCore::Interface::FastlaneError, "No path provided") + end + + it 'raises an error when package_name is nil' do + params = { + path: test_path, + package_name: nil, + new_package_name: new_package + } + + expect do + Fastlane::Actions::RenameAndroidAction.run(params) + end.to raise_error(FastlaneCore::Interface::FastlaneError, "No package_name provided") + end + + it 'raises an error when new_package_name is nil' do + params = { + path: test_path, + package_name: old_package, + new_package_name: nil + } + + expect do + Fastlane::Actions::RenameAndroidAction.run(params) + end.to raise_error(FastlaneCore::Interface::FastlaneError, "No new_package_name provided") + end + end + + describe '.is_supported?' do + it 'returns true for android platform' do + expect(Fastlane::Actions::RenameAndroidAction.is_supported?(:android)).to be true + end + + it 'returns false for other platforms' do + expect(Fastlane::Actions::RenameAndroidAction.is_supported?(:ios)).to be false + expect(Fastlane::Actions::RenameAndroidAction.is_supported?(:mac)).to be false + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1a76959..f230806 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,4 +1,4 @@ -$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__)) +$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) require 'simplecov' @@ -10,6 +10,6 @@ module SpecHelper end require 'fastlane' # to import the Action super class -require 'fastlane/plugin/rename_android_package' # import the actual plugin +require 'fastlane/plugin/rename_android' # import the actual plugin Fastlane.load_actions # load other actions (in case your plugin calls other actions or shared values)