Sha256: 9c4216fa802d71b9a511dc328cee2827baa22a9659b8d4bdc3e072b9b6e18410

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

require 'json'
require 'sem_version'

module Incr
  module Command
    class Npm
      PACKAGE_JSON_FILENAME = 'package.json'.freeze
      PACKAGE_LOCK_JSON_FILENAME = 'package-lock.json'.freeze

      def initialize(args)
        @segment = args[0]
      end

      def execute
        package_json = parse_content(PACKAGE_JSON_FILENAME)
        if package_json == nil
          return
        end

        file_version = package_json['version']
        old_version = SemVersion.new(file_version)
        new_version = Incr::Service::Version.increment_segment(old_version, @segment)

        Incr::Service::FileHelper.replace(PACKAGE_JSON_FILENAME, version_pattern(old_version.to_s), version_pattern(new_version.to_s))
        Incr::Service::FileHelper.replace(PACKAGE_LOCK_JSON_FILENAME, version_pattern(old_version.to_s), version_pattern(new_version.to_s))

        puts "v#{new_version.to_s}"

        git = Incr::Service::Git.new('.')
        git.add(PACKAGE_JSON_FILENAME)
        git.add(PACKAGE_LOCK_JSON_FILENAME)
        oid = git.commit(new_version.to_s)
        git.tag("v#{new_version.to_s}", oid)
      end

      private

      def parse_content(filename)
        if !File.exist?(filename)
          STDERR.puts("[Err] '#{filename}' not found.")
          return nil
        end

        JSON.parse(IO.read(filename))
      end

      def version_pattern(version)
        "\"version\": \"#{version}\""
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
incr-0.2.0 lib/incr/command/npm.rb
incr-0.1.2 lib/incr/command/npm.rb