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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de2405bf5083d92c729274fd014c28dde7cee3ceca67e503f6a3d229630af493
4
- data.tar.gz: ae2704b280ccb8556146e404b70199dbdee7c892fbfd2903f83d80fa085fea9f
3
+ metadata.gz: 4faaccb9af266c1547396582b6a916b9351b27526ec8c365f21d76293330f485
4
+ data.tar.gz: d9a848b6992c346fbed3a468455a8c5c72d919cc19a151ebdb82699049840605
5
5
  SHA512:
6
- metadata.gz: f617162a43c43b1a7206ab225c7481768f7a11d1397fa4bcd5ceb90f52415c4cc9aa7b5d3a7f00b625e4118a0c4808b258222e8e11fad58e210a76608d4cdfb3
7
- data.tar.gz: 21c03296ab75a4fc0b18946ac34d38cb267f37079e0c4ad2cfb7e1048e4f0b5844f6d6fec01d6690d527b07c896ce5bdc1d7ecab3981d327ebadc565bd2f9b72
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.17.1'
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,}d') )
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
 
@@ -25,16 +25,26 @@ module Rake::DevEiate::Git
25
25
  STATUS_COLORS = {
26
26
  'M' => [:blue], # modified
27
27
  'A' => [:bold, :green], # added
28
- 'R' => [:bold, :black], # removed
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
- uncommitted_files = self.git.status( n: true )
137
- unless uncommitted_files.empty?
138
- self.show_git_file_statuses( uncommitted_files )
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.identity.id
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( pkg_version_tag, rev: rev )
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( 'checksum', unknown: true ).any?
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( 'checksum', message: "Adding release checksum." )
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( rev: "#{previous_tag}~-2::" )
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
- lines = statuses.map do |entry|
459
- status_color = STATUS_COLORS[ entry.status ]
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( entry.status_description, *status_color ),
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
 
@@ -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
- sh( Gem.ruby, "-S", "gem", "push", self.gem_path.to_s )
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.17.1
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: 2020-12-28 00:00:00.000000000 Z
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