rake-deveiate 0.17.0 → 0.18.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: 15de23bdc94b63e1920bf2204867e308c43bb2dca45180adda2bda900bc4999c
4
- data.tar.gz: f2e0237372b484d97e74e4c37bc9f73bc31c5970d12e270f7854eadb20e56bfd
3
+ metadata.gz: ddcff2d4dd59a477b6105e7841c52d732553e6c21266a18d8ecc1a9fdb14c2b9
4
+ data.tar.gz: 4848059cbf391eb6700fbc83b9aaf7dec1aecde24f993261816569a06c6b1f0a
5
5
  SHA512:
6
- metadata.gz: f30928f9d73561ec1d761539a19c3841d7e197663757113a4b8e67222a5e8df2ec7a56cd6aad1670e05bde1c448e944efe61cdd137eff4715f370d5c707458ef
7
- data.tar.gz: 5ddc4f21e660442837a4029e538b840b0c58c9373e4eac0f833398b784835651845fd4b4a7db009e65e2fdd38134510204d55fbdd7ccc62d17ed30e23d875e5f
6
+ metadata.gz: f443f21c87d6a642a88fa87515f316a7813de4ad28f511023d2a4eeb83ce70f7c824a8b5ed0b7b7fbaf218172d8a5fc1cf97b843ef37b78a8e07276203224067
7
+ data.tar.gz: eb94a0d1f699704a6e2549bcb99036afbd9da183f737fc3351d78bc2944369a94cf2b3ca1165cdfe2be35deec65a2077bba5edce710ec97e417d4fb5869ba7e1
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.md CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  ---
4
4
 
5
+ ## v0.18.0 [2021-01-07] Michael Granger <ged@FaerieMUD.org>
6
+
7
+ Improvements:
8
+
9
+ - Add gem push key setting
10
+ - Add release branch check
11
+ - Fix a bunch of git functionality
12
+
13
+
14
+ ## v0.17.4 [2021-01-02] Michael Granger <ged@FaerieMUD.org>
15
+
16
+ Bugfixes:
17
+
18
+ - Ignore prerelease tags when checking history file.
19
+
20
+
21
+ ## v0.17.3 [2021-01-01] Michael Granger <ged@FaerieMUD.org>
22
+
23
+ Bugfixes:
24
+
25
+ - Fix maintainer task of extensions lib.
26
+
27
+
28
+ ## v0.17.2 [2020-12-29] Michael Granger <ged@FaerieMUD.org>
29
+
30
+ Bugfixes:
31
+
32
+ - Fix multi-directory extension directory support.
33
+
34
+
35
+ ## v0.17.1 [2020-12-28] Michael Granger <ged@FaerieMUD.org>
36
+
37
+ Bugfixes:
38
+
39
+ - Update hglib dependency
40
+
41
+
5
42
  ## v0.17.0 [2020-12-28] Michael Granger <ged@FaerieMUD.org>
6
43
 
7
44
  Improvements:
@@ -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.0'
38
+ VERSION = '0.18.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
@@ -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
 
@@ -42,7 +42,10 @@ module Rake::DevEiate::Releases
42
42
  gemserver = self.allowed_push_host || Rake::DevEiate::DEFAULT_GEMSERVER
43
43
 
44
44
  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 )
45
+ push_args = [ "push", self.gem_path.to_s ]
46
+ push_args << '-k' << self.gem_push_key if self.gem_push_key
47
+
48
+ sh( Gem.ruby, "-S", "gem", *push_args )
46
49
  end
47
50
  end
48
51
 
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.0
4
+ version: 0.18.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-01-07 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
@@ -97,20 +97,14 @@ dependencies:
97
97
  requirements:
98
98
  - - "~>"
99
99
  - !ruby/object:Gem::Version
100
- version: '0.10'
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: 0.10.1
100
+ version: '0.11'
104
101
  type: :runtime
105
102
  prerelease: false
106
103
  version_requirements: !ruby/object:Gem::Requirement
107
104
  requirements:
108
105
  - - "~>"
109
106
  - !ruby/object:Gem::Version
110
- version: '0.10'
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: 0.10.1
107
+ version: '0.11'
114
108
  - !ruby/object:Gem::Dependency
115
109
  name: tty-prompt
116
110
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file