rake-deveiate 0.14.0 → 0.16.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: 262bfcd674b100a317ddcbb6db31e9df70e6706d75d3540ea2e327486b76d1a8
4
- data.tar.gz: 75b1c71aca9db0e723e447637b04437ab1fdfcc5998816dacd192f3d7b6eb1c0
3
+ metadata.gz: bbd17de1c4ec17eea0db8875fc492b5d0805a0d82aa7de27b23e2b01b2c7a4ff
4
+ data.tar.gz: f0c875ad3e5210dbef77df28ed6250e9c48cd44a0a9919e0155b94073244a9d8
5
5
  SHA512:
6
- metadata.gz: 548164bd6ae96fd38cbf7bdd22a4b7ec743c3f46abc56a34607e61657376d0f6a97882abe0e3c94c18209705f78d38dd5ba31e9d88e534bbf7f92d89d3d2f61a
7
- data.tar.gz: c29298739629edaec75521b962e802fa8d2dc91342430d02606a13ffa25130a2409b585bdc493b56741bae267514080a0cad14e1bbe7be2b5fbc9e8d29add551
6
+ metadata.gz: 796a4604fbd50022c1cb5524de7e04615b4efcd9b15d9527cd0373b02efd77539e2b21aae7ae14edf0ed861c6b5c1d130f363359cdff99b9e7d37bfa4beb1671
7
+ data.tar.gz: b6c7300e3a40aaa5fa8d890621f88d59b1a1f51ae7257eb803dd5e6573d3d56d626cbb87f5ee1d0818b667c4d16be7434752eaf8118a0bbb33c298b65717f7da
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.md CHANGED
@@ -1,6 +1,40 @@
1
1
  # Release History for rake-deveiate
2
2
 
3
3
  ---
4
+ ## v0.16.1 [2020-11-23] Michael Granger <ged@FaerieMUD.org>
5
+
6
+ Bugfixes:
7
+
8
+ - Include missing `git` tasklib.
9
+
10
+
11
+ ## v0.16.0 [2020-11-23] Michael Granger <ged@FaerieMUD.org>
12
+
13
+ Improvements:
14
+
15
+ - Add support for projects managed with Git.
16
+
17
+
18
+ ## v0.15.1 [2020-10-29] Michael Granger <ged@FaerieMUD.org>
19
+
20
+ Bugfixes:
21
+
22
+ - Add the extension tasks file to the gem.
23
+
24
+
25
+ ## v0.15.0 [2020-10-29] Michael Granger <ged@FaerieMUD.org>
26
+
27
+ Improvements:
28
+
29
+ - Added support for extensions
30
+
31
+
32
+ ## v0.14.1 [2020-10-01] Michael Granger <ged@FaerieMUD.org>
33
+
34
+ Improvements:
35
+
36
+ - Support changes in latest tty-editor.
37
+
4
38
 
5
39
  ## v0.14.0 [2020-04-02] Michael Granger <ged@FaerieMUD.org>
6
40
 
data/README.md CHANGED
@@ -3,6 +3,9 @@
3
3
  home
4
4
  : https://hg.sr.ht/~ged/rake-deveiate
5
5
 
6
+ code
7
+ : https://hg.sr.ht/~ged/rake-deveiate/browse
8
+
6
9
  github
7
10
  : https://github.com/ged/rake-deveiate
8
11
 
@@ -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.14.0'
38
+ VERSION = '0.16.1'
39
39
 
40
40
  # The server to release to by default
41
41
  DEFAULT_GEMSERVER = 'https://rubygems.org/'
@@ -46,6 +46,9 @@ class Rake::DevEiate < Rake::TaskLib
46
46
  # The version to use if one cannot be read from the source
47
47
  DEFAULT_VERSION = '0.1.0'
48
48
 
49
+ # The prefix to use for release version tags by default
50
+ DEFAULT_RELEASE_TAG_PREFIX = 'v'
51
+
49
52
  # Words in the package/gem name that should not be included in deriving paths,
50
53
  # file names, etc.
51
54
  PACKAGE_IGNORE_WORDS = %w[ruby]
@@ -158,6 +161,7 @@ class Rake::DevEiate < Rake::TaskLib
158
161
  @licenses = [ DEFAULT_LICENSE ]
159
162
  @version_from = env( :version_from, as_pathname: true ) ||
160
163
  LIB_DIR + "%s.rb" % [ version_file_from(name) ]
164
+ @release_tag_prefix = DEFAULT_RELEASE_TAG_PREFIX
161
165
 
162
166
  @docs_dir = DOCS_DIR.dup
163
167
 
@@ -167,6 +171,7 @@ class Rake::DevEiate < Rake::TaskLib
167
171
  @description = self.extract_description || DEFAULT_DESCRIPTION
168
172
  @summary = nil
169
173
  @dependencies = self.find_dependencies
174
+ @extensions = Rake::FileList.new
170
175
 
171
176
  @version = nil
172
177
  @publish_to = nil
@@ -272,6 +277,10 @@ class Rake::DevEiate < Rake::TaskLib
272
277
  # The Gem::RequestSet that describes the gem's dependencies
273
278
  attr_accessor :dependencies
274
279
 
280
+ ##
281
+ # A FileMap of the paths to this project's extension config scripts.
282
+ attr_reader :extensions
283
+
275
284
  ##
276
285
  # The gemserver to push gems to
277
286
  attr_accessor :allowed_push_host
@@ -284,6 +293,10 @@ class Rake::DevEiate < Rake::TaskLib
284
293
  # The version of Ruby required by this gem, in Gem version format.
285
294
  attr_accessor :required_ruby_version
286
295
 
296
+ ##
297
+ # The prefix to use for version tags
298
+ attr_accessor :release_tag_prefix
299
+
287
300
 
288
301
  #
289
302
  # Task definition
@@ -367,6 +380,11 @@ class Rake::DevEiate < Rake::TaskLib
367
380
  self.install_dependencies
368
381
  end
369
382
 
383
+ desc "Turn on maintainer mode: build with extra warnings and debugging"
384
+ task :maint do
385
+ ENV['MAINTAINER_MODE'] = 'yes'
386
+ end
387
+
370
388
  end
371
389
 
372
390
 
@@ -527,6 +545,24 @@ class Rake::DevEiate < Rake::TaskLib
527
545
  end
528
546
 
529
547
 
548
+ ### Return a Regexp that matches the project's convention for versions.
549
+ def release_tag_pattern
550
+ prefix = self.release_tag_prefix
551
+ return /#{prefix}\d+(\.\d+)+/
552
+ end
553
+
554
+
555
+ ### Fetch the list of the versions of releases that have entries in the history
556
+ ### file.
557
+ def get_history_file_versions
558
+ tag_pattern = self.release_tag_pattern
559
+
560
+ return IO.readlines( self.history_file ).grep( tag_pattern ).map do |line|
561
+ line[ /^(?:h\d\.|#+|=+)\s+(#{tag_pattern})\s+/, 1 ]
562
+ end.compact
563
+ end
564
+
565
+
530
566
  ### Returns +true+ if the manifest file exists and is readable.
531
567
  def has_manifest?
532
568
  return self.manifest_file.readable?
@@ -660,6 +696,7 @@ class Rake::DevEiate < Rake::TaskLib
660
696
 
661
697
  ### Install the gems listed in the gem dependencies file.
662
698
  def install_dependencies
699
+ self.prompt.say "Installing dependencies"
663
700
  ruby '-S', 'gem', 'i', '-Ng'
664
701
  end
665
702
 
@@ -739,9 +776,9 @@ class Rake::DevEiate < Rake::TaskLib
739
776
  self.prompt.say( "Summary: " )
740
777
  self.prompt.say( summary, color: :bold )
741
778
  self.prompt.say( "Description:" )
742
- self.prompt.say( description, color: :bold )
779
+ self.prompt.say( " " + description, color: :bold )
743
780
  self.prompt.say( "Homepage:" )
744
- self.prompt.say( homepage, color: :bold )
781
+ self.prompt.say( " " + homepage, color: :bold )
745
782
  self.prompt.say( "\n" )
746
783
  end
747
784
 
@@ -819,4 +856,29 @@ class Rake::DevEiate < Rake::TaskLib
819
856
  join( '/' )
820
857
  end
821
858
 
859
+
860
+ ### Delete the files in the given +filelist+ after confirming with the user.
861
+ def delete_extra_files( *filelist )
862
+ description = humanize_file_list( filelist, ' ' )
863
+ self.prompt.say "Files to delete:"
864
+ self.prompt.say( description )
865
+
866
+ if self.prompt.yes?( "Really delete them?" ) {|q| q.default(false) }
867
+ filelist.each do |f|
868
+ rm_rf( f, verbose: true )
869
+ end
870
+ end
871
+ end
872
+
873
+
874
+ ### Returns a human-scannable file list by joining and truncating the list if it's too long.
875
+ def humanize_file_list( list, indent=FILE_INDENT )
876
+ listtext = list[0..5].join( "\n#{indent}" )
877
+ if list.length > 5
878
+ listtext << " (and %d other/s)" % [ list.length - 5 ]
879
+ end
880
+
881
+ return listtext
882
+ end
883
+
822
884
  end # class Rake::DevEiate
@@ -0,0 +1,117 @@
1
+ # -*- ruby -*-
2
+ # frozen_string_literal: true
3
+
4
+ require 'pathname'
5
+ require 'rake'
6
+
7
+ require 'rake/deveiate' unless defined?( Rake::DevEiate )
8
+
9
+
10
+ # Extension compilation and maintenance tasks
11
+ module Rake::DevEiate::Extension
12
+ extend Rake::DSL
13
+
14
+ # The glob pattern to use when looking for extension config scripts (relative to
15
+ # EXT_DIR).
16
+ EXTENSION_GLOB_PATTERN = '**/extconf.rb'
17
+
18
+
19
+ ### Set some defaults when the task lib is set up.
20
+ def setup( _name, **options )
21
+ super if defined?( super )
22
+
23
+ self.extensions.include( Rake::DevEiate::EXT_DIR + EXTENSION_GLOB_PATTERN )
24
+ @disable_rake_compiler = false
25
+ end
26
+
27
+
28
+ ##
29
+ # Set to +true+ to indicate that this project provides its own
30
+ # extension-management tasks.
31
+ attr_accessor :disable_rake_compiler
32
+
33
+
34
+ ### Predicate for the #disable_rake_compiler attribute.
35
+ def disable_rake_compiler?
36
+ return self.disable_rake_compiler ? true :false
37
+ end
38
+
39
+
40
+ ### Returns +true+ if there appear to be extensions as part of the current
41
+ ### project.
42
+ def extensions_present?
43
+ return !self.extensions.empty?
44
+ end
45
+
46
+
47
+ ### Define extension tasks
48
+ def define_tasks
49
+ super if defined?( super )
50
+
51
+ if self.extensions_present?
52
+ if self.has_rakecompiler_dependency?
53
+ self.define_extension_tasks
54
+ elsif !self.disable_rake_compiler?
55
+ warn <<~END_WARNING
56
+
57
+ You appear to have one or more extensions, but rake-compiler
58
+ is not a dependency. You should either add it to gem.deps.rb
59
+ or set `disable_rake_compiler` on the project to disable this
60
+ warning.
61
+
62
+ END_WARNING
63
+ end
64
+ end
65
+
66
+ task( :extensions_debug, &method(:do_extensions_debug) )
67
+ task :debug => :extensions_debug
68
+ end
69
+
70
+
71
+ ### Set up the tasks to build extensions.
72
+ def define_extension_tasks
73
+ ENV['RUBY_CC_VERSION'] ||= RUBY_VERSION[ /(\d+\.\d+)/ ]
74
+
75
+ require 'rake/extensiontask'
76
+ self.extensions.each do |extconf|
77
+ Rake::ExtensionTask.new( extconf.pathmap('%-1d') )
78
+ end
79
+
80
+ task :spec => :compile
81
+
82
+ task :maint do
83
+ ENV['V'] = 1
84
+ end
85
+ end
86
+
87
+
88
+ ### Returns +true+ if the projects dependencies include `rake-compiler`.
89
+ def has_rakecompiler_dependency?
90
+ return self.dependencies.any? do |dep|
91
+ dep.name == 'rake-compiler'
92
+ end
93
+ end
94
+
95
+
96
+ ### Task function -- output debugging for extension tasks.
97
+ def do_extensions_debug( task, args )
98
+ self.prompt.say( "Extension config scripts:", color: :bright_green )
99
+
100
+ if self.extensions.empty?
101
+ self.prompt.say( "None." )
102
+ else
103
+ self.extensions.each do |path|
104
+ self.prompt.say "- %s" % [ path ]
105
+ end
106
+ end
107
+
108
+ if self.has_rakecompiler_dependency?
109
+ end
110
+
111
+ self.prompt.say( "\n" )
112
+ end
113
+
114
+
115
+ end # module Rake::DevEiate::Extensions
116
+
117
+
@@ -124,6 +124,7 @@ module Rake::DevEiate::Gemspec
124
124
  spec.summary = self.summary || self.extract_summary
125
125
  spec.files = self.project_files
126
126
  spec.executables = self.executables
127
+ spec.extensions = self.extensions.to_a
127
128
  spec.signing_key = self.resolve_signing_key.to_s
128
129
  spec.cert_chain = [ self.find_signing_cert ].compact
129
130
  spec.version = self.version
@@ -203,6 +204,10 @@ module Rake::DevEiate::Gemspec
203
204
  bt_uri = source_uri.dup
204
205
  bt_uri.host = 'todo.sr.ht'
205
206
  metadata['bug_tracker_uri'] = bt_uri.to_s
207
+ when /\.gitlab\.com/
208
+ bt_uri = source_uri.dup
209
+ bt_uri.path += '-/issues'
210
+ metadata['bug_tracker_uri'] = bt_uri.to_s
206
211
  else
207
212
  self.trace "No idea what bug tracker URIs for %s look like!" % [ source_uri.host ]
208
213
  end
@@ -54,11 +54,23 @@ module Rake::DevEiate::Generate
54
54
 
55
55
  # Abstract named tasks; mostly for invoking programmatically
56
56
  namespace :generate do
57
+
58
+ desc "Generate a Rakefile"
57
59
  task :rakefile => self.rakefile
60
+
61
+ desc "Generate a %s file" % [ self.readme_file ]
58
62
  task :readme => self.readme_file
63
+
64
+ desc "Generate a %s file" % [ self.history_file ]
59
65
  task :history_file => self.history_file
66
+
67
+ desc "Generate a %s file" % [ self.manifest_file ]
60
68
  task :manifest => self.manifest_file
69
+
70
+ desc "Generate a %s file" % [ RUBY_VERSION_FILE ]
61
71
  task :ruby_version_file => RUBY_VERSION_FILE
72
+
73
+ desc "Generate a %s file" % [ GEMSET_FILE ]
62
74
  task :gemset_file => GEMSET_FILE
63
75
  end
64
76
 
@@ -0,0 +1,524 @@
1
+ # -*- ruby -*-
2
+ # frozen_string_literal: true
3
+
4
+ require 'tempfile'
5
+ require 'shellwords'
6
+ require 'git'
7
+ require 'tty/editor'
8
+
9
+ require 'rake/deveiate' unless defined?( Rake::DevEiate )
10
+ require 'rake/deveiate/git-refinements'
11
+
12
+ using Rake::DevEiate::GitRefinements
13
+
14
+
15
+ # Git version-control tasks
16
+ module Rake::DevEiate::Git
17
+
18
+ # The name of the file to edit for the commit message
19
+ COMMIT_MSG_FILE = Pathname( 'commit-msg.txt' )
20
+
21
+ # The name of the ignore file
22
+ IGNORE_FILE = Rake::DevEiate::PROJECT_DIR + '.gitignore'
23
+
24
+ # Colors for presenting file statuses
25
+ STATUS_COLORS = {
26
+ 'M' => [:blue], # modified
27
+ 'A' => [:bold, :green], # added
28
+ 'R' => [:bold, :black], # removed
29
+ 'C' => [:white], # clean
30
+ '!' => [:bold, :white, :on_red], # missing
31
+ '?' => [:yellow], # not tracked
32
+ 'I' => [:dim, :white], # ignored
33
+ }
34
+
35
+ # File indentation
36
+ FILE_INDENT = " • "
37
+
38
+
39
+ ### Define version-control tasks
40
+ def define_tasks
41
+ super if defined?( super )
42
+
43
+ return unless self.is_git_working_copy?
44
+
45
+ # :TODO: Should be refactored up with the same code in the hg lib.
46
+ file COMMIT_MSG_FILE.to_s do |task|
47
+ commit_log = Pathname( task.name )
48
+
49
+ edit_git_commit_log( commit_log )
50
+ unless commit_log.size?
51
+ self.prompt.error "Empty commit message; aborting."
52
+ commit_log.unlink if commit_log.exist?
53
+ abort
54
+ end
55
+ end
56
+
57
+ CLEAN.include( COMMIT_MSG_FILE.to_s )
58
+
59
+ namespace :git do
60
+
61
+ desc "Prepare for a new release"
62
+ task( :prerelease, &method(:do_git_prerelease) )
63
+
64
+ desc "Check for new files and offer to add/ignore/delete them."
65
+ task( :newfiles, &method(:do_git_newfiles) )
66
+ task :add => :newfiles
67
+
68
+ desc "Pull and update from the default repo"
69
+ task( :pull, &method(:do_git_pull) )
70
+
71
+ desc "Pull and update without confirmation"
72
+ task( :pull_without_confirmation, &method(:do_git_pull_without_confirmation) )
73
+
74
+ desc "Update to tip"
75
+ task( :update, &method(:do_git_update) )
76
+
77
+ desc "Clobber all changes (git up -C)"
78
+ task( :update_and_clobber, &method(:do_git_update_and_clobber) )
79
+
80
+ desc "Git-specific pre-checkin hook"
81
+ task :precheckin => [ :pull, :newfiles, :check_for_changes ]
82
+
83
+ desc "Check the current code in if tests pass"
84
+ task( :checkin => COMMIT_MSG_FILE.to_s, &method(:do_git_checkin) )
85
+
86
+ desc "Git-specific pre-release hook"
87
+ task :prerelease => 'git:check_history'
88
+
89
+ desc "Git-specific post-release hook"
90
+ task( :postrelease, &method(:do_git_postrelease) )
91
+
92
+ desc "Push to the default origin repo (if there is one)"
93
+ task( :push, &method(:do_git_push) )
94
+
95
+ desc "Push to the default repo without confirmation"
96
+ task :push_without_confirmation do |task, args|
97
+ self.git.push
98
+ end
99
+
100
+ desc "Check the history file to ensure it contains an entry for each release tag"
101
+ task( :check_history, &method(:do_git_check_history) )
102
+
103
+ desc "Generate and edit a new version entry in the history file"
104
+ task( :update_history, &method(:do_git_update_history) )
105
+
106
+ task( :check_for_changes, &method(:do_git_check_for_changes) )
107
+ task( :debug, &method(:do_git_debug) )
108
+ end
109
+
110
+
111
+ # Hook some generic tasks to the mercurial-specific ones
112
+ task :checkin => 'git:checkin'
113
+ task :precheckin => 'git:precheckin'
114
+
115
+ task :prerelease => 'git:prerelease'
116
+ task :postrelease => 'git:postrelease'
117
+
118
+ desc "Update the history file with the changes since the last version tag."
119
+ task :update_history => 'git:update_history'
120
+
121
+ task :debug => 'git:debug'
122
+ rescue ::Exception => err
123
+ $stderr.puts "%s while defining Git tasks: %s" % [ err.class.name, err.message ]
124
+ raise
125
+ end
126
+
127
+
128
+ ### Returns +true+ if the current directory looks like a Git working copy.
129
+ def is_git_working_copy?
130
+ return File.directory?( '.git' )
131
+ end
132
+
133
+
134
+ ### The body of the git:prerelease task.
135
+ 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 )
139
+
140
+ fail unless self.prompt.yes?( "Release anyway?" ) do |q|
141
+ q.default( false )
142
+ end
143
+
144
+ self.prompt.warn "Okay, releasing with uncommitted versions."
145
+ end
146
+
147
+ pkg_version_tag = self.current_git_version_tag
148
+ rev = self.git.identity.id
149
+
150
+ # Look for a tag for the current release version, and if it exists abort
151
+ if self.git.tags.find {|tag| tag.name == pkg_version_tag }
152
+ self.prompt.error "Version #{self.version} already has a tag."
153
+ fail
154
+ end
155
+
156
+ # Tag the current rev
157
+ 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
166
+ end
167
+
168
+
169
+ ### The body of the git:postrelease task.
170
+ def do_git_postrelease( task, args )
171
+ if self.git.status( 'checksum', unknown: true ).any?
172
+ self.prompt.say "Adding release artifacts..."
173
+ 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
187
+ end
188
+
189
+ Rake::Task['git:push'].invoke
190
+ end
191
+
192
+
193
+ ### The body of the git:newfiles task.
194
+ def do_git_newfiles( task, args )
195
+ self.prompt.say "Checking for new files..."
196
+ status = self.git.status
197
+
198
+ files_to_add = status.changed.keys
199
+ files_to_ignore = []
200
+ files_to_delete = []
201
+
202
+ status.untracked.each do |path, status_file|
203
+ description = " %s: untracked" % [ path ]
204
+ action = self.prompt.select( description ) do |menu|
205
+ menu.choice "add", :a
206
+ menu.choice "ignore", :i
207
+ menu.choice "skip", :s
208
+ menu.choice "delete", :d
209
+ end
210
+
211
+ case action
212
+ when :a
213
+ files_to_add << path
214
+ when :i
215
+ files_to_ignore << path
216
+ when :d
217
+ files_to_delete << path
218
+ end
219
+ end
220
+
221
+ unless files_to_add.empty?
222
+ $stderr.puts "Adding: %p" % [ files_to_add ]
223
+ self.git.add( files_to_add )
224
+ end
225
+
226
+ unless files_to_ignore.empty?
227
+ git_ignore_files( *files_to_ignore )
228
+ end
229
+
230
+ unless files_to_delete.empty?
231
+ delete_extra_files( *files_to_delete )
232
+ end
233
+ end
234
+
235
+
236
+ ### The body of the git:pull task.
237
+ def do_git_pull( task, args )
238
+ origin = self.git.remote
239
+
240
+ if ( origin_url = origin.url )
241
+ if self.prompt.yes?( "Pull and update from '#{origin_url}'?" )
242
+ self.prompt.say "Fetching..."
243
+ self.git.fetch( 'origin', prune: true )
244
+ self.prompt.say "Pulling..."
245
+ self.git.pull( 'origin', self.git.current_branch )
246
+ end
247
+ else
248
+ trace "Skipping pull: No 'origin' remote."
249
+ end
250
+ end
251
+
252
+
253
+ ### The body of the git:pull_without_confirmation task.
254
+ def do_git_pull_without_confirmation( task, args )
255
+ self.git.pull
256
+ end
257
+
258
+
259
+ ### The body of the git:update task.
260
+ def do_git_update( task, args )
261
+ self.git.pull_update
262
+ end
263
+
264
+
265
+ ### The body of the git:update_and_clobber task.
266
+ def do_git_update_and_clobber( task, args )
267
+ self.git.update( clean: true )
268
+ end
269
+
270
+
271
+ ### The body of the checkin task.
272
+ def do_git_checkin( task, args )
273
+ commit_msg = COMMIT_MSG_FILE.read.strip
274
+
275
+ self.prompt.say( "---", color: :cyan )
276
+ self.prompt.say( commit_msg )
277
+ self.prompt.say( "---", color: :cyan )
278
+
279
+ if self.prompt.yes?( "Continue with checkin?" )
280
+ self.git.commit( COMMIT_MSG_FILE.read )
281
+ rm_f COMMIT_MSG_FILE
282
+ else
283
+ abort
284
+ end
285
+ Rake::Task[ 'git:push' ].invoke
286
+ end
287
+
288
+
289
+ ### The body of the push task.
290
+ def do_git_push( task, args )
291
+ git = self.git
292
+ origin = git.remote
293
+
294
+ if (origin_url = origin.url)
295
+ if self.prompt.yes?( "Push to '#{origin_url}'?" ) {|q| q.default(false) }
296
+ unless git.is_remote_branch?( git.current_branch )
297
+ if self.prompt.yes?( "Create tracking branch?" ) {|q| q.default(true) }
298
+ tracking_branch = "origin/%s" % [ git.current_branch ]
299
+ git.cmd( 'branch', ['-u', tracking_branch] )
300
+ end
301
+ end
302
+
303
+ git.push( 'origin', git.current_branch )
304
+ self.prompt.ok "Done."
305
+ else
306
+ abort
307
+ end
308
+ else
309
+ trace "Skipping push: No 'default' path."
310
+ end
311
+ end
312
+
313
+
314
+ ### Check the history file against the list of release tags in the working copy
315
+ ### and ensure there's an entry for each tag.
316
+ def do_git_check_history( task, args )
317
+ unless self.history_file.readable?
318
+ self.prompt.error "History file is missing or unreadable."
319
+ abort
320
+ end
321
+
322
+ self.prompt.say "Checking history..."
323
+ missing_tags = self.get_git_unhistoried_version_tags
324
+
325
+ unless missing_tags.empty?
326
+ self.prompt.error "%s needs updating; missing entries for tags: %s" %
327
+ [ self.history_file, missing_tags.join(', ') ]
328
+ abort
329
+ end
330
+ end
331
+
332
+
333
+ ### Check the status of the repo and ensure there are outstanding changes. If there
334
+ ### are no changes, abort.
335
+ def do_git_check_for_changes( task, args )
336
+ # :FIXME: Figure out a better way to do this.
337
+ unless self.git.status.any?( &:type )
338
+ self.prompt.error "Working copy is clean."
339
+ abort
340
+ end
341
+ end
342
+
343
+
344
+ ### Generate a new history file entry for the current version.
345
+ def do_git_update_history( task, args ) # Needs refactoring
346
+ unless self.history_file.readable?
347
+ self.prompt.error "History file is missing or unreadable."
348
+ abort
349
+ end
350
+
351
+ version_tag = self.current_git_version_tag
352
+ previous_tag = self.previous_git_version_tag
353
+ self.prompt.say "Updating history for %s..." % [ version_tag ]
354
+
355
+ if self.get_history_file_versions.include?( version_tag )
356
+ self.trace "History file already includes a section for %s" % [ version_tag ]
357
+ abort
358
+ end
359
+
360
+ header, rest = self.history_file.read( encoding: 'utf-8' ).
361
+ split( /(?<=^---)/m, 2 )
362
+
363
+ self.trace "Rest is: %p" % [ rest ]
364
+ if !rest || rest.empty?
365
+ self.prompt.warn "History file needs a header with a `---` marker to support updating."
366
+ self.prompt.say "Adding an auto-generated one."
367
+ rest = header
368
+ header = self.load_and_render_template( 'History.erb', self.history_file )
369
+ end
370
+
371
+ header_char = self.header_char_for( self.history_file )
372
+ ext = self.history_file.extname
373
+ log_entries = if previous_tag
374
+ self.git.log( rev: "#{previous_tag}~-2::" )
375
+ else
376
+ self.git.log
377
+ end
378
+
379
+ Tempfile.create( ['History', ext], encoding: 'utf-8' ) do |tmp_copy|
380
+ tmp_copy.print( header )
381
+ tmp_copy.puts
382
+
383
+ tmp_copy.puts "%s %s [%s] %s" % [
384
+ header_char * 2,
385
+ version_tag,
386
+ Date.today.strftime( '%Y-%m-%d' ),
387
+ self.authors.first,
388
+ ]
389
+
390
+ tmp_copy.puts
391
+ log_entries.each do |entry|
392
+ tmp_copy.puts "- %s" % [ entry.message ]
393
+ end
394
+ tmp_copy.puts
395
+ tmp_copy.puts
396
+
397
+ tmp_copy.print( rest )
398
+ tmp_copy.close
399
+
400
+ TTY::Editor.open( tmp_copy.path )
401
+
402
+ if File.size?( tmp_copy.path )
403
+ cp( tmp_copy.path, self.history_file )
404
+ else
405
+ self.prompt.error "Empty file: aborting."
406
+ end
407
+ end
408
+
409
+ end
410
+
411
+
412
+ ### Show debugging information.
413
+ def do_git_debug( task, args )
414
+ self.prompt.say( "Git Info", color: :bright_green )
415
+
416
+ if self.is_git_working_copy?
417
+ self.prompt.say( "Release tag prefix: " )
418
+ self.prompt.say( self.release_tag_prefix, color: :bold )
419
+
420
+ self.prompt.say( "Version tags:" )
421
+ self.get_git_version_tag_names.each do |tag|
422
+ self.prompt.say( '- ' )
423
+ self.prompt.say( tag, color: :bold )
424
+ end
425
+
426
+ self.prompt.say( "History file versions:" )
427
+ self.get_history_file_versions.each do |tag|
428
+ self.prompt.say( '- ' )
429
+ self.prompt.say( tag, color: :bold )
430
+ end
431
+
432
+ self.prompt.say( "Unhistoried version tags:" )
433
+ self.get_git_unhistoried_version_tags.each do |tag|
434
+ self.prompt.say( '- ' )
435
+ self.prompt.say( tag, color: :bold )
436
+ end
437
+ else
438
+ self.prompt.say( "Doesn't appear to be a Git repository." )
439
+ end
440
+
441
+ self.prompt.say( "\n" )
442
+ end
443
+
444
+ #
445
+ # utility methods
446
+ #
447
+
448
+ ### Return a Git::Repo for the directory rake was invoked in, creating it if
449
+ ### necessary.
450
+ def git
451
+ @git ||= Git.open( Rake::DevEiate::PROJECT_DIR )
452
+ end
453
+
454
+
455
+ ### Given a +status_hash+ like that returned by Git::Repo.status, return a
456
+ ### string description of the files and their status.
457
+ def show_git_file_statuses( statuses )
458
+ lines = statuses.map do |entry|
459
+ status_color = STATUS_COLORS[ entry.status ]
460
+ " %s: %s" % [
461
+ self.pastel.white( entry.path.to_s ),
462
+ self.pastel.decorate( entry.status_description, *status_color ),
463
+ ]
464
+ end
465
+
466
+ self.prompt.say( self.pastel.headline "Uncommitted files:" )
467
+ self.prompt.say( lines.join("\n") )
468
+ end
469
+
470
+
471
+ ### Fetch the name of the current version's tag.
472
+ def current_git_version_tag
473
+ return [ self.release_tag_prefix, self.version ].join
474
+ end
475
+
476
+
477
+ ### Fetch the name of the tag for the previous version.
478
+ def previous_git_version_tag
479
+ return self.get_git_version_tag_names.first
480
+ end
481
+
482
+
483
+ ### Fetch the list of names of tags that match the versioning scheme of this
484
+ ### project.
485
+ def get_git_version_tag_names
486
+ tag_pattern = self.release_tag_pattern
487
+ return self.git.tags.map( &:name ).grep( tag_pattern )
488
+ end
489
+
490
+
491
+ ### Read the list of tags and return any that don't have a corresponding section
492
+ ### in the history file.
493
+ def get_git_unhistoried_version_tags( include_current_version: true )
494
+ release_tags = self.get_git_version_tag_names
495
+ release_tags.unshift( self.current_git_version_tag ) if include_current_version
496
+
497
+ self.get_history_file_versions.each do |tag|
498
+ release_tags.delete( tag )
499
+ end
500
+
501
+ return release_tags
502
+ end
503
+
504
+
505
+ ### Generate a commit log and invoke the user's editor on it.
506
+ def edit_git_commit_log( logfile )
507
+ diff = self.git.diff
508
+
509
+ TTY::Editor.open( logfile, text: diff )
510
+ end
511
+
512
+
513
+ ### Add the list of +pathnames+ to the .gitignore list.
514
+ def git_ignore_files( *pathnames )
515
+ self.trace "Ignoring %d files." % [ pathnames.length ]
516
+
517
+ IGNORE_FILE.open( File::CREAT|File::WRONLY|File::APPEND, 0644 ) do |fh|
518
+ fh.puts( pathnames )
519
+ end
520
+ end
521
+
522
+ end # module Rake::DevEiate::Git
523
+
524
+
@@ -9,7 +9,7 @@ require 'tty/editor'
9
9
  require 'rake/deveiate' unless defined?( Rake::DevEiate )
10
10
 
11
11
 
12
- # Version-control tasks
12
+ # Mercurial version-control tasks
13
13
  module Rake::DevEiate::Hg
14
14
 
15
15
  # The name of the file to edit for the commit message
@@ -18,9 +18,6 @@ module Rake::DevEiate::Hg
18
18
  # The name of the ignore file
19
19
  IGNORE_FILE = Rake::DevEiate::PROJECT_DIR + '.hgignore'
20
20
 
21
- # The prefix to use for release version tags by default
22
- DEFAULT_RELEASE_TAG_PREFIX = 'v'
23
-
24
21
  # Colors for presenting file statuses
25
22
  STATUS_COLORS = {
26
23
  'M' => [:blue], # modified
@@ -36,29 +33,16 @@ module Rake::DevEiate::Hg
36
33
  FILE_INDENT = " • "
37
34
 
38
35
 
39
- ### Set up defaults
40
- def setup( _name, **options )
41
- super if defined?( super )
42
-
43
- @release_tag_prefix = options[:release_tag_prefix] || DEFAULT_RELEASE_TAG_PREFIX
44
- end
45
-
46
-
47
- ##
48
- # The prefix to use for version tags
49
- attr_accessor :release_tag_prefix
50
-
51
-
52
36
  ### Define version-control tasks
53
37
  def define_tasks
54
38
  super if defined?( super )
55
39
 
56
- return unless File.directory?( '.hg' )
40
+ return unless self.is_hg_working_copy?
57
41
 
58
42
  file COMMIT_MSG_FILE.to_s do |task|
59
43
  commit_log = Pathname( task.name )
60
44
 
61
- edit_commit_log( commit_log )
45
+ hg_edit_commit_log( commit_log )
62
46
  unless commit_log.size?
63
47
  self.prompt.error "Empty commit message; aborting."
64
48
  commit_log.unlink if commit_log.exist?
@@ -137,11 +121,17 @@ module Rake::DevEiate::Hg
137
121
  end
138
122
 
139
123
 
124
+ ### Returns +true+ if the current directory looks like a Mercurial working copy.
125
+ def is_hg_working_copy?
126
+ return File.directory?( '.hg' )
127
+ end
128
+
129
+
140
130
  ### The body of the hg:prerelease task.
141
131
  def do_hg_prerelease( task, args )
142
132
  uncommitted_files = self.hg.status( n: true )
143
133
  unless uncommitted_files.empty?
144
- self.show_file_statuses( uncommitted_files )
134
+ self.show_hg_file_statuses( uncommitted_files )
145
135
 
146
136
  fail unless self.prompt.yes?( "Release anyway?" ) do |q|
147
137
  q.default( false )
@@ -150,7 +140,7 @@ module Rake::DevEiate::Hg
150
140
  self.prompt.warn "Okay, releasing with uncommitted versions."
151
141
  end
152
142
 
153
- pkg_version_tag = self.current_version_tag
143
+ pkg_version_tag = self.current_hg_version_tag
154
144
  rev = self.hg.identity.id
155
145
 
156
146
  # Look for a tag for the current release version, and if it exists abort
@@ -316,7 +306,7 @@ module Rake::DevEiate::Hg
316
306
  end
317
307
 
318
308
  self.prompt.say "Checking history..."
319
- missing_tags = self.get_unhistoried_version_tags
309
+ missing_tags = self.get_hg_unhistoried_version_tags
320
310
 
321
311
  unless missing_tags.empty?
322
312
  self.prompt.error "%s needs updating; missing entries for tags: %s" %
@@ -343,8 +333,8 @@ module Rake::DevEiate::Hg
343
333
  abort
344
334
  end
345
335
 
346
- version_tag = self.current_version_tag
347
- previous_tag = self.previous_version_tag
336
+ version_tag = self.current_hg_version_tag
337
+ previous_tag = self.previous_hg_version_tag
348
338
  self.prompt.say "Updating history for %s..." % [ version_tag ]
349
339
 
350
340
  if self.get_history_file_versions.include?( version_tag )
@@ -408,27 +398,31 @@ module Rake::DevEiate::Hg
408
398
  def do_hg_debug( task, args )
409
399
  self.prompt.say( "Hg Info", color: :bright_green )
410
400
 
411
- self.prompt.say( "Mercurial version: " )
412
- self.prompt.say( Hglib.version, color: :bold )
413
- self.prompt.say( "Release tag prefix: " )
414
- self.prompt.say( self.release_tag_prefix, color: :bold )
401
+ if self.is_hg_working_copy?
402
+ self.prompt.say( "Mercurial version: " )
403
+ self.prompt.say( Hglib.version, color: :bold )
404
+ self.prompt.say( "Release tag prefix: " )
405
+ self.prompt.say( self.release_tag_prefix, color: :bold )
415
406
 
416
- self.prompt.say( "Version tags:" )
417
- self.get_version_tag_names.each do |tag|
418
- self.prompt.say( '- ' )
419
- self.prompt.say( tag, color: :bold )
420
- end
407
+ self.prompt.say( "Version tags:" )
408
+ self.get_hg_version_tag_names.each do |tag|
409
+ self.prompt.say( '- ' )
410
+ self.prompt.say( tag, color: :bold )
411
+ end
421
412
 
422
- self.prompt.say( "History file versions:" )
423
- self.get_history_file_versions.each do |tag|
424
- self.prompt.say( '- ' )
425
- self.prompt.say( tag, color: :bold )
426
- end
413
+ self.prompt.say( "History file versions:" )
414
+ self.get_history_file_versions.each do |tag|
415
+ self.prompt.say( '- ' )
416
+ self.prompt.say( tag, color: :bold )
417
+ end
427
418
 
428
- self.prompt.say( "Unhistoried version tags:" )
429
- self.get_unhistoried_version_tags.each do |tag|
430
- self.prompt.say( '- ' )
431
- self.prompt.say( tag, color: :bold )
419
+ self.prompt.say( "Unhistoried version tags:" )
420
+ self.get_hg_unhistoried_version_tags.each do |tag|
421
+ self.prompt.say( '- ' )
422
+ self.prompt.say( tag, color: :bold )
423
+ end
424
+ else
425
+ self.prompt.say( "Doesn't appear to be a Mercurial repository." )
432
426
  end
433
427
 
434
428
  self.prompt.say( "\n" )
@@ -447,7 +441,7 @@ module Rake::DevEiate::Hg
447
441
 
448
442
  ### Given a +status_hash+ like that returned by Hglib::Repo.status, return a
449
443
  ### string description of the files and their status.
450
- def show_file_statuses( statuses )
444
+ def show_hg_file_statuses( statuses )
451
445
  lines = statuses.map do |entry|
452
446
  status_color = STATUS_COLORS[ entry.status ]
453
447
  " %s: %s" % [
@@ -462,48 +456,30 @@ module Rake::DevEiate::Hg
462
456
 
463
457
 
464
458
  ### Fetch the name of the current version's tag.
465
- def current_version_tag
459
+ def current_hg_version_tag
466
460
  return [ self.release_tag_prefix, self.version ].join
467
461
  end
468
462
 
469
463
 
470
464
  ### Fetch the name of the tag for the previous version.
471
- def previous_version_tag
472
- return self.get_version_tag_names.first
473
- end
474
-
475
-
476
- ### Return a Regexp that matches the project's convention for versions.
477
- def release_tag_pattern
478
- prefix = self.release_tag_prefix
479
- return /#{prefix}\d+(\.\d+)+/
465
+ def previous_hg_version_tag
466
+ return self.get_hg_version_tag_names.first
480
467
  end
481
468
 
482
469
 
483
470
  ### Fetch the list of names of tags that match the versioning scheme of this
484
471
  ### project.
485
- def get_version_tag_names
472
+ def get_hg_version_tag_names
486
473
  tag_pattern = self.release_tag_pattern
487
474
  return self.hg.tags.map( &:name ).grep( tag_pattern )
488
475
  end
489
476
 
490
477
 
491
- ### Fetch the list of the versions of releases that have entries in the history
492
- ### file.
493
- def get_history_file_versions
494
- tag_pattern = self.release_tag_pattern
495
-
496
- return IO.readlines( self.history_file ).grep( tag_pattern ).map do |line|
497
- line[ /^(?:h\d\.|#+|=+)\s+(#{tag_pattern})\s+/, 1 ]
498
- end.compact
499
- end
500
-
501
-
502
478
  ### Read the list of tags and return any that don't have a corresponding section
503
479
  ### in the history file.
504
- def get_unhistoried_version_tags( include_current_version: true )
505
- release_tags = self.get_version_tag_names
506
- release_tags.unshift( self.current_version_tag ) if include_current_version
480
+ def get_hg_unhistoried_version_tags( include_current_version: true )
481
+ release_tags = self.get_hg_version_tag_names
482
+ release_tags.unshift( self.current_hg_version_tag ) if include_current_version
507
483
 
508
484
  self.get_history_file_versions.each do |tag|
509
485
  release_tags.delete( tag )
@@ -514,10 +490,10 @@ module Rake::DevEiate::Hg
514
490
 
515
491
 
516
492
  ### Generate a commit log and invoke the user's editor on it.
517
- def edit_commit_log( logfile )
493
+ def hg_edit_commit_log( logfile )
518
494
  diff = self.hg.diff
519
495
 
520
- TTY::Editor.open( logfile, content: diff )
496
+ TTY::Editor.open( logfile, text: diff )
521
497
  end
522
498
 
523
499
 
@@ -533,32 +509,6 @@ module Rake::DevEiate::Hg
533
509
  end
534
510
  end
535
511
 
536
-
537
- ### Delete the files in the given +filelist+ after confirming with the user.
538
- def delete_extra_files( *filelist )
539
- description = humanize_file_list( filelist, ' ' )
540
- self.prompt.say "Files to delete:"
541
- self.prompt.say( description )
542
-
543
- if self.prompt.yes?( "Really delete them?" ) {|q| q.default(false) }
544
- filelist.each do |f|
545
- rm_rf( f, verbose: true )
546
- end
547
- end
548
- end
549
-
550
-
551
- ### Returns a human-scannable file list by joining and truncating the list if it's too long.
552
- def humanize_file_list( list, indent=FILE_INDENT )
553
- listtext = list[0..5].join( "\n#{indent}" )
554
- if list.length > 5
555
- listtext << " (and %d other/s)" % [ list.length - 5 ]
556
- end
557
-
558
- return listtext
559
- end
560
-
561
-
562
512
  end # module Rake::DevEiate::Hg
563
513
 
564
514
 
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-deveiate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
14
- REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xOTEwMDkwMDM2NTdaFw0yMDEwMDgwMDM2
15
- NTdaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
13
+ MIID+DCCAmCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
14
+ REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xOTEyMjQyMDE5NTFaFw0yMDEyMjMyMDE5
15
+ NTFaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
16
16
  hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
17
17
  L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
18
18
  M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
@@ -21,20 +21,19 @@ cert_chain:
21
21
  vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
22
22
  dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
23
23
  ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
24
- N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
25
- VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DAcBgNVHREE
26
- FTATgRFnZWRARmFlcmllTVVELm9yZzAcBgNVHRIEFTATgRFnZWRARmFlcmllTVVE
27
- Lm9yZzANBgkqhkiG9w0BAQsFAAOCAYEAFqsr6o0SvQRgjQVmhbQvExRnCMCoW1yb
28
- FJiN7A5RA2Iy2E61OG1Ul5nGmaDmx/PNB/6JIbIV3B9Uq8aTZx4uOjK7r8vMl1/t
29
- ZfY7r6HejJfXlcO2m6JDMbpdyEVv916LncBkzZRz6vnnNCx+31f15FKddxujpAFd
30
- qpn3JRQY+oj7ZkoccL/IUiDpxQWeS3oOoz9qr2kVTp8R50InZimt79FqCl/1m66W
31
- kdOuf+wM3DDx7Rt4IVNHrhGlyfMr7xjKW1Q3gll+pMN1DT6Ajx/t3JDSEg7BnnEW
32
- r7AciSO6J4ApUdqyG+coLFlGdtgFTgRHv7ihbQtDI7Z/LV7A4Spn1j2PK3j0Omri
33
- kSl1hPVigRytfgdVGiLXzvkkrkgj9EknCaj5UHbac7XvVBrljXj9hsnnqTANaKsg
34
- jBZSA+N+xUTgUWpXjjwsLZjzJkhWATJWq+krNXcqpwXo6HsjmdUxoFMt63RBb+sI
35
- XrxOxp8o0uOkU7FdLSGsyqJ2LzsR4obN
24
+ N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYD
25
+ VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DANBgkqhkiG
26
+ 9w0BAQsFAAOCAYEAifxlz7x0EfT3fjhM520ZEIrWa+tLMuLKNefkY18u8tZnx4EX
27
+ Xxwh3tna3fvNfrOrdY5leIj1dbv4FTRg+gIBnIxAySqvpGvI/Axg5EdYbwninCLL
28
+ LAKCmRo+5QwaPMYN2zdHIjGrp8jg1neCo5zy6tVvyTv0DMI6FLrydVJYduMMDFSy
29
+ gQKR1rVOcCJtnBnLCF9+kKEUKohAHOmGsE7OBZFnjMIpH5yUDUVJKByv0gIipFt0
30
+ 1T6zff6oVU0w8WBiNKR381+6sF3wIZVnVY0XeJg6hNL+YecE8ILxLhHTmtT/BO0S
31
+ 3xPze9uXDR+iD6HYl8KU5QEg/dXFPhfQb512vVkTJDZvMcwu6PxDUjHFChLjAji/
32
+ AZXjg1C5E9znTkeUR8ieU9F1MOKoiH57a5lYSTI8Ga8PpsNXTxNeXc16Ob26CqrJ
33
+ 83uuAYSy65yXDGXXPVBeKPVnYrqp91pqpS5Nh7wfuiCrE8lgU8PATh7K4BV1UhAT
34
+ 0MHbAT42wTYkfUj3
36
35
  -----END CERTIFICATE-----
37
- date: 2020-04-02 00:00:00.000000000 Z
36
+ date: 2020-11-23 00:00:00.000000000 Z
38
37
  dependencies:
39
38
  - !ruby/object:Gem::Dependency
40
39
  name: rake
@@ -132,14 +131,14 @@ dependencies:
132
131
  requirements:
133
132
  - - "~>"
134
133
  - !ruby/object:Gem::Version
135
- version: '0.5'
134
+ version: '0.6'
136
135
  type: :runtime
137
136
  prerelease: false
138
137
  version_requirements: !ruby/object:Gem::Requirement
139
138
  requirements:
140
139
  - - "~>"
141
140
  - !ruby/object:Gem::Version
142
- version: '0.5'
141
+ version: '0.6'
143
142
  - !ruby/object:Gem::Dependency
144
143
  name: tty-table
145
144
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +167,20 @@ dependencies:
168
167
  - - "~>"
169
168
  - !ruby/object:Gem::Version
170
169
  version: '0.7'
170
+ - !ruby/object:Gem::Dependency
171
+ name: git
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: '1.7'
177
+ type: :runtime
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '1.7'
171
184
  - !ruby/object:Gem::Dependency
172
185
  name: rdoc-generator-fivefish
173
186
  requirement: !ruby/object:Gem::Requirement
@@ -201,10 +214,12 @@ files:
201
214
  - lib/rake/deveiate.rb
202
215
  - lib/rake/deveiate/checks.rb
203
216
  - lib/rake/deveiate/docs.rb
217
+ - lib/rake/deveiate/extensions.rb
204
218
  - lib/rake/deveiate/fixup.rb
205
219
  - lib/rake/deveiate/gem_dep_finder.rb
206
220
  - lib/rake/deveiate/gemspec.rb
207
221
  - lib/rake/deveiate/generate.rb
222
+ - lib/rake/deveiate/git.rb
208
223
  - lib/rake/deveiate/hg.rb
209
224
  - lib/rake/deveiate/packaging.rb
210
225
  - lib/rake/deveiate/releases.rb
@@ -216,7 +231,9 @@ metadata:
216
231
  homepage_uri: https://hg.sr.ht/~ged/rake-deveiate
217
232
  documentation_uri: https://deveiate.org/code/rake-deveiate/
218
233
  changelog_uri: https://deveiate.org/code/rake-deveiate/History_md.html
219
- post_install_message:
234
+ source_uri: https://hg.sr.ht/~ged/rake-deveiate/browse
235
+ bug_tracker_uri: https://todo.sr.ht/~ged/rake-deveiate/browse
236
+ post_install_message:
220
237
  rdoc_options: []
221
238
  require_paths:
222
239
  - lib
@@ -231,8 +248,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
248
  - !ruby/object:Gem::Version
232
249
  version: '0'
233
250
  requirements: []
234
- rubygems_version: 3.1.2
235
- signing_key:
251
+ rubygems_version: 3.1.4
252
+ signing_key:
236
253
  specification_version: 4
237
254
  summary: This is a collection of Rake tasks I use for development.
238
255
  test_files: []
metadata.gz.sig CHANGED
Binary file