rake-deveiate 0.17.1 → 0.19.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.md +40 -0
- data/lib/rake/deveiate.rb +9 -1
- data/lib/rake/deveiate/extensions.rb +3 -2
- data/lib/rake/deveiate/git.rb +39 -34
- data/lib/rake/deveiate/hg.rb +8 -1
- data/lib/rake/deveiate/releases.rb +30 -1
- metadata +44 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4faaccb9af266c1547396582b6a916b9351b27526ec8c365f21d76293330f485
|
4
|
+
data.tar.gz: d9a848b6992c346fbed3a468455a8c5c72d919cc19a151ebdb82699049840605
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f19f86ccd3d44b0e3557cd6b4ad812a3a36bfb685bfec0303f37f2d23eb59df0bda239a0922abdc0826684ebdf3672c59e1b1b26553ceecb02760693731e3e0
|
7
|
+
data.tar.gz: 8d6fa6b5ef66a245fb6fe8746ad9e389d67f5e3b576f3d19f32193abd4b804e262a32b7c736682448153e64d4fccae5e74ab0f88b60e243686bbfe7131092fc5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.md
CHANGED
@@ -1,6 +1,46 @@
|
|
1
1
|
# Release History for rake-deveiate
|
2
2
|
|
3
3
|
---
|
4
|
+
## v0.19.0 [2021-03-08] Michael Granger <ged@FaerieMUD.org>
|
5
|
+
|
6
|
+
Enhancements:
|
7
|
+
|
8
|
+
- Add support for SCP gem pushing.
|
9
|
+
|
10
|
+
Bugfixes:
|
11
|
+
|
12
|
+
- Push git repos with tags.
|
13
|
+
|
14
|
+
|
15
|
+
## v0.18.0 [2021-01-07] Michael Granger <ged@FaerieMUD.org>
|
16
|
+
|
17
|
+
Improvements:
|
18
|
+
|
19
|
+
- Add gem push key setting
|
20
|
+
- Add release branch check
|
21
|
+
- Fix a bunch of git functionality
|
22
|
+
|
23
|
+
|
24
|
+
## v0.17.4 [2021-01-02] Michael Granger <ged@FaerieMUD.org>
|
25
|
+
|
26
|
+
Bugfixes:
|
27
|
+
|
28
|
+
- Ignore prerelease tags when checking history file.
|
29
|
+
|
30
|
+
|
31
|
+
## v0.17.3 [2021-01-01] Michael Granger <ged@FaerieMUD.org>
|
32
|
+
|
33
|
+
Bugfixes:
|
34
|
+
|
35
|
+
- Fix maintainer task of extensions lib.
|
36
|
+
|
37
|
+
|
38
|
+
## v0.17.2 [2020-12-29] Michael Granger <ged@FaerieMUD.org>
|
39
|
+
|
40
|
+
Bugfixes:
|
41
|
+
|
42
|
+
- Fix multi-directory extension directory support.
|
43
|
+
|
4
44
|
|
5
45
|
## v0.17.1 [2020-12-28] Michael Granger <ged@FaerieMUD.org>
|
6
46
|
|
data/lib/rake/deveiate.rb
CHANGED
@@ -35,7 +35,7 @@ class Rake::DevEiate < Rake::TaskLib
|
|
35
35
|
VERSION_PATTERN = /VERSION\s*=\s*(?<quote>['"])(?<version>\d+(\.\d+){2}.*)\k<quote>/
|
36
36
|
|
37
37
|
# The version of this library
|
38
|
-
VERSION = '0.
|
38
|
+
VERSION = '0.19.0'
|
39
39
|
|
40
40
|
# The server to release to by default
|
41
41
|
DEFAULT_GEMSERVER = 'https://rubygems.org/'
|
@@ -285,6 +285,10 @@ class Rake::DevEiate < Rake::TaskLib
|
|
285
285
|
# The gemserver to push gems to
|
286
286
|
attr_accessor :allowed_push_host
|
287
287
|
|
288
|
+
##
|
289
|
+
# An alternative key to use for pushing gems (private gemserver)
|
290
|
+
attr_accessor :gem_push_key
|
291
|
+
|
288
292
|
##
|
289
293
|
# The rsync-compatible target to publish documentation to.
|
290
294
|
attr_accessor :publish_to
|
@@ -297,6 +301,10 @@ class Rake::DevEiate < Rake::TaskLib
|
|
297
301
|
# The prefix to use for version tags
|
298
302
|
attr_accessor :release_tag_prefix
|
299
303
|
|
304
|
+
##
|
305
|
+
# The name of the branch to release from
|
306
|
+
attr_accessor :release_branch
|
307
|
+
|
300
308
|
|
301
309
|
#
|
302
310
|
# Task definition
|
@@ -74,13 +74,14 @@ module Rake::DevEiate::Extension
|
|
74
74
|
|
75
75
|
require 'rake/extensiontask'
|
76
76
|
self.extensions.each do |extconf|
|
77
|
-
Rake::ExtensionTask.new( extconf.pathmap('%{ext
|
77
|
+
Rake::ExtensionTask.new( extconf.pathmap('%{ext/,}d') )
|
78
78
|
end
|
79
79
|
|
80
80
|
task :spec => :compile
|
81
81
|
|
82
82
|
task :maint do
|
83
|
-
ENV['V'] = 1
|
83
|
+
ENV['V'] = '1'
|
84
|
+
ENV['MAINTAINER_MODE'] = 'yes'
|
84
85
|
end
|
85
86
|
end
|
86
87
|
|
data/lib/rake/deveiate/git.rb
CHANGED
@@ -25,16 +25,26 @@ module Rake::DevEiate::Git
|
|
25
25
|
STATUS_COLORS = {
|
26
26
|
'M' => [:blue], # modified
|
27
27
|
'A' => [:bold, :green], # added
|
28
|
-
'
|
28
|
+
'D' => [:bold, :black], # deleted
|
29
29
|
'C' => [:white], # clean
|
30
30
|
'!' => [:bold, :white, :on_red], # missing
|
31
31
|
'?' => [:yellow], # not tracked
|
32
32
|
'I' => [:dim, :white], # ignored
|
33
33
|
}
|
34
34
|
|
35
|
+
STATUS_DESCRIPTIONS = {
|
36
|
+
'M' => 'modified',
|
37
|
+
'D' => 'deleted',
|
38
|
+
'?' => 'untracked',
|
39
|
+
'A' => 'new',
|
40
|
+
}
|
41
|
+
|
35
42
|
# File indentation
|
36
43
|
FILE_INDENT = " • "
|
37
44
|
|
45
|
+
# The name of the branch releases should be created from
|
46
|
+
DEFAULT_RELEASE_BRANCH = 'master'
|
47
|
+
|
38
48
|
|
39
49
|
### Define version-control tasks
|
40
50
|
def define_tasks
|
@@ -42,6 +52,8 @@ module Rake::DevEiate::Git
|
|
42
52
|
|
43
53
|
return unless self.is_git_working_copy?
|
44
54
|
|
55
|
+
self.release_branch = DEFAULT_RELEASE_BRANCH
|
56
|
+
|
45
57
|
# :TODO: Should be refactored up with the same code in the hg lib.
|
46
58
|
file COMMIT_MSG_FILE.to_s do |task|
|
47
59
|
commit_log = Pathname( task.name )
|
@@ -133,9 +145,17 @@ module Rake::DevEiate::Git
|
|
133
145
|
|
134
146
|
### The body of the git:prerelease task.
|
135
147
|
def do_git_prerelease( task, args )
|
136
|
-
|
137
|
-
|
138
|
-
self.
|
148
|
+
if self.release_branch
|
149
|
+
current_branch = self.git.cmd( 'branch --show-current' )
|
150
|
+
unless self.release_branch == current_branch
|
151
|
+
self.prompt.warn "Releasing from a non-release branch (%s)." % [ current_branch ]
|
152
|
+
fail unless self.prompt.yes?( "Release anyway?" )
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
status = self.git.status
|
157
|
+
unless status.untracked.empty? && status.changed.empty?
|
158
|
+
self.show_git_file_statuses( status )
|
139
159
|
|
140
160
|
fail unless self.prompt.yes?( "Release anyway?" ) do |q|
|
141
161
|
q.default( false )
|
@@ -145,7 +165,7 @@ module Rake::DevEiate::Git
|
|
145
165
|
end
|
146
166
|
|
147
167
|
pkg_version_tag = self.current_git_version_tag
|
148
|
-
rev = self.git.
|
168
|
+
rev = self.git.revparse( 'HEAD' )
|
149
169
|
|
150
170
|
# Look for a tag for the current release version, and if it exists abort
|
151
171
|
if self.git.tags.find {|tag| tag.name == pkg_version_tag }
|
@@ -155,35 +175,17 @@ module Rake::DevEiate::Git
|
|
155
175
|
|
156
176
|
# Tag the current rev
|
157
177
|
self.prompt.ok "Tagging rev %s as %s" % [ rev, pkg_version_tag ]
|
158
|
-
self.git.tag
|
159
|
-
|
160
|
-
# Sign the tag
|
161
|
-
if self.git.extension_enabled?( :gpg )
|
162
|
-
if self.prompt.yes?( "Sign %s?" % [pkg_version_tag] )
|
163
|
-
self.git.sign( pkg_version_tag, message: "Signing %s" % [pkg_version_tag] )
|
164
|
-
end
|
165
|
-
end
|
178
|
+
self.git.cmd "tag -s -m 'Tagging for release %s' %s %s" %
|
179
|
+
[ pkg_version_tag, pkg_version_tag, rev ]
|
166
180
|
end
|
167
181
|
|
168
182
|
|
169
183
|
### The body of the git:postrelease task.
|
170
184
|
def do_git_postrelease( task, args )
|
171
|
-
if self.git.status(
|
185
|
+
if self.git.status.untracked.keys.any? {|path| path.start_with?('checksum/') }
|
172
186
|
self.prompt.say "Adding release artifacts..."
|
173
187
|
self.git.add( 'checksum' )
|
174
|
-
self.git.commit(
|
175
|
-
end
|
176
|
-
|
177
|
-
if self.prompt.yes?( "Move released changesets to public phase?" )
|
178
|
-
self.prompt.say "Publicising changesets..."
|
179
|
-
self.git.phase( public: true )
|
180
|
-
end
|
181
|
-
|
182
|
-
if self.git.extension_enabled?( :topic )
|
183
|
-
current_topic = self.git.topic
|
184
|
-
if current_topic && self.prompt.yes?( "Clear the current topic (%s)?" %[current_topic] )
|
185
|
-
self.git.topic( clear: true )
|
186
|
-
end
|
188
|
+
self.git.commit( "Adding release checksum." )
|
187
189
|
end
|
188
190
|
|
189
191
|
Rake::Task['git:push'].invoke
|
@@ -300,7 +302,7 @@ module Rake::DevEiate::Git
|
|
300
302
|
end
|
301
303
|
end
|
302
304
|
|
303
|
-
git.push( 'origin', git.current_branch )
|
305
|
+
git.push( 'origin', git.current_branch, tags: true )
|
304
306
|
self.prompt.ok "Done."
|
305
307
|
else
|
306
308
|
abort
|
@@ -371,7 +373,7 @@ module Rake::DevEiate::Git
|
|
371
373
|
header_char = self.header_char_for( self.history_file )
|
372
374
|
ext = self.history_file.extname
|
373
375
|
log_entries = if previous_tag
|
374
|
-
self.git.log(
|
376
|
+
self.git.log.between( previous_tag )
|
375
377
|
else
|
376
378
|
self.git.log
|
377
379
|
end
|
@@ -455,11 +457,14 @@ module Rake::DevEiate::Git
|
|
455
457
|
### Given a +status_hash+ like that returned by Git::Repo.status, return a
|
456
458
|
### string description of the files and their status.
|
457
459
|
def show_git_file_statuses( statuses )
|
458
|
-
|
459
|
-
|
460
|
+
entries = statuses.select( &:type ) + statuses.untracked.values
|
461
|
+
|
462
|
+
lines = entries.map do |entry|
|
463
|
+
status = entry.type || '?'
|
464
|
+
status_color = STATUS_COLORS[ status ]
|
460
465
|
" %s: %s" % [
|
461
|
-
self.pastel.white( entry.path.to_s ),
|
462
|
-
self.pastel.decorate(
|
466
|
+
self.pastel.bold.white( entry.path.to_s ),
|
467
|
+
self.pastel.decorate( STATUS_DESCRIPTIONS[status], *status_color ),
|
463
468
|
]
|
464
469
|
end
|
465
470
|
|
@@ -483,7 +488,7 @@ module Rake::DevEiate::Git
|
|
483
488
|
### Fetch the list of names of tags that match the versioning scheme of this
|
484
489
|
### project.
|
485
490
|
def get_git_version_tag_names
|
486
|
-
tag_pattern = self.release_tag_pattern
|
491
|
+
tag_pattern = /#{self.release_tag_pattern}$/
|
487
492
|
return self.git.tags.map( &:name ).grep( tag_pattern )
|
488
493
|
end
|
489
494
|
|
data/lib/rake/deveiate/hg.rb
CHANGED
@@ -32,6 +32,9 @@ module Rake::DevEiate::Hg
|
|
32
32
|
# File indentation
|
33
33
|
FILE_INDENT = " • "
|
34
34
|
|
35
|
+
# The name of the branch releases should be created from
|
36
|
+
DEFAULT_RELEASE_BRANCH = 'default'
|
37
|
+
|
35
38
|
|
36
39
|
### Define version-control tasks
|
37
40
|
def define_tasks
|
@@ -39,6 +42,10 @@ module Rake::DevEiate::Hg
|
|
39
42
|
|
40
43
|
return unless self.is_hg_working_copy?
|
41
44
|
|
45
|
+
# :TODO: Actually check for this? Doesn't make much as much sense given my
|
46
|
+
# Mercurial workflow.
|
47
|
+
self.release_branch = DEFAULT_RELEASE_BRANCH
|
48
|
+
|
42
49
|
file COMMIT_MSG_FILE.to_s do |task|
|
43
50
|
commit_log = Pathname( task.name )
|
44
51
|
|
@@ -470,7 +477,7 @@ module Rake::DevEiate::Hg
|
|
470
477
|
### Fetch the list of names of tags that match the versioning scheme of this
|
471
478
|
### project.
|
472
479
|
def get_hg_version_tag_names
|
473
|
-
tag_pattern = self.release_tag_pattern
|
480
|
+
tag_pattern = /#{self.release_tag_pattern}$/
|
474
481
|
return self.hg.tags.map( &:name ).grep( tag_pattern )
|
475
482
|
end
|
476
483
|
|
@@ -41,8 +41,37 @@ module Rake::DevEiate::Releases
|
|
41
41
|
def do_release_gem( task, args )
|
42
42
|
gemserver = self.allowed_push_host || Rake::DevEiate::DEFAULT_GEMSERVER
|
43
43
|
|
44
|
+
case gemserver
|
45
|
+
when /\Ascp:/
|
46
|
+
self.do_scp_push( gemserver )
|
47
|
+
else
|
48
|
+
self.do_gem_push( gemserver )
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
### Push a new gem via a gemserver.
|
54
|
+
def do_gem_push( gemserver )
|
44
55
|
if self.prompt.yes?( "Push a new gem to #{gemserver}?" ) {|q| q.default(false) }
|
45
|
-
|
56
|
+
push_args = [ "push", self.gem_path.to_s ]
|
57
|
+
push_args << '-k' << self.gem_push_key if self.gem_push_key
|
58
|
+
|
59
|
+
sh( Gem.ruby, "-S", "gem", *push_args )
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
### Push a new gem via scp.
|
65
|
+
def do_scp_push( gemserver )
|
66
|
+
gemserver_url = URI( gemserver )
|
67
|
+
|
68
|
+
if self.prompt.yes?( "Push a new gem with scp to #{gemserver_url.host}?" ) {|q| q.default(false) }
|
69
|
+
require 'net/scp'
|
70
|
+
|
71
|
+
# Strip off one leading '/' if one is present
|
72
|
+
remote_path = gemserver_url.path[ %r{/(.*)}, 1 ]
|
73
|
+
|
74
|
+
Net::SCP.upload!( gemserver_url.host, gemserver_url.user, self.gem_path.to_s, remote_path )
|
46
75
|
end
|
47
76
|
end
|
48
77
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake-deveiate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -33,7 +33,7 @@ cert_chain:
|
|
33
33
|
MCh97sQ/Z/MOusb5+QddBmB+k8EicXyGNl4b5L4XpL7fIQu+Y96TB3JEJlShxFD9
|
34
34
|
k9FjI4d9EP54gS/4
|
35
35
|
-----END CERTIFICATE-----
|
36
|
-
date:
|
36
|
+
date: 2021-03-08 00:00:00.000000000 Z
|
37
37
|
dependencies:
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rake
|
@@ -175,6 +175,48 @@ dependencies:
|
|
175
175
|
- - "~>"
|
176
176
|
- !ruby/object:Gem::Version
|
177
177
|
version: '1.7'
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: net-scp
|
180
|
+
requirement: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - "~>"
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '3.0'
|
185
|
+
type: :runtime
|
186
|
+
prerelease: false
|
187
|
+
version_requirements: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - "~>"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '3.0'
|
192
|
+
- !ruby/object:Gem::Dependency
|
193
|
+
name: ed25519
|
194
|
+
requirement: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - "~>"
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '1.2'
|
199
|
+
type: :runtime
|
200
|
+
prerelease: false
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - "~>"
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '1.2'
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: bcrypt_pbkdf
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - "~>"
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: '1.1'
|
213
|
+
type: :runtime
|
214
|
+
prerelease: false
|
215
|
+
version_requirements: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - "~>"
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '1.1'
|
178
220
|
- !ruby/object:Gem::Dependency
|
179
221
|
name: rdoc-generator-fivefish
|
180
222
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|