rake-deveiate 0.17.2 → 0.19.1

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: 315be1a6a89185867bf0ef5c09de66fdc41bfe4df4230df1f0c47de922151671
4
- data.tar.gz: e54f8cc9ba45127139a2ad4bd9ad1280070decd786297a3044aaaff31f0c8b54
3
+ metadata.gz: 30f1b99b224177ae3b0852d218eb2c87b7db5b238d0ba798a0027d95ae86c07c
4
+ data.tar.gz: 3a00d194c0e884023097ece28b745a76d1b3813d841ef47c353342321b194f5d
5
5
  SHA512:
6
- metadata.gz: edb7daef99f49351429ce5c21e51382ac362e75cb0ccad613bcc3ae851824536e26d8c761895f4512d5e4c44f5c3ca62444c587b02cc019c0c2b121a77652add
7
- data.tar.gz: ca3b9dbc8eeb4a437ff6a6dff1b13b55a89363d754dd9d96873f54c6e206f57bcfddb22e8d4bc0c3342f4f43fdeb6088dd819aafc570d12991c5b2f593b533c3
6
+ metadata.gz: 67556073f0dfa06cc25f4722b4d282828bf745ce298b61308ef83c1a2d546311e72b4fd23205c91fc4360e4115d7a0073f8e038e083771f7a93092078cace1df
7
+ data.tar.gz: f18009897928c10448b8c131eed16deee4a3fde6492ac7992a6effff8f9a64c1cf1a5043e616007a7e54ed2d8e23c41d210e81076e53ff567aa39041ab27dfb4
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.1 [2021-05-08] Michael Granger <ged@FaerieMUD.org>
5
+
6
+ Bugfixes:
7
+
8
+ - Fix version and version_from.
9
+
10
+
11
+ ## v0.19.0 [2021-03-08] Michael Granger <ged@FaerieMUD.org>
12
+
13
+ Enhancements:
14
+
15
+ - Add support for SCP gem pushing.
16
+
17
+ Bugfixes:
18
+
19
+ - Push git repos with tags.
20
+
21
+
22
+ ## v0.18.0 [2021-01-07] Michael Granger <ged@FaerieMUD.org>
23
+
24
+ Improvements:
25
+
26
+ - Add gem push key setting
27
+ - Add release branch check
28
+ - Fix a bunch of git functionality
29
+
30
+
31
+ ## v0.17.4 [2021-01-02] Michael Granger <ged@FaerieMUD.org>
32
+
33
+ Bugfixes:
34
+
35
+ - Ignore prerelease tags when checking history file.
36
+
37
+
38
+ ## v0.17.3 [2021-01-01] Michael Granger <ged@FaerieMUD.org>
39
+
40
+ Bugfixes:
41
+
42
+ - Fix maintainer task of extensions lib.
43
+
4
44
 
5
45
  ## v0.17.2 [2020-12-29] 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.2'
38
+ VERSION = '0.19.1'
39
39
 
40
40
  # The server to release to by default
41
41
  DEFAULT_GEMSERVER = 'https://rubygems.org/'
@@ -211,11 +211,6 @@ class Rake::DevEiate < Rake::TaskLib
211
211
  # The summary description of the gem.
212
212
  attr_accessor :summary
213
213
 
214
- ##
215
- # The Gem::Version of the current library, extracted from the top-level
216
- # namespace.
217
- attr_reader :version
218
-
219
214
  ##
220
215
  # The README of the project as an RDoc::Markup::Document
221
216
  attr_accessor :readme
@@ -285,6 +280,10 @@ class Rake::DevEiate < Rake::TaskLib
285
280
  # The gemserver to push gems to
286
281
  attr_accessor :allowed_push_host
287
282
 
283
+ ##
284
+ # An alternative key to use for pushing gems (private gemserver)
285
+ attr_accessor :gem_push_key
286
+
288
287
  ##
289
288
  # The rsync-compatible target to publish documentation to.
290
289
  attr_accessor :publish_to
@@ -297,6 +296,10 @@ class Rake::DevEiate < Rake::TaskLib
297
296
  # The prefix to use for version tags
298
297
  attr_accessor :release_tag_prefix
299
298
 
299
+ ##
300
+ # The name of the branch to release from
301
+ attr_accessor :release_branch
302
+
300
303
 
301
304
  #
302
305
  # Task definition
@@ -445,7 +448,7 @@ class Rake::DevEiate < Rake::TaskLib
445
448
 
446
449
  ### Extract a summary from the README if possible. Returns +nil+ if not.
447
450
  def extract_summary
448
- return self.description.split( /(?<=\.)\s+/ ).first.gsub( /\n/, ' ' )
451
+ return self.description.split( /(?<=\.)\s+/ ).first&.gsub( /\n/, ' ' )
449
452
  end
450
453
 
451
454
 
@@ -474,7 +477,8 @@ class Rake::DevEiate < Rake::TaskLib
474
477
  content = readme.parts.grep_v( RDoc::Markup::BlankLine )
475
478
 
476
479
  heading, list = content.each_cons( 2 ).find do |heading, list|
477
- heading.is_a?( RDoc::Markup::Heading ) && heading.text =~ /^authors?/i &&
480
+ heading.is_a?( RDoc::Markup::Heading ) &&
481
+ heading.text =~ /^(author|maintainer)s?/i &&
478
482
  list.is_a?( RDoc::Markup::List )
479
483
  end
480
484
 
@@ -794,6 +798,10 @@ class Rake::DevEiate < Rake::TaskLib
794
798
  self.prompt.say( table.render(:unicode, padding: [0,1]) )
795
799
  end
796
800
  self.prompt.say( "\n" )
801
+
802
+ self.prompt.say( "Version from:" )
803
+ self.prompt.say( " " + self.version_from.to_s, color: :bold )
804
+ self.prompt.say( "\n" )
797
805
  end
798
806
 
799
807
 
@@ -80,7 +80,8 @@ module Rake::DevEiate::Extension
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
 
@@ -208,6 +208,10 @@ module Rake::DevEiate::Gemspec
208
208
  bt_uri = source_uri.dup
209
209
  bt_uri.path += '-/issues'
210
210
  metadata['bug_tracker_uri'] = bt_uri.to_s
211
+ when /\.github\.com/
212
+ bt_uri = source_uri.dup
213
+ bt_uri.path += '/issues'
214
+ metadata['bug_tracker_uri'] = bt_uri.to_s
211
215
  else
212
216
  self.trace "No idea what bug tracker URIs for %s look like!" % [ source_uri.host ]
213
217
  end
@@ -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 )
@@ -120,7 +132,7 @@ module Rake::DevEiate::Git
120
132
 
121
133
  task :debug => 'git:debug'
122
134
  rescue ::Exception => err
123
- $stderr.puts "%s while defining Git tasks: %s" % [ err.class.name, err.message ]
135
+ $stderr.puts "%s while defining Git tasks: %s" % [ err.class.name, err.full_message(order: :bottom) ]
124
136
  raise
125
137
  end
126
138
 
@@ -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.2
4
+ version: 0.19.1
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-29 00:00:00.000000000 Z
36
+ date: 2021-05-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