Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
uoy-faculty-rake / lib / faculty / rake / gem_rename.rb
Size: Mime:
# frozen_string_literal: true

require 'rake/tasklib'
require_relative 'helpers'
require_relative 'init_shared'

module Faculty
  module Rake
    # Functions for initializing a new app
    class GemRename < ::Rake::TaskLib
      include Helpers
      include InitShared

      def initialize
        super()
        desc 'Rename the gem to your desired name'
        task :rename do
          @name = ENV.fetch('name') or raise ArgumentError, 'Missing parameter "name" (e.g. name=my_gem)'
          create_base_branch
          rename_within_files rename_list
          rename_files
          remove_from_rakefile
        end
      end

      private

      def rename_files
        puts bold 'Renaming files'
        system "git mv lib/new_gem.rb lib/#{@name}.rb"
        system "git mv lib/new_gem/ lib/#{@name}/"
        system "git mv spec/new_gem_spec.rb spec/#{@name}_spec.rb"
        system "git mv uoy-faculty-new_gem.gemspec uoy-faculty-#{@name}.gemspec"
      end

      def rename_list
        modname = @name.split('_').map(&:capitalize).join
        [
          { from: '\bNewGem\b', to: modname },
          { from: '\bnew_gem\b', to: @name }
        ]
      end
    end
  end
end