rake-deveiate 0.17.1 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|