rake-deveiate 0.17.4 → 0.19.2

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: 75429da7cdad951ae72e7dcb020a5b7c96dbc0fe61e9c440061e426122081679
4
- data.tar.gz: ed1113af4145ba0eec87f020a7db97877e9c119c7a68a682dc574522fdae4e6d
3
+ metadata.gz: 3900c51a118d3efb1e13225b82f4dbac2ea8792f74d7b8fe32db4aa329011e67
4
+ data.tar.gz: fe24055a0e3a4d2f08afaf7be993c2754ecd1dd1ce991501e5dcc848ed7c1cfc
5
5
  SHA512:
6
- metadata.gz: b608212076021421b83d5fb0e13676da66729e8f82aa1885667a42a0a9d60650f1a9e4c24d6ef8438e4a31eb3328742657e32dd901b753609de7b17b2f1f6b5e
7
- data.tar.gz: 9e0e5373d7a3cb71601d0f86f3326fca517cc7d9a1bac94180aa451fa6a73d29e2b4cf704d8ecf4e838ed91658987d4dc82b54cfb403441135633dcf04f9631c
6
+ metadata.gz: d076e4bae89817d35de6a4799bc025f82a937931570c953f17022699e066d0ee202ac605b79a40784195de87e46bbe389c11334efa53942d4c68192064430c69
7
+ data.tar.gz: 2f176f8e665e5205a36eabaab21557ee6750da8b75b464990ec20db10c9a269748763c39e6f85b6cb1d8a09afcfda5d5fffa03d430c5db7056155953648c31a0
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  ---
4
4
 
5
+ ## v0.19.2 [2021-07-15] Michael Granger <ged@FaerieMUD.org>
6
+
7
+ Bugfixes:
8
+
9
+ - Defer gem path until version_from has a chance to be defined
10
+
11
+
12
+
13
+ ## v0.19.1 [2021-05-08] Michael Granger <ged@FaerieMUD.org>
14
+
15
+ Bugfixes:
16
+
17
+ - Fix version and version_from.
18
+
19
+
20
+ ## v0.19.0 [2021-03-08] Michael Granger <ged@FaerieMUD.org>
21
+
22
+ Enhancements:
23
+
24
+ - Add support for SCP gem pushing.
25
+
26
+ Bugfixes:
27
+
28
+ - Push git repos with tags.
29
+
30
+
31
+ ## v0.18.0 [2021-01-07] Michael Granger <ged@FaerieMUD.org>
32
+
33
+ Improvements:
34
+
35
+ - Add gem push key setting
36
+ - Add release branch check
37
+ - Fix a bunch of git functionality
38
+
39
+
5
40
  ## v0.17.4 [2021-01-02] Michael Granger <ged@FaerieMUD.org>
6
41
 
7
42
  Bugfixes:
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.4'
38
+ VERSION = '0.19.2'
39
39
 
40
40
  # The server to release to by default
41
41
  DEFAULT_GEMSERVER = 'https://rubygems.org/'
@@ -106,7 +106,7 @@ class Rake::DevEiate < Rake::TaskLib
106
106
  .svg
107
107
  ]
108
108
 
109
- # The path to the data directory for the Prestigio library.
109
+ # The path to the data directory
110
110
  DEVEIATE_DATADIR = if ENV['DEVEIATE_DATADIR']
111
111
  Pathname( ENV['DEVEIATE_DATADIR'] )
112
112
  elsif Gem.loaded_specs['rake-deveiate'] &&
@@ -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
 
@@ -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
@@ -13,6 +13,24 @@ using Rake::DevEiate::GitRefinements
13
13
 
14
14
 
15
15
  # Git version-control tasks
16
+ #
17
+ # :TODO:
18
+ # - Handle `ci` when on a branch that isn't yet published. Currently it does:
19
+ #
20
+ # Pull and update from 'git@github.com:RavnGroup/ravn.git'? Yes
21
+ # Fetching...
22
+ # Pulling...
23
+ # rake aborted!
24
+ # Git::GitExecuteError: git '--git-dir=/Users/ged/source/ravn/ravn/.git'
25
+ # '--work-tree=/Users/ged/source/ravn/ravn' '-c' 'color.ui=false' pull
26
+ # 'origin' '<branchname>' 2>&1:fatal: couldn't find remote ref
27
+ # <branchname>
28
+ # /Users/ged/.rvm/gems/ruby-2.7.3@ravn/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
29
+ # /Users/ged/.rvm/gems/ruby-2.7.3@ravn/bin/ruby_executable_hooks:22:in `eval'
30
+ # /Users/ged/.rvm/gems/ruby-2.7.3@ravn/bin/ruby_executable_hooks:22:in `<main>'
31
+ # Tasks: TOP => ci => checkin => precheckin => git:precheckin => git:pull
32
+ # (See full trace by running task with --trace)
33
+ #
16
34
  module Rake::DevEiate::Git
17
35
 
18
36
  # The name of the file to edit for the commit message
@@ -25,16 +43,26 @@ module Rake::DevEiate::Git
25
43
  STATUS_COLORS = {
26
44
  'M' => [:blue], # modified
27
45
  'A' => [:bold, :green], # added
28
- 'R' => [:bold, :black], # removed
46
+ 'D' => [:bold, :black], # deleted
29
47
  'C' => [:white], # clean
30
48
  '!' => [:bold, :white, :on_red], # missing
31
49
  '?' => [:yellow], # not tracked
32
50
  'I' => [:dim, :white], # ignored
33
51
  }
34
52
 
53
+ STATUS_DESCRIPTIONS = {
54
+ 'M' => 'modified',
55
+ 'D' => 'deleted',
56
+ '?' => 'untracked',
57
+ 'A' => 'new',
58
+ }
59
+
35
60
  # File indentation
36
61
  FILE_INDENT = " • "
37
62
 
63
+ # The name of the branch releases should be created from
64
+ DEFAULT_RELEASE_BRANCH = 'master'
65
+
38
66
 
39
67
  ### Define version-control tasks
40
68
  def define_tasks
@@ -42,6 +70,8 @@ module Rake::DevEiate::Git
42
70
 
43
71
  return unless self.is_git_working_copy?
44
72
 
73
+ self.release_branch = DEFAULT_RELEASE_BRANCH
74
+
45
75
  # :TODO: Should be refactored up with the same code in the hg lib.
46
76
  file COMMIT_MSG_FILE.to_s do |task|
47
77
  commit_log = Pathname( task.name )
@@ -120,7 +150,7 @@ module Rake::DevEiate::Git
120
150
 
121
151
  task :debug => 'git:debug'
122
152
  rescue ::Exception => err
123
- $stderr.puts "%s while defining Git tasks: %s" % [ err.class.name, err.message ]
153
+ $stderr.puts "%s while defining Git tasks: %s" % [ err.class.name, err.full_message(order: :bottom) ]
124
154
  raise
125
155
  end
126
156
 
@@ -133,9 +163,17 @@ module Rake::DevEiate::Git
133
163
 
134
164
  ### The body of the git:prerelease task.
135
165
  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 )
166
+ if self.release_branch
167
+ current_branch = self.git.cmd( 'branch --show-current' )
168
+ unless self.release_branch == current_branch
169
+ self.prompt.warn "Releasing from a non-release branch (%s)." % [ current_branch ]
170
+ fail unless self.prompt.yes?( "Release anyway?" )
171
+ end
172
+ end
173
+
174
+ status = self.git.status
175
+ unless status.untracked.empty? && status.changed.empty?
176
+ self.show_git_file_statuses( status )
139
177
 
140
178
  fail unless self.prompt.yes?( "Release anyway?" ) do |q|
141
179
  q.default( false )
@@ -145,7 +183,7 @@ module Rake::DevEiate::Git
145
183
  end
146
184
 
147
185
  pkg_version_tag = self.current_git_version_tag
148
- rev = self.git.identity.id
186
+ rev = self.git.revparse( 'HEAD' )
149
187
 
150
188
  # Look for a tag for the current release version, and if it exists abort
151
189
  if self.git.tags.find {|tag| tag.name == pkg_version_tag }
@@ -155,35 +193,17 @@ module Rake::DevEiate::Git
155
193
 
156
194
  # Tag the current rev
157
195
  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
196
+ self.git.cmd "tag -s -m 'Tagging for release %s' %s %s" %
197
+ [ pkg_version_tag, pkg_version_tag, rev ]
166
198
  end
167
199
 
168
200
 
169
201
  ### The body of the git:postrelease task.
170
202
  def do_git_postrelease( task, args )
171
- if self.git.status( 'checksum', unknown: true ).any?
203
+ if self.git.status.untracked.keys.any? {|path| path.start_with?('checksum/') }
172
204
  self.prompt.say "Adding release artifacts..."
173
205
  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
206
+ self.git.commit( "Adding release checksum." )
187
207
  end
188
208
 
189
209
  Rake::Task['git:push'].invoke
@@ -300,7 +320,7 @@ module Rake::DevEiate::Git
300
320
  end
301
321
  end
302
322
 
303
- git.push( 'origin', git.current_branch )
323
+ git.push( 'origin', git.current_branch, tags: true )
304
324
  self.prompt.ok "Done."
305
325
  else
306
326
  abort
@@ -371,7 +391,7 @@ module Rake::DevEiate::Git
371
391
  header_char = self.header_char_for( self.history_file )
372
392
  ext = self.history_file.extname
373
393
  log_entries = if previous_tag
374
- self.git.log( rev: "#{previous_tag}~-2::" )
394
+ self.git.log.between( previous_tag )
375
395
  else
376
396
  self.git.log
377
397
  end
@@ -455,11 +475,14 @@ module Rake::DevEiate::Git
455
475
  ### Given a +status_hash+ like that returned by Git::Repo.status, return a
456
476
  ### string description of the files and their status.
457
477
  def show_git_file_statuses( statuses )
458
- lines = statuses.map do |entry|
459
- status_color = STATUS_COLORS[ entry.status ]
478
+ entries = statuses.select( &:type ) + statuses.untracked.values
479
+
480
+ lines = entries.map do |entry|
481
+ status = entry.type || '?'
482
+ status_color = STATUS_COLORS[ status ]
460
483
  " %s: %s" % [
461
- self.pastel.white( entry.path.to_s ),
462
- self.pastel.decorate( entry.status_description, *status_color ),
484
+ self.pastel.bold.white( entry.path.to_s ),
485
+ self.pastel.decorate( STATUS_DESCRIPTIONS[status], *status_color ),
463
486
  ]
464
487
  end
465
488
 
@@ -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
 
@@ -14,10 +14,8 @@ module Rake::DevEiate::Packaging
14
14
  def setup( name, **options )
15
15
  super if defined?( super )
16
16
 
17
- gem_basename = "%s-%s" % [ name, self.version ]
18
-
19
- @gem_filename = gem_basename + '.gem'
20
- @gem_path = Rake::DevEiate::PKG_DIR + @gem_filename
17
+ @gem_filename = nil
18
+ @gem_path = nil
21
19
  end
22
20
 
23
21
  ##
@@ -31,6 +29,10 @@ module Rake::DevEiate::Packaging
31
29
 
32
30
  ### Set up packaging tasks.
33
31
  def define_tasks
32
+ gem_basename = "%s-%s" % [ name, self.version ]
33
+ @gem_filename = gem_basename + '.gem'
34
+ @gem_path = Rake::DevEiate::PKG_DIR + @gem_filename
35
+
34
36
  super if defined?( super )
35
37
 
36
38
  task :release_gem => :gem
@@ -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.4
4
+ version: 0.19.2
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: 2021-01-02 00:00:00.000000000 Z
36
+ date: 2021-07-15 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
@@ -55,14 +55,14 @@ dependencies:
55
55
  requirements:
56
56
  - - "~>"
57
57
  - !ruby/object:Gem::Version
58
- version: '6.2'
58
+ version: '6.3'
59
59
  type: :runtime
60
60
  prerelease: false
61
61
  version_requirements: !ruby/object:Gem::Requirement
62
62
  requirements:
63
63
  - - "~>"
64
64
  - !ruby/object:Gem::Version
65
- version: '6.2'
65
+ version: '6.3'
66
66
  - !ruby/object:Gem::Dependency
67
67
  name: rspec
68
68
  requirement: !ruby/object:Gem::Requirement
@@ -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
@@ -243,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
285
  - !ruby/object:Gem::Version
244
286
  version: '0'
245
287
  requirements: []
246
- rubygems_version: 3.2.3
288
+ rubygems_version: 3.2.15
247
289
  signing_key:
248
290
  specification_version: 4
249
291
  summary: This is a collection of Rake tasks I use for development.
metadata.gz.sig CHANGED
Binary file