rake-deveiate 0.17.4 → 0.19.2

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