incr 0.4.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 990244b97a22582412b854aeef90bd9ec4098a79
4
- data.tar.gz: 91f01973dac745680d3c2a482e47c4baf39fbf7c
2
+ SHA256:
3
+ metadata.gz: 637f1247da8e04e0718b52ef9e2a10998615107658b6cc81b1229b9ed2d03e59
4
+ data.tar.gz: b79e61194d1eca2a6ee102c0a85fd9a0c2be352c041994a129e68b20932a811c
5
5
  SHA512:
6
- metadata.gz: acbd123ad551512a014ce37772d7da580212b1fba0e0e1e5dd6784f56bda7d8845d976cd86a3488093ae57e9b51343b1e95765e4e7138f3fa72e9f9fdbd24473
7
- data.tar.gz: 973123c4bc4d3210f82d3d2bd8e5c57e342d2eb461e98e2d4d21faf7cc5b4ccad6cb74d148433d88482ea3991ff770f5246350f2525f8ef5213230375c6037a5
6
+ metadata.gz: 357ac98e744072a23294c56b527c4393efa9c73fb78dfee45b735c22e0f787475479099eb9dfaa35fd3d945b31fb7fdc522e55fabe98b98c8c2fc5f76c12549b
7
+ data.tar.gz: 0c829902f6251d72b5ef17ceeb49a831a2a7503916fc954ff0eb70ef139e2cbd1248ef33e6ffec467f5139c31f83200bf34c9bc4fd45c87d78aaf83ee2c1b4e4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- incr (0.4.0)
4
+ incr (0.5.0)
5
5
  git (= 1.3.0)
6
6
  gli (= 2.17.1)
7
7
  sem_version (= 2.0.1)
@@ -20,4 +20,4 @@ DEPENDENCIES
20
20
  incr!
21
21
 
22
22
  BUNDLED WITH
23
- 1.16.1
23
+ 1.16.6
data/README.md CHANGED
@@ -6,8 +6,7 @@
6
6
  Incr is a tool to help you easily increment the version number of your NPM or Mix packages.
7
7
  <br /><br />
8
8
  <a href="https://rubygems.org/gems/incr"><img src="http://img.shields.io/gem/v/incr.svg" /></a>
9
- <a href="https://codeclimate.com/github/jcouture/incr"><img src="http://img.shields.io/codeclimate/github/jcouture/incr.svg" /></a>
10
- <a href="https://gemnasium.com/jcouture/incr"><img src="http://img.shields.io/gemnasium/jcouture/incr.svg" /></a>
9
+
11
10
  <a href="https://travis-ci.org/jcouture/incr"><img src="http://img.shields.io/travis/jcouture/incr.svg" /></a>
12
11
  </p>
13
12
 
@@ -46,16 +45,18 @@ To increment the minor segment of your Mix package version number:
46
45
  Here are some arguments that can be used with `incr`:
47
46
  - `-d` : Directory where to search for the version files (default: `.`)
48
47
  - `-t` : Tag name pattern, where `%s` will be replaced with the new version (default: `v%s`)
48
+ - `--[no-]commit` : Commit changes. (default: enabled)
49
+ - `--[no-]tag` : Create a git tag. (default: enabled)
49
50
 
50
51
  Example:
51
52
  ```shell
52
- ~> incr npm patch -d ./subprojects/web/ -t MyCustomTagPrefix/%s
53
+ ~> incr --no-tag -d ./subprojects/web/ -t MyCustomTagPrefix/%s npm patch
53
54
  ```
54
55
 
55
56
  This will :
56
57
  - Search for `package.json` and `package-lock.json` files inside `./subprojects/web/` and update the patch version
57
- - Create a tag named `MyCustomTagPrefix/2.3.4`
58
58
  - Commit the changes under the message `MyCustomTagPrefix/2.3.4`
59
+ - Not create a tag with the new version
59
60
 
60
61
  ## Contributing
61
62
 
data/bin/incr CHANGED
@@ -10,8 +10,11 @@ include GLI::App
10
10
  program_desc('Tasteful utility to increment the version number and create a corresponding git tag.')
11
11
  version(Incr::VERSION)
12
12
 
13
- flag [:d, :versionFileDirectory], :default_value => '.', :desc => 'Directory where to search for version file.'
14
- flag [:t, :tagNamePattern], :default_value => 'v%s'
13
+ flag [:d, :versionFileDirectory], :default_value => '.', :desc => 'Directory where to search for version file'
14
+ flag [:t, :tagNamePattern], :default_value => 'v%s', :desc => 'Pattern for the tag name'
15
+
16
+ switch :commit, :default_value => true, :desc => 'Commit changes'
17
+ switch :tag, :default_value => true, :desc => 'Create a git tag'
15
18
 
16
19
  pre do |global, command, options, args|
17
20
  if args.length != 1 || !['major', 'minor', 'patch'].any? {|segment| args.include?(segment)}
@@ -1,10 +1,18 @@
1
1
  module Incr
2
2
  module Command
3
3
  class Mix
4
+ VERSION_REGEX = /@?version:?\W*\"(\d*.\d*.\d*)"/
5
+ VERSION_REPLACEMENT_PATTERNS = [
6
+ "version: \"%s\"",
7
+ "@version \"%s\""
8
+ ]
9
+
4
10
  def initialize(args, global_options)
5
11
  @segment = args[0]
6
12
  @mix_file_filename = File.join('.', global_options[:versionFileDirectory], 'mix.exs')
7
13
  @tag_pattern = global_options[:tagNamePattern]
14
+ @commit = global_options[:commit]
15
+ @tag = global_options[:tag]
8
16
  end
9
17
 
10
18
  def execute
@@ -13,10 +21,10 @@ module Incr
13
21
  return
14
22
  end
15
23
 
16
- file_version = file_content.match(/version:\W*\"(\d*.\d*.\d*)",/)[1]
24
+ file_version = file_content.match(VERSION_REGEX)[1]
17
25
  old_version = SemVersion.new(file_version)
18
26
  new_version = Incr::Service::Version.increment_segment(old_version, @segment)
19
- Incr::Service::FileHelper.replace_once(@mix_file_filename, version_pattern(old_version.to_s), version_pattern(new_version.to_s))
27
+ replace_file_version(old_version, new_version)
20
28
 
21
29
  new_tag = @tag_pattern % new_version.to_s
22
30
 
@@ -24,8 +32,8 @@ module Incr
24
32
 
25
33
  repository = Incr::Service::Repository.new('.')
26
34
  repository.add(@mix_file_filename)
27
- repository.commit(new_tag)
28
- repository.tag(new_tag)
35
+ repository.commit(new_tag) if @commit
36
+ repository.tag(new_tag) if @tag
29
37
  end
30
38
 
31
39
  private
@@ -39,8 +47,13 @@ module Incr
39
47
  IO.read(filename)
40
48
  end
41
49
 
42
- def version_pattern(version)
43
- "version: \"#{version}\""
50
+ def replace_file_version(old_version, new_version)
51
+ VERSION_REPLACEMENT_PATTERNS.each do |pattern|
52
+ old_version_pattern = format(pattern, old_version.to_s)
53
+ new_version_pattern = format(pattern, new_version.to_s)
54
+
55
+ Incr::Service::FileHelper.replace_string_once(@mix_file_filename, old_version_pattern, new_version_pattern)
56
+ end
44
57
  end
45
58
  end
46
59
  end
@@ -4,6 +4,14 @@ require 'sem_version'
4
4
  module Incr
5
5
  module Command
6
6
  class Npm
7
+ # pattern for any semver version, including pre-release label (ie. 1.0.0-alpha)
8
+ VERSION_PATTERN = "[\\w\\.\\-]*"
9
+
10
+ # pattern preceding the version in package.json and package-lock.json (v1 and v2)
11
+ LOOKBEHIND_PATTERNS = [
12
+ "\\A{[^{}]*\"version\": \"\\K",
13
+ "\"\": {[^{}]*\"version\": \"\\K"
14
+ ]
7
15
 
8
16
  def initialize(args, global_options)
9
17
  @segment = args[0]
@@ -11,6 +19,8 @@ module Incr
11
19
  @package_json_filename = File.join('.', global_options[:versionFileDirectory], 'package.json')
12
20
  @package_json_lock_filename = File.join('.', global_options[:versionFileDirectory], 'package-lock.json')
13
21
  @tag_pattern = global_options[:tagNamePattern]
22
+ @commit = global_options[:commit]
23
+ @tag = global_options[:tag]
14
24
  end
15
25
 
16
26
  def execute
@@ -23,8 +33,8 @@ module Incr
23
33
  old_version = SemVersion.new(file_version)
24
34
  new_version = Incr::Service::Version.increment_segment(old_version, @segment)
25
35
 
26
- Incr::Service::FileHelper.replace_once(@package_json_filename, version_pattern(old_version.to_s), version_pattern(new_version.to_s))
27
- Incr::Service::FileHelper.replace_once(@package_json_lock_filename, version_pattern(old_version.to_s), version_pattern(new_version.to_s))
36
+ replace_file_version(@package_json_filename, new_version.to_s)
37
+ replace_file_version(@package_json_lock_filename, new_version.to_s)
28
38
 
29
39
  new_tag = @tag_pattern % new_version.to_s
30
40
 
@@ -33,8 +43,8 @@ module Incr
33
43
  repository = Incr::Service::Repository.new('.')
34
44
  repository.add(@package_json_filename)
35
45
  repository.add(@package_json_lock_filename)
36
- repository.commit(new_tag)
37
- repository.tag(new_tag)
46
+ repository.commit(new_tag) if @commit
47
+ repository.tag(new_tag) if @tag
38
48
  end
39
49
 
40
50
  private
@@ -48,8 +58,11 @@ module Incr
48
58
  JSON.parse(IO.read(filename))
49
59
  end
50
60
 
51
- def version_pattern(version)
52
- "\"version\": \"#{version}\""
61
+ def replace_file_version(filename, new_version)
62
+ LOOKBEHIND_PATTERNS.each do |lookbehind_pattern|
63
+ pattern = /#{lookbehind_pattern}#{VERSION_PATTERN}/
64
+ Incr::Service::FileHelper.replace_regexp_once(filename, pattern, new_version)
65
+ end
53
66
  end
54
67
  end
55
68
  end
@@ -1,9 +1,13 @@
1
1
  module Incr
2
2
  module Service
3
3
  class FileHelper
4
- def self.replace_once(filename, old_text, new_text)
4
+ def self.replace_string_once(filename, old_text, new_text)
5
+ replace_regexp_once(/#{Regexp.escape(old_text)}/, new_text)
6
+ end
7
+
8
+ def self.replace_regexp_once(filename, pattern, replacement_text)
5
9
  old_content = File.read(filename)
6
- new_content = old_content.sub(/#{Regexp.escape(old_text)}/, new_text)
10
+ new_content = old_content.sub(pattern, replacement_text)
7
11
  File.open(filename, 'w') { |file| file << new_content }
8
12
  end
9
13
  end
data/lib/incr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Incr
2
- VERSION = '0.4.0'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: incr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Philippe Couture
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-26 00:00:00.000000000 Z
11
+ date: 2022-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.3.0
55
- description:
55
+ description:
56
56
  email:
57
57
  - jcouture@gmail.com
58
58
  executables:
@@ -79,7 +79,7 @@ homepage: https://github.com/jcouture/incr
79
79
  licenses:
80
80
  - MIT
81
81
  metadata: {}
82
- post_install_message:
82
+ post_install_message:
83
83
  rdoc_options: []
84
84
  require_paths:
85
85
  - lib
@@ -95,9 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  requirements: []
98
- rubyforge_project:
99
- rubygems_version: 2.6.13
100
- signing_key:
98
+ rubygems_version: 3.3.3
99
+ signing_key:
101
100
  specification_version: 4
102
101
  summary: Tasteful utility to increment the version number and create a corresponding
103
102
  git tag.