raketeer 0.2.5 → 0.2.10
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 +4 -4
- data/CHANGELOG.md +38 -14
- data/Gemfile +0 -18
- data/README.md +116 -5
- data/Rakefile +12 -18
- data/lib/raketeer.rb +4 -16
- data/lib/raketeer/all.rb +5 -17
- data/lib/raketeer/bump.rb +3 -17
- data/lib/raketeer/bump_task.rb +130 -147
- data/lib/raketeer/bump_ver.rb +46 -58
- data/lib/raketeer/files_bumper.rb +40 -56
- data/lib/raketeer/github_pkg.rb +22 -0
- data/lib/raketeer/github_pkg_task.rb +57 -0
- data/lib/raketeer/irb.rb +3 -17
- data/lib/raketeer/irb_task.rb +15 -29
- data/lib/raketeer/nokogiri_install_tasks.rb +25 -39
- data/lib/raketeer/nokogiri_installs.rb +6 -20
- data/lib/raketeer/run.rb +3 -17
- data/lib/raketeer/run_task.rb +24 -38
- data/lib/raketeer/sem_ver.rb +60 -74
- data/lib/raketeer/util.rb +49 -35
- data/lib/raketeer/version.rb +9 -25
- data/raketeer.gemspec +20 -36
- metadata +14 -10
data/lib/raketeer/bump_ver.rb
CHANGED
@@ -1,23 +1,9 @@
|
|
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
|
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
|
21
7
|
#++
|
22
8
|
|
23
9
|
|
@@ -26,12 +12,14 @@ require 'raketeer/sem_ver'
|
|
26
12
|
module Raketeer
|
27
13
|
###
|
28
14
|
# Bump Version
|
29
|
-
#
|
30
|
-
# @author Jonathan Bradley Whited
|
15
|
+
#
|
16
|
+
# @author Jonathan Bradley Whited
|
31
17
|
# @since 0.2.4
|
32
18
|
###
|
33
19
|
class BumpVer < SemVer
|
34
20
|
def initialize(version: nil,major: nil,minor: nil,patch: nil,prerelease: nil,build_meta: nil)
|
21
|
+
super()
|
22
|
+
|
35
23
|
self.build_meta = build_meta
|
36
24
|
self.major = major
|
37
25
|
self.minor = minor
|
@@ -39,104 +27,104 @@ module Raketeer
|
|
39
27
|
self.prerelease = prerelease
|
40
28
|
self.version = version
|
41
29
|
end
|
42
|
-
|
30
|
+
|
43
31
|
def init_int_or_str(obj)
|
44
|
-
return nil if obj.nil?
|
32
|
+
return nil if obj.nil?
|
45
33
|
return obj if obj.is_a?(Integer)
|
46
|
-
|
47
|
-
obj = obj.to_s
|
48
|
-
|
49
|
-
return obj if obj.empty?
|
50
|
-
return obj.to_i
|
34
|
+
|
35
|
+
obj = obj.to_s.strip
|
36
|
+
|
37
|
+
return obj if obj.empty? || obj[0] == '+'
|
38
|
+
return obj.to_i
|
51
39
|
end
|
52
|
-
|
40
|
+
|
53
41
|
def init_str(obj)
|
54
|
-
return obj.nil?
|
42
|
+
return obj.nil? ? nil : obj.to_s.strip
|
55
43
|
end
|
56
|
-
|
44
|
+
|
57
45
|
def bump!(sem_ver)
|
58
|
-
if !@version.nil?
|
46
|
+
if !@version.nil?
|
59
47
|
sem_ver.version = @version
|
60
48
|
else
|
61
|
-
if !@major.nil?
|
49
|
+
if !@major.nil?
|
62
50
|
if @major.is_a?(Integer)
|
63
51
|
sem_ver.major = @major
|
64
|
-
elsif @major.empty?
|
52
|
+
elsif @major.empty?
|
65
53
|
sem_ver.major = 0 # There must always be a major version
|
66
54
|
else
|
67
|
-
sem_ver.major = 0 if sem_ver.major.nil?
|
68
|
-
sem_ver.major += @major.to_i
|
55
|
+
sem_ver.major = 0 if sem_ver.major.nil?
|
56
|
+
sem_ver.major += @major.to_i
|
69
57
|
end
|
70
58
|
end
|
71
|
-
|
72
|
-
if !@minor.nil?
|
59
|
+
|
60
|
+
if !@minor.nil?
|
73
61
|
if @minor.is_a?(Integer)
|
74
62
|
sem_ver.minor = @minor
|
75
|
-
elsif @minor.empty?
|
63
|
+
elsif @minor.empty?
|
76
64
|
sem_ver.minor = nil
|
77
65
|
else
|
78
|
-
sem_ver.minor = 0 if sem_ver.minor.nil?
|
79
|
-
sem_ver.minor += @minor.to_i
|
66
|
+
sem_ver.minor = 0 if sem_ver.minor.nil?
|
67
|
+
sem_ver.minor += @minor.to_i
|
80
68
|
end
|
81
69
|
end
|
82
|
-
|
83
|
-
if !@patch.nil?
|
70
|
+
|
71
|
+
if !@patch.nil?
|
84
72
|
if @patch.is_a?(Integer)
|
85
73
|
sem_ver.patch = @patch
|
86
|
-
elsif @patch.empty?
|
74
|
+
elsif @patch.empty?
|
87
75
|
sem_ver.patch = nil
|
88
76
|
else
|
89
|
-
sem_ver.patch = 0 if sem_ver.patch.nil?
|
90
|
-
sem_ver.patch += @patch.to_i
|
77
|
+
sem_ver.patch = 0 if sem_ver.patch.nil?
|
78
|
+
sem_ver.patch += @patch.to_i
|
91
79
|
end
|
92
80
|
end
|
93
|
-
|
94
|
-
if !@prerelease.nil?
|
95
|
-
if @prerelease.empty?
|
81
|
+
|
82
|
+
if !@prerelease.nil?
|
83
|
+
if @prerelease.empty?
|
96
84
|
sem_ver.prerelease = nil
|
97
85
|
else
|
98
86
|
sem_ver.prerelease = @prerelease
|
99
87
|
end
|
100
88
|
end
|
101
|
-
|
102
|
-
if !@build_meta.nil?
|
103
|
-
if @build_meta.empty?
|
89
|
+
|
90
|
+
if !@build_meta.nil?
|
91
|
+
if @build_meta.empty?
|
104
92
|
sem_ver.build_meta = nil
|
105
93
|
else
|
106
94
|
sem_ver.build_meta = @build_meta
|
107
95
|
end
|
108
96
|
end
|
109
97
|
end
|
110
|
-
|
98
|
+
|
111
99
|
return sem_ver
|
112
100
|
end
|
113
|
-
|
101
|
+
|
114
102
|
def bump_line!(line,sem_ver,strict: false)
|
115
|
-
line.sub!(self.class.regex(strict),bump!(sem_ver).to_s
|
116
|
-
|
103
|
+
line.sub!(self.class.regex(strict),bump!(sem_ver).to_s)
|
104
|
+
|
117
105
|
return line
|
118
106
|
end
|
119
|
-
|
107
|
+
|
120
108
|
def build_meta=(build_meta)
|
121
109
|
super(init_str(build_meta))
|
122
110
|
end
|
123
|
-
|
111
|
+
|
124
112
|
def major=(major)
|
125
113
|
super(init_int_or_str(major))
|
126
114
|
end
|
127
|
-
|
115
|
+
|
128
116
|
def minor=(minor)
|
129
117
|
super(init_int_or_str(minor))
|
130
118
|
end
|
131
|
-
|
119
|
+
|
132
120
|
def patch=(patch)
|
133
121
|
super(init_int_or_str(patch))
|
134
122
|
end
|
135
|
-
|
123
|
+
|
136
124
|
def prerelease=(prerelease)
|
137
125
|
super(init_str(prerelease))
|
138
126
|
end
|
139
|
-
|
127
|
+
|
140
128
|
def version=(version)
|
141
129
|
super(init_str(version))
|
142
130
|
end
|
@@ -1,23 +1,9 @@
|
|
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
|
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
|
21
7
|
#++
|
22
8
|
|
23
9
|
|
@@ -26,7 +12,7 @@ require 'raketeer/sem_ver'
|
|
26
12
|
|
27
13
|
module Raketeer
|
28
14
|
###
|
29
|
-
# @author Jonathan Bradley Whited
|
15
|
+
# @author Jonathan Bradley Whited
|
30
16
|
# @since 0.2.4
|
31
17
|
###
|
32
18
|
class FilesBumper
|
@@ -42,67 +28,67 @@ module Raketeer
|
|
42
28
|
attr_accessor :strict
|
43
29
|
attr_accessor :version
|
44
30
|
attr_accessor :version_bumped # Was the version actually bumped?
|
45
|
-
|
31
|
+
|
46
32
|
alias_method :bump_ver_empty?,:bump_ver_empty
|
47
33
|
alias_method :dry_run?,:dry_run
|
48
34
|
alias_method :strict?,:strict
|
49
35
|
alias_method :version_bumped?,:version_bumped
|
50
|
-
|
36
|
+
|
51
37
|
def initialize(files,bump_ver,dry_run,strict,&init_per_file)
|
52
38
|
@bump_ver = bump_ver
|
53
|
-
@bump_ver_empty = bump_ver.empty?
|
39
|
+
@bump_ver_empty = bump_ver.empty?
|
54
40
|
@dry_run = dry_run
|
55
|
-
@files = files.to_a
|
41
|
+
@files = files.to_a
|
56
42
|
@init_per_file = init_per_file
|
57
43
|
@sem_ver = nil
|
58
44
|
@strict = strict
|
59
45
|
@version = nil
|
60
46
|
@version_bumped = false
|
61
47
|
end
|
62
|
-
|
48
|
+
|
63
49
|
def add_change(line,push: true)
|
64
50
|
puts "+ #{line}"
|
65
|
-
|
51
|
+
|
66
52
|
@changes += 1
|
67
53
|
@lines << line if push
|
68
54
|
end
|
69
|
-
|
55
|
+
|
70
56
|
def bump_files(&block)
|
71
57
|
@files.each do |filename|
|
72
58
|
puts "[#{filename}]:"
|
73
|
-
|
59
|
+
|
74
60
|
if !File.exist?(filename)
|
75
61
|
puts '! File does not exist'
|
76
|
-
|
62
|
+
|
77
63
|
next
|
78
64
|
end
|
79
|
-
|
65
|
+
|
80
66
|
@changes = 0 # For possible future use
|
81
67
|
@lines = []
|
82
68
|
@sem_ver = nil
|
83
|
-
|
84
|
-
@init_per_file
|
85
|
-
|
69
|
+
|
70
|
+
@init_per_file&.call(self)
|
71
|
+
|
86
72
|
File.foreach(filename) do |line|
|
87
73
|
@line = line
|
88
|
-
|
89
|
-
block.call(self) if !@line.strip
|
90
|
-
|
74
|
+
|
75
|
+
block.call(self) if !@line.strip.empty?
|
76
|
+
|
91
77
|
@lines << @line
|
92
78
|
end
|
93
|
-
|
94
|
-
next if bump_ver_empty?
|
95
|
-
|
79
|
+
|
80
|
+
next if bump_ver_empty?
|
81
|
+
|
96
82
|
print '= '
|
97
|
-
|
83
|
+
|
98
84
|
if @changes > 0
|
99
|
-
if dry_run?
|
85
|
+
if dry_run?
|
100
86
|
puts "Nothing written (dry run): #{@sem_ver}"
|
101
87
|
else
|
102
88
|
File.open(filename,'w') do |file|
|
103
89
|
file.puts @lines
|
104
90
|
end
|
105
|
-
|
91
|
+
|
106
92
|
puts "#{@changes} change#{@changes == 1 ? '' : 's'} written"
|
107
93
|
end
|
108
94
|
else
|
@@ -110,42 +96,40 @@ module Raketeer
|
|
110
96
|
end
|
111
97
|
end
|
112
98
|
end
|
113
|
-
|
99
|
+
|
114
100
|
# @return [:no_ver,:same_ver,:bumped_ver]
|
115
101
|
def bump_line!(add_change: true)
|
116
102
|
@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?
|
103
|
+
|
104
|
+
return :no_ver if @sem_ver.nil?
|
105
|
+
|
106
|
+
@version = @sem_ver if @version.nil?
|
107
|
+
|
108
|
+
if bump_ver_empty?
|
123
109
|
puts "= #{@sem_ver}"
|
124
|
-
|
110
|
+
|
125
111
|
return :same_ver
|
126
112
|
else
|
127
|
-
orig_line = @line.dup
|
128
|
-
|
129
|
-
|
113
|
+
orig_line = @line.dup
|
114
|
+
orig_sem_ver_s = @sem_ver.to_s
|
115
|
+
|
130
116
|
@bump_ver.bump_line!(@line,@sem_ver,strict: @strict)
|
131
|
-
|
132
|
-
if @sem_ver.to_s
|
117
|
+
|
118
|
+
if @sem_ver.to_s != orig_sem_ver_s
|
133
119
|
if !@version_bumped
|
134
120
|
@version = @sem_ver
|
135
121
|
@version_bumped = true
|
136
122
|
end
|
137
|
-
|
123
|
+
|
138
124
|
self.add_change(@line,push: false) if add_change
|
139
|
-
|
125
|
+
|
140
126
|
return :bumped_ver
|
141
127
|
else
|
142
128
|
@line = orig_line
|
143
|
-
|
129
|
+
|
144
130
|
return :same_ver
|
145
131
|
end
|
146
132
|
end
|
147
|
-
|
148
|
-
return :no_ver
|
149
133
|
end
|
150
134
|
end
|
151
135
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#--
|
5
|
+
# This file is part of Raketeer.
|
6
|
+
# Copyright (c) 2019-2021 Jonathan Bradley Whited
|
7
|
+
#++
|
8
|
+
|
9
|
+
|
10
|
+
require 'raketeer/github_pkg_task'
|
11
|
+
|
12
|
+
|
13
|
+
module Raketeer
|
14
|
+
###
|
15
|
+
# @author Jonathan Bradley Whited
|
16
|
+
# @since 0.2.8
|
17
|
+
###
|
18
|
+
module GitHubPkg
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Raketeer::GitHubPkgTask.new # @since 0.2.8
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#--
|
5
|
+
# This file is part of Raketeer.
|
6
|
+
# Copyright (c) 2019-2021 Jonathan Bradley Whited
|
7
|
+
#++
|
8
|
+
|
9
|
+
|
10
|
+
require 'rake'
|
11
|
+
require 'rake/tasklib'
|
12
|
+
require 'raketeer/util'
|
13
|
+
|
14
|
+
|
15
|
+
module Raketeer
|
16
|
+
###
|
17
|
+
# @author Jonathan Bradley Whited
|
18
|
+
# @since 0.2.8
|
19
|
+
###
|
20
|
+
class GitHubPkgTask < Rake::TaskLib
|
21
|
+
attr_accessor :deps
|
22
|
+
attr_accessor :description
|
23
|
+
attr_accessor :name
|
24
|
+
attr_accessor :username
|
25
|
+
|
26
|
+
def initialize(name=:github_pkg)
|
27
|
+
super()
|
28
|
+
|
29
|
+
@deps = [:build]
|
30
|
+
@description = "Publish this project's gem(s) to GitHub Packages"
|
31
|
+
@name = name
|
32
|
+
@username = nil
|
33
|
+
|
34
|
+
yield self if block_given?
|
35
|
+
|
36
|
+
@username = Util.find_github_username if @username.nil?
|
37
|
+
|
38
|
+
raise "#{self.class.name}.username is nil" if @username.nil?
|
39
|
+
|
40
|
+
define
|
41
|
+
end
|
42
|
+
|
43
|
+
def define
|
44
|
+
desc @description
|
45
|
+
task @name => Array(@deps) do |task,args|
|
46
|
+
sh_cmd = ['gem']
|
47
|
+
|
48
|
+
sh_cmd.push('push')
|
49
|
+
sh_cmd.push('--key','github')
|
50
|
+
sh_cmd.push('--host',"https://rubygems.pkg.github.com/#{username}")
|
51
|
+
sh_cmd.push(*Dir.glob(File.join('pkg','*.gem'))) # Is this okay for multiple gems?
|
52
|
+
|
53
|
+
sh(*sh_cmd)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|