class Raketeer::FilesBumper

@author Jonathan Bradley Whited @since 0.2.4

Attributes

bump_ver[R]
bump_ver_empty[R]
bump_ver_empty?[R]
changes[RW]
dry_run[R]
dry_run?[R]
files[R]
init_per_file[RW]
line[RW]
lines[RW]
sem_ver[RW]
strict[RW]
strict?[RW]
version[RW]
version_bumped[RW]
version_bumped?[RW]

Public Class Methods

new(files,bump_ver,dry_run,strict,&init_per_file) click to toggle source
# File lib/raketeer/files_bumper.rb, line 39
def initialize(files,bump_ver,dry_run,strict,&init_per_file)
  @bump_ver = bump_ver
  @bump_ver_empty = bump_ver.empty?
  @dry_run = dry_run
  @files = files.to_a
  @init_per_file = init_per_file
  @sem_ver = nil
  @strict = strict
  @version = nil
  @version_bumped = false
end

Public Instance Methods

add_change(line,push: true) click to toggle source
# File lib/raketeer/files_bumper.rb, line 51
def add_change(line,push: true)
  puts "+ #{line}"

  @changes += 1
  @lines << line if push
end
bump_files(&block) click to toggle source
# File lib/raketeer/files_bumper.rb, line 58
def bump_files(&block)
  @files.each do |filename|
    puts "[#{filename}]:"

    if !File.exist?(filename)
      puts '! File does not exist'

      next
    end

    @changes = 0 # For possible future use
    @lines = []
    @sem_ver = nil

    @init_per_file&.call(self)

    File.foreach(filename) do |line|
      @line = line

      block.call(self) if !@line.strip.empty?

      @lines << @line
    end

    next if bump_ver_empty?

    print '= '

    if @changes > 0
      if dry_run?
        puts "Nothing written (dry run): #{@sem_ver}"
      else
        File.open(filename,'w') do |file|
          file.puts @lines
        end

        puts "#{@changes} change#{@changes == 1 ? '' : 's'} written"
      end
    else
      puts "Nothing written (up-to-date): #{@sem_ver}"
    end
  end
end
bump_line!(add_change: true) click to toggle source

@return [:no_ver,:same_ver,:bumped_ver]

# File lib/raketeer/files_bumper.rb, line 103
def bump_line!(add_change: true)
  @sem_ver = SemVer.parse_line(@line,strict: @strict)

  return :no_ver if @sem_ver.nil?

  @version = @sem_ver if @version.nil?

  if bump_ver_empty?
    puts "= #{@sem_ver}"

    return :same_ver
  else
    orig_line = @line.dup
    orig_sem_ver_s = @sem_ver.to_s

    @bump_ver.bump_line!(@line,@sem_ver,strict: @strict)

    if @sem_ver.to_s != orig_sem_ver_s
      if !@version_bumped
        @version = @sem_ver
        @version_bumped = true
      end

      self.add_change(@line,push: false) if add_change

      return :bumped_ver
    else
      @line = orig_line

      return :same_ver
    end
  end
end