incr 0.5.0 → 0.7.1

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
2
  SHA256:
3
- metadata.gz: c4896689095379204d0697a39423ce3c15b87f4920164314bc86c2121f22154b
4
- data.tar.gz: 9f008d7fbf98ff81278ba1cb4851fee1cdea1327890428e234a85c3487c983c3
3
+ metadata.gz: beae18538716cd3443ecea4076ee9d05c0192c97cbbcf92e8c2b9e775b70bbf9
4
+ data.tar.gz: 8e02e3fe88c0b370bc48091efb75f15e0e288e8f11635bf7c036bc0d7b06ea81
5
5
  SHA512:
6
- metadata.gz: 426b80a1277e931264e19c8305d92e6a04a2615ff5f20152a0ffac3ffe1ea67dbff34adabc05ff556bf07d73492e7ee6f1280e87dc09ca860be071989a0b8744
7
- data.tar.gz: 397eef5e1e50727872a09a223d9487252f98e808eca019d8ba999006068b5323de33684cafbd713e1fc167ca5d4dd343876b83e6e51f5cb90a84730f0b3cc5b3
6
+ metadata.gz: 75ebb280db2da0b09bcbb9f0e73fb806f05386af61ac2d76b8c907a256576e024b99b97844ffbf5a5d42a68857f647f071a92b587bd8cc43815e86e461a53fd0
7
+ data.tar.gz: f1a1d70c6159aafbec950b02220a4af567675d8c270c7dfc973c2a1a6da498af6e2163ce40d1607452b2f712205b4eaa1bb058f893489b80821d8ff85d34a7b5
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.7.1)
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
 
@@ -51,7 +50,7 @@ Here are some arguments that can be used with `incr`:
51
50
 
52
51
  Example:
53
52
  ```shell
54
- ~> incr --no-tag npm patch -d ./subprojects/web/ -t MyCustomTagPrefix/%s
53
+ ~> incr --no-tag -d ./subprojects/web/ -t MyCustomTagPrefix/%s npm patch
55
54
  ```
56
55
 
57
56
  This will :
@@ -1,6 +1,12 @@
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')
@@ -15,10 +21,10 @@ module Incr
15
21
  return
16
22
  end
17
23
 
18
- file_version = file_content.match(/version:\W*\"(\d*.\d*.\d*)",/)[1]
24
+ file_version = file_content.match(VERSION_REGEX)[1]
19
25
  old_version = SemVersion.new(file_version)
20
26
  new_version = Incr::Service::Version.increment_segment(old_version, @segment)
21
- 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)
22
28
 
23
29
  new_tag = @tag_pattern % new_version.to_s
24
30
 
@@ -41,8 +47,13 @@ module Incr
41
47
  IO.read(filename)
42
48
  end
43
49
 
44
- def version_pattern(version)
45
- "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
46
57
  end
47
58
  end
48
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]
@@ -25,8 +33,8 @@ module Incr
25
33
  old_version = SemVersion.new(file_version)
26
34
  new_version = Incr::Service::Version.increment_segment(old_version, @segment)
27
35
 
28
- Incr::Service::FileHelper.replace_once(@package_json_filename, version_pattern(old_version.to_s), version_pattern(new_version.to_s))
29
- 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)
30
38
 
31
39
  new_tag = @tag_pattern % new_version.to_s
32
40
 
@@ -50,8 +58,11 @@ module Incr
50
58
  JSON.parse(IO.read(filename))
51
59
  end
52
60
 
53
- def version_pattern(version)
54
- "\"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
55
66
  end
56
67
  end
57
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(filename, /#{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.5.0'
2
+ VERSION = '0.7.1'
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.5.0
4
+ version: 0.7.1
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-11-29 00:00:00.000000000 Z
11
+ date: 2022-03-16 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.7.6
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.