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 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