raketeer 0.2.8 → 0.2.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,23 +1,11 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of Raketeer.
7
- # Copyright (c) 2019 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # Raketeer is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU Lesser General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # Raketeer is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU Lesser General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU Lesser General Public License
20
- # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2019-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: LGPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
@@ -26,12 +14,14 @@ require 'raketeer/sem_ver'
26
14
  module Raketeer
27
15
  ###
28
16
  # Bump Version
29
- #
30
- # @author Jonathan Bradley Whited (@esotericpig)
17
+ #
18
+ # @author Jonathan Bradley Whited
31
19
  # @since 0.2.4
32
20
  ###
33
21
  class BumpVer < SemVer
34
22
  def initialize(version: nil,major: nil,minor: nil,patch: nil,prerelease: nil,build_meta: nil)
23
+ super()
24
+
35
25
  self.build_meta = build_meta
36
26
  self.major = major
37
27
  self.minor = minor
@@ -39,104 +29,127 @@ module Raketeer
39
29
  self.prerelease = prerelease
40
30
  self.version = version
41
31
  end
42
-
32
+
43
33
  def init_int_or_str(obj)
44
- return nil if obj.nil?()
34
+ return nil if obj.nil?
45
35
  return obj if obj.is_a?(Integer)
46
-
47
- obj = obj.to_s().strip()
48
-
49
- return obj if obj.empty?() || obj[0] == '+'
50
- return obj.to_i()
36
+
37
+ obj = obj.to_s.strip
38
+
39
+ return obj if obj.empty? || obj[0] == '+'
40
+ return obj.to_i
51
41
  end
52
-
42
+
53
43
  def init_str(obj)
54
- return obj.nil?() ? nil : obj.to_s().strip()
44
+ return obj.nil? ? nil : obj.to_s.strip
55
45
  end
56
-
46
+
57
47
  def bump!(sem_ver)
58
- if !@version.nil?()
48
+ if !@version.nil?
59
49
  sem_ver.version = @version
60
50
  else
61
- if !@major.nil?()
51
+ if !@major.nil?
62
52
  if @major.is_a?(Integer)
63
53
  sem_ver.major = @major
64
- elsif @major.empty?()
54
+ elsif @major.empty?
65
55
  sem_ver.major = 0 # There must always be a major version
66
56
  else
67
- sem_ver.major = 0 if sem_ver.major.nil?()
68
- sem_ver.major += @major.to_i()
57
+ sem_ver.major = 0 if sem_ver.major.nil?
58
+
59
+ old_major = sem_ver.major
60
+ sem_ver.major += @major.to_i
61
+
62
+ if sem_ver.major != old_major
63
+ # Reset minor & patch so that 1.1.1 => 2.0.0.
64
+ # If the user wishes, minor & patch will continue
65
+ # to be affected after ('+1.+1.+1').
66
+ sem_ver.minor = 0
67
+ sem_ver.patch = 0
68
+
69
+ # It's difficult to decide whether to set
70
+ # pre-release and build-metadata to nil,
71
+ # so just leave them.
72
+ end
69
73
  end
70
74
  end
71
-
72
- if !@minor.nil?()
75
+
76
+ if !@minor.nil?
73
77
  if @minor.is_a?(Integer)
74
78
  sem_ver.minor = @minor
75
- elsif @minor.empty?()
79
+ elsif @minor.empty?
76
80
  sem_ver.minor = nil
77
81
  else
78
- sem_ver.minor = 0 if sem_ver.minor.nil?()
79
- sem_ver.minor += @minor.to_i()
82
+ sem_ver.minor = 0 if sem_ver.minor.nil?
83
+
84
+ old_minor = sem_ver.minor
85
+ sem_ver.minor += @minor.to_i
86
+
87
+ if sem_ver.minor != old_minor
88
+ # Reset patch so that 1.1.1 => 1.2.0.
89
+ # If the user wishes, patch will continue
90
+ # to be affected after ('X.+1.+1').
91
+ sem_ver.patch = 0
92
+ end
80
93
  end
81
94
  end
82
-
83
- if !@patch.nil?()
95
+
96
+ if !@patch.nil?
84
97
  if @patch.is_a?(Integer)
85
98
  sem_ver.patch = @patch
86
- elsif @patch.empty?()
99
+ elsif @patch.empty?
87
100
  sem_ver.patch = nil
88
101
  else
89
- sem_ver.patch = 0 if sem_ver.patch.nil?()
90
- sem_ver.patch += @patch.to_i()
102
+ sem_ver.patch = 0 if sem_ver.patch.nil?
103
+ sem_ver.patch += @patch.to_i
91
104
  end
92
105
  end
93
-
94
- if !@prerelease.nil?()
95
- if @prerelease.empty?()
106
+
107
+ if !@prerelease.nil?
108
+ if @prerelease.empty?
96
109
  sem_ver.prerelease = nil
97
110
  else
98
111
  sem_ver.prerelease = @prerelease
99
112
  end
100
113
  end
101
-
102
- if !@build_meta.nil?()
103
- if @build_meta.empty?()
114
+
115
+ if !@build_meta.nil?
116
+ if @build_meta.empty?
104
117
  sem_ver.build_meta = nil
105
118
  else
106
119
  sem_ver.build_meta = @build_meta
107
120
  end
108
121
  end
109
122
  end
110
-
123
+
111
124
  return sem_ver
112
125
  end
113
-
126
+
114
127
  def bump_line!(line,sem_ver,strict: false)
115
- line.sub!(self.class.regex(strict),bump!(sem_ver).to_s())
116
-
128
+ line.sub!(self.class.regex(strict),bump!(sem_ver).to_s)
129
+
117
130
  return line
118
131
  end
119
-
132
+
120
133
  def build_meta=(build_meta)
121
134
  super(init_str(build_meta))
122
135
  end
123
-
136
+
124
137
  def major=(major)
125
138
  super(init_int_or_str(major))
126
139
  end
127
-
140
+
128
141
  def minor=(minor)
129
142
  super(init_int_or_str(minor))
130
143
  end
131
-
144
+
132
145
  def patch=(patch)
133
146
  super(init_int_or_str(patch))
134
147
  end
135
-
148
+
136
149
  def prerelease=(prerelease)
137
150
  super(init_str(prerelease))
138
151
  end
139
-
152
+
140
153
  def version=(version)
141
154
  super(init_str(version))
142
155
  end
@@ -1,23 +1,11 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of Raketeer.
7
- # Copyright (c) 2019 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # Raketeer is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU Lesser General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # Raketeer is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU Lesser General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU Lesser General Public License
20
- # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2019-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: LGPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
@@ -26,7 +14,7 @@ require 'raketeer/sem_ver'
26
14
 
27
15
  module Raketeer
28
16
  ###
29
- # @author Jonathan Bradley Whited (@esotericpig)
17
+ # @author Jonathan Bradley Whited
30
18
  # @since 0.2.4
31
19
  ###
32
20
  class FilesBumper
@@ -42,67 +30,67 @@ module Raketeer
42
30
  attr_accessor :strict
43
31
  attr_accessor :version
44
32
  attr_accessor :version_bumped # Was the version actually bumped?
45
-
33
+
46
34
  alias_method :bump_ver_empty?,:bump_ver_empty
47
35
  alias_method :dry_run?,:dry_run
48
36
  alias_method :strict?,:strict
49
37
  alias_method :version_bumped?,:version_bumped
50
-
38
+
51
39
  def initialize(files,bump_ver,dry_run,strict,&init_per_file)
52
40
  @bump_ver = bump_ver
53
- @bump_ver_empty = bump_ver.empty?()
41
+ @bump_ver_empty = bump_ver.empty?
54
42
  @dry_run = dry_run
55
- @files = files.to_a()
43
+ @files = files.to_a
56
44
  @init_per_file = init_per_file
57
45
  @sem_ver = nil
58
46
  @strict = strict
59
47
  @version = nil
60
48
  @version_bumped = false
61
49
  end
62
-
50
+
63
51
  def add_change(line,push: true)
64
52
  puts "+ #{line}"
65
-
53
+
66
54
  @changes += 1
67
55
  @lines << line if push
68
56
  end
69
-
57
+
70
58
  def bump_files(&block)
71
59
  @files.each do |filename|
72
60
  puts "[#{filename}]:"
73
-
61
+
74
62
  if !File.exist?(filename)
75
63
  puts '! File does not exist'
76
-
64
+
77
65
  next
78
66
  end
79
-
67
+
80
68
  @changes = 0 # For possible future use
81
69
  @lines = []
82
70
  @sem_ver = nil
83
-
84
- @init_per_file.call(self) unless @init_per_file.nil?()
85
-
71
+
72
+ @init_per_file&.call(self)
73
+
86
74
  File.foreach(filename) do |line|
87
75
  @line = line
88
-
89
- block.call(self) if !@line.strip().empty?()
90
-
76
+
77
+ block.call(self) if !@line.strip.empty?
78
+
91
79
  @lines << @line
92
80
  end
93
-
94
- next if bump_ver_empty?()
95
-
81
+
82
+ next if bump_ver_empty?
83
+
96
84
  print '= '
97
-
85
+
98
86
  if @changes > 0
99
- if dry_run?()
87
+ if dry_run?
100
88
  puts "Nothing written (dry run): #{@sem_ver}"
101
89
  else
102
90
  File.open(filename,'w') do |file|
103
91
  file.puts @lines
104
92
  end
105
-
93
+
106
94
  puts "#{@changes} change#{@changes == 1 ? '' : 's'} written"
107
95
  end
108
96
  else
@@ -110,42 +98,40 @@ module Raketeer
110
98
  end
111
99
  end
112
100
  end
113
-
101
+
114
102
  # @return [:no_ver,:same_ver,:bumped_ver]
115
103
  def bump_line!(add_change: true)
116
104
  @sem_ver = SemVer.parse_line(@line,strict: @strict)
117
-
118
- return :no_ver if @sem_ver.nil?()
119
-
120
- @version = @sem_ver if @version.nil?()
121
-
122
- if bump_ver_empty?()
105
+
106
+ return :no_ver if @sem_ver.nil?
107
+
108
+ @version = @sem_ver if @version.nil?
109
+
110
+ if bump_ver_empty?
123
111
  puts "= #{@sem_ver}"
124
-
112
+
125
113
  return :same_ver
126
114
  else
127
- orig_line = @line.dup()
128
- orig_sem_ver_s = @sem_ver.to_s()
129
-
115
+ orig_line = @line.dup
116
+ orig_sem_ver_s = @sem_ver.to_s
117
+
130
118
  @bump_ver.bump_line!(@line,@sem_ver,strict: @strict)
131
-
132
- if @sem_ver.to_s() != orig_sem_ver_s
119
+
120
+ if @sem_ver.to_s != orig_sem_ver_s
133
121
  if !@version_bumped
134
122
  @version = @sem_ver
135
123
  @version_bumped = true
136
124
  end
137
-
125
+
138
126
  self.add_change(@line,push: false) if add_change
139
-
127
+
140
128
  return :bumped_ver
141
129
  else
142
130
  @line = orig_line
143
-
131
+
144
132
  return :same_ver
145
133
  end
146
134
  end
147
-
148
- return :no_ver
149
135
  end
150
136
  end
151
137
  end
@@ -1,23 +1,11 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of Raketeer.
7
- # Copyright (c) 2020 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # Raketeer is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU Lesser General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # Raketeer is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU Lesser General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU Lesser General Public License
20
- # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2019-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: LGPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
@@ -26,11 +14,11 @@ require 'raketeer/github_pkg_task'
26
14
 
27
15
  module Raketeer
28
16
  ###
29
- # @author Jonathan Bradley Whited (@esotericpig)
17
+ # @author Jonathan Bradley Whited
30
18
  # @since 0.2.8
31
19
  ###
32
20
  module GitHubPkg
33
21
  end
34
22
  end
35
23
 
36
- Raketeer::GitHubPkgTask.new() # @since 0.2.8
24
+ Raketeer::GitHubPkgTask.new # @since 0.2.8
@@ -1,23 +1,11 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of Raketeer.
7
- # Copyright (c) 2020 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # Raketeer is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU Lesser General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # Raketeer is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU Lesser General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU Lesser General Public License
20
- # along with Raketeer. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2019-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: LGPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
@@ -28,7 +16,7 @@ require 'raketeer/util'
28
16
 
29
17
  module Raketeer
30
18
  ###
31
- # @author Jonathan Bradley Whited (@esotericpig)
19
+ # @author Jonathan Bradley Whited
32
20
  # @since 0.2.8
33
21
  ###
34
22
  class GitHubPkgTask < Rake::TaskLib
@@ -36,34 +24,34 @@ module Raketeer
36
24
  attr_accessor :description
37
25
  attr_accessor :name
38
26
  attr_accessor :username
39
-
27
+
40
28
  def initialize(name=:github_pkg)
41
29
  super()
42
-
30
+
43
31
  @deps = [:build]
44
- @description = %Q(Publish this project's gem(s) to GitHub Packages)
32
+ @description = "Publish this project's gem(s) to GitHub Packages"
45
33
  @name = name
46
34
  @username = nil
47
-
48
- yield self if block_given?()
49
-
50
- @username = Util.find_github_username() if @username.nil?()
51
-
52
- raise "#{self.class.name}.username is nil" if @username.nil?()
53
-
54
- define()
35
+
36
+ yield self if block_given?
37
+
38
+ @username = Util.find_github_username if @username.nil?
39
+
40
+ raise "#{self.class.name}.username is nil" if @username.nil?
41
+
42
+ define
55
43
  end
56
-
57
- def define()
44
+
45
+ def define
58
46
  desc @description
59
47
  task @name => Array(@deps) do |task,args|
60
48
  sh_cmd = ['gem']
61
-
49
+
62
50
  sh_cmd.push('push')
63
51
  sh_cmd.push('--key','github')
64
52
  sh_cmd.push('--host',"https://rubygems.pkg.github.com/#{username}")
65
53
  sh_cmd.push(*Dir.glob(File.join('pkg','*.gem'))) # Is this okay for multiple gems?
66
-
54
+
67
55
  sh(*sh_cmd)
68
56
  end
69
57
  end