rootstrap/rsgem

View on GitHub
lib/rsgem/tasks/clean_gemspec.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module RSGem
  module Tasks
    class CleanGemspec < Base
      OUTPUT = OutputStruct.new(name: 'Clean gemspec')
      KEYS_TO_EMPTY = %w[summary description homepage].freeze

      def perform
        comment_metadata!
        empty_keys!
        write
      end

      private

      def gemspec
        @gemspec ||= File.read(context.gemspec_path)
      end

      def empty_keys!
        KEYS_TO_EMPTY.each do |key|
          gemspec.gsub!(/(spec.#{key}.*)=(.*)\n/, "\\1= ''\n")
        end
      end

      def comment_metadata!
        gemspec.gsub!(/spec.metadata/, '# spec.metadata')
      end

      def write
        File.open(context.gemspec_path, 'w') do |file|
          file.puts gemspec
        end
      end
    end
  end
end