Sha256: 786511cbffd5c2d9833a6b7681d025b7730b283930de5b981dfceb59bae9fd28

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

module Makit
  VERSION = "0.0.45"

  class Version
    # given an array of version strings, return the highest version
    def self.get_highest_version(versions)
      versions.sort { |a, b| Gem::Version.new(a) <=> Gem::Version.new(b) }.last
    end

    def self.get_version_from_file(path)
      if(!File.exist?(path))
        raise "file #{path}does not exist"
      end

      extension = File.extname(path)
      #switch = extension.downcase
      #case switch
      #if extension == ".csproj"
      switch = extension.downcase
      case switch
      when ".csproj"
        Makit::Version.detect_from_file(path, /<Version>([-\w\d.]+)</)
      when ".wxs"
        Makit::Version.detect_from_file(path, / Version="([\d\.]+)"/)
      else 
        raise "unrecognized file type"
      end
    end

    def self.detect_from_file(filename, regex)
      if File.exist?(filename)
        match = IO.read(filename).match(regex)
        match.captures[0] if !match.nil? && match.captures.length.positive?
      else
        raise "unable to find version in #{filename}"
      end
    end

    def self.set_version_in_file(filename, version)
      text = IO.read(filename)
      new_text = text
      new_text = text.gsub(/version\s?=\s?['|"]([.\d]+)['|"]/, "version='#{version}'") if filename.include?(".gemspec")
      new_text = text.gsub(/<Version>([-\w\d.]+)</, "<Version>#{version}<") if filename.include?(".csproj")
      new_text = text.gsub(/<version>([-\w\d.]+)</, "<version>#{version}<") if filename.include?(".nuspec")
      new_text = text.gsub(/ Version="([\d\.]+)"/, " Version=\"#{version}\"") if filename.include?(".wxs")
      new_text = text.gsub(/version\s+=\s+['"]([\w.]+)['"]/, "version=\"#{version}\"") if filename.include?(".toml")
      File.open(filename, "w") { |f| f.write(new_text) } if new_text != text
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
makit-0.0.45 lib/makit/version.rb