rake-deveiate 0.11.0 → 0.14.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.md +38 -0
- data/README.md +3 -0
- data/data/rake-deveiate/Rakefile.erb +8 -0
- data/data/rake-deveiate/global.rake +21 -0
- data/lib/rake/deveiate.rb +89 -6
- data/lib/rake/deveiate/checks.rb +1 -1
- data/lib/rake/deveiate/fixup.rb +256 -0
- data/lib/rake/deveiate/generate.rb +21 -2
- data/lib/rake/deveiate/hg.rb +1 -1
- metadata +37 -10
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 762cab05ba4a8d7497af5395d492da9039bfc929b1a1cd423710a769d76f5961
|
4
|
+
data.tar.gz: 7fa33393fd538004b48176aa6b7d5f05196a9b2c94d645cd75c920b4a8ae3631
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56f2cc7d30f5cfbf51e6a27a984b606407b41d076ba2cc5c26e475c26173cdb72505f30fefd5fed3a5e6c9fad0dbf272f73adf9d93786282e2163bbdbc70ef44
|
7
|
+
data.tar.gz: e1d1235a86e52ec19eb9b1653b45cd6fcf753662d14b3409cf42de995aaeb82b6a05756cf512dea922a2e6ed615f01d2ae23adf11d1a2500dca937fd95655577
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.md
CHANGED
@@ -1,6 +1,44 @@
|
|
1
1
|
# Release History for rake-deveiate
|
2
2
|
|
3
3
|
---
|
4
|
+
## v0.14.1 [2020-10-01] Michael Granger <ged@FaerieMUD.org>
|
5
|
+
|
6
|
+
Improvements:
|
7
|
+
|
8
|
+
- Support changes in latest tty-editor.
|
9
|
+
|
10
|
+
|
11
|
+
## v0.14.0 [2020-04-02] Michael Granger <ged@FaerieMUD.org>
|
12
|
+
|
13
|
+
Improvements:
|
14
|
+
|
15
|
+
- Handle gem names like 'ruby-pf', fixup untracked gem deps files
|
16
|
+
|
17
|
+
|
18
|
+
## v0.13.0 [2020-03-09] Michael Granger <ged@FaerieMUD.org>
|
19
|
+
|
20
|
+
Improvements:
|
21
|
+
|
22
|
+
- Allow file that version is read from to be overridden
|
23
|
+
|
24
|
+
Bugfixes:
|
25
|
+
|
26
|
+
- Bump the hglib dependency
|
27
|
+
|
28
|
+
|
29
|
+
## v0.12.1 [2020-03-04] Michael Granger <ged@FaerieMUD.org>
|
30
|
+
|
31
|
+
Bugfixes:
|
32
|
+
|
33
|
+
- Stop truncating the description extracted from the README.
|
34
|
+
|
35
|
+
|
36
|
+
## v0.12.0 [2020-03-04] Michael Granger <ged@FaerieMUD.org>
|
37
|
+
|
38
|
+
Improvements:
|
39
|
+
|
40
|
+
- Add fixup tasks, example global rakefile
|
41
|
+
|
4
42
|
|
5
43
|
## v0.11.0 [2020-02-26] Michael Granger <ged@FaerieMUD.org>
|
6
44
|
|
data/README.md
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rake/deveiate'
|
6
|
+
rescue LoadError => err
|
7
|
+
msg = err.respond_to?( :full_message ) ?
|
8
|
+
err.full_message( highlight: true, order: :bottom ) :
|
9
|
+
err.message
|
10
|
+
warn "%p while loading rake-deveiate: %s" % [ err.class, msg ]
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
if defined?( Rake::DevEiate ) && !Rake::DevEiate.already_setup?
|
15
|
+
default_name = File.basename( Dir.pwd ).downcase
|
16
|
+
|
17
|
+
Rake::DevEiate.setup( default_name )
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
|
data/lib/rake/deveiate.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
require 'pathname'
|
5
5
|
require 'etc'
|
6
|
+
require 'tempfile'
|
6
7
|
|
7
8
|
begin
|
8
9
|
gem 'rdoc'
|
@@ -34,7 +35,7 @@ class Rake::DevEiate < Rake::TaskLib
|
|
34
35
|
VERSION_PATTERN = /VERSION\s*=\s*(?<quote>['"])(?<version>\d+(\.\d+){2}.*)\k<quote>/
|
35
36
|
|
36
37
|
# The version of this library
|
37
|
-
VERSION = '0.
|
38
|
+
VERSION = '0.14.1'
|
38
39
|
|
39
40
|
# The server to release to by default
|
40
41
|
DEFAULT_GEMSERVER = 'https://rubygems.org/'
|
@@ -45,6 +46,10 @@ class Rake::DevEiate < Rake::TaskLib
|
|
45
46
|
# The version to use if one cannot be read from the source
|
46
47
|
DEFAULT_VERSION = '0.1.0'
|
47
48
|
|
49
|
+
# Words in the package/gem name that should not be included in deriving paths,
|
50
|
+
# file names, etc.
|
51
|
+
PACKAGE_IGNORE_WORDS = %w[ruby]
|
52
|
+
|
48
53
|
# Paths
|
49
54
|
PROJECT_DIR = Pathname( '.' )
|
50
55
|
|
@@ -72,6 +77,10 @@ class Rake::DevEiate < Rake::TaskLib
|
|
72
77
|
]
|
73
78
|
DEFAULT_PROJECT_FILES.exclude( 'Manifest*.txt' )
|
74
79
|
|
80
|
+
# Environment variable overrides for settings
|
81
|
+
ENV_SETTING_NAME = {
|
82
|
+
version_from: 'VERSION_FROM',
|
83
|
+
}
|
75
84
|
|
76
85
|
|
77
86
|
# The default license for the project in SPDX form: https://spdx.org/licenses
|
@@ -126,22 +135,29 @@ class Rake::DevEiate < Rake::TaskLib
|
|
126
135
|
end
|
127
136
|
|
128
137
|
|
138
|
+
### Returns +true+ if Rake::DevEiate has already been set up.
|
139
|
+
def self::already_setup?
|
140
|
+
Rake::Task.task_defined?( 'deveiate' )
|
141
|
+
end
|
142
|
+
|
129
143
|
|
130
144
|
### Create the devEiate tasks for a gem with the given +name+.
|
131
145
|
def initialize( name, **options, &block )
|
132
146
|
@name = validate_gemname( name )
|
133
147
|
@options = options
|
134
148
|
|
149
|
+
@rakefile = PROJECT_DIR + 'Rakefile'
|
135
150
|
@manifest_file = DEFAULT_MANIFEST_FILE.dup
|
136
151
|
@project_files = self.read_manifest
|
137
152
|
@executables = self.find_executables
|
138
|
-
@version = self.find_version || DEFAULT_VERSION
|
139
153
|
@readme_file = self.find_readme
|
140
154
|
@history_file = self.find_history_file
|
141
155
|
@readme = self.parse_readme
|
142
156
|
@rdoc_files = self.make_rdoc_filelist
|
143
157
|
@cert_files = Rake::FileList[ CERTS_DIR + '*.pem' ]
|
144
158
|
@licenses = [ DEFAULT_LICENSE ]
|
159
|
+
@version_from = env( :version_from, as_pathname: true ) ||
|
160
|
+
LIB_DIR + "%s.rb" % [ version_file_from(name) ]
|
145
161
|
|
146
162
|
@docs_dir = DOCS_DIR.dup
|
147
163
|
|
@@ -152,6 +168,7 @@ class Rake::DevEiate < Rake::TaskLib
|
|
152
168
|
@summary = nil
|
153
169
|
@dependencies = self.find_dependencies
|
154
170
|
|
171
|
+
@version = nil
|
155
172
|
@publish_to = nil
|
156
173
|
@required_ruby_version = nil
|
157
174
|
|
@@ -202,6 +219,14 @@ class Rake::DevEiate < Rake::TaskLib
|
|
202
219
|
# The title of the library for things like docs, gemspec, etc.
|
203
220
|
attr_accessor :title
|
204
221
|
|
222
|
+
##
|
223
|
+
# The pathname of the file to read the version from
|
224
|
+
attr_pathname :version_from
|
225
|
+
|
226
|
+
##
|
227
|
+
# The project's Rakefile
|
228
|
+
attr_pathname :rakefile
|
229
|
+
|
205
230
|
##
|
206
231
|
# The file that will be the main page of documentation
|
207
232
|
attr_pathname :readme_file
|
@@ -304,6 +329,13 @@ class Rake::DevEiate < Rake::TaskLib
|
|
304
329
|
|
305
330
|
### Set up a simple default task
|
306
331
|
def define_default_tasks
|
332
|
+
|
333
|
+
# task used to indicate that rake-deveiate has already been setup once; for
|
334
|
+
# global rakefiles.
|
335
|
+
task :deveiate do
|
336
|
+
# no-op
|
337
|
+
end
|
338
|
+
|
307
339
|
desc "The task that runs by default"
|
308
340
|
task( :default => :spec )
|
309
341
|
|
@@ -403,7 +435,7 @@ class Rake::DevEiate < Rake::TaskLib
|
|
403
435
|
def extract_description
|
404
436
|
parts = self.readme&.parts or return nil
|
405
437
|
desc_para = parts.find {|part| part.is_a?(RDoc::Markup::Paragraph) }&.text or return nil
|
406
|
-
formatter = RDoc::Markup::
|
438
|
+
formatter = RDoc::Markup::ToHtml.new( RDoc::Options.new )
|
407
439
|
html = formatter.convert( desc_para )
|
408
440
|
|
409
441
|
return html.gsub( /<.*?>/, '' ).strip
|
@@ -469,10 +501,17 @@ class Rake::DevEiate < Rake::TaskLib
|
|
469
501
|
end
|
470
502
|
|
471
503
|
|
504
|
+
### Return the project version as a Gem::Version, reading it from the
|
505
|
+
### #version_from file if it's not set yet.
|
506
|
+
def version
|
507
|
+
return @version ||= self.find_version
|
508
|
+
end
|
509
|
+
|
510
|
+
|
472
511
|
### Find the file that contains the VERSION constant and return it as a
|
473
512
|
### Gem::Version.
|
474
513
|
def find_version
|
475
|
-
version_file =
|
514
|
+
version_file = self.version_from
|
476
515
|
|
477
516
|
unless version_file.readable?
|
478
517
|
self.prompt.warn "Version could not be read from %s" % [ version_file ]
|
@@ -631,9 +670,13 @@ class Rake::DevEiate < Rake::TaskLib
|
|
631
670
|
case File.extname( filename )
|
632
671
|
when '.md' then return '#'
|
633
672
|
when '.rdoc' then return '='
|
634
|
-
|
635
|
-
|
673
|
+
when ''
|
674
|
+
if filename == 'Rakefile'
|
675
|
+
return '#'
|
676
|
+
end
|
636
677
|
end
|
678
|
+
|
679
|
+
raise "Don't know what header character is appropriate for %s" % [ filename ]
|
637
680
|
end
|
638
681
|
|
639
682
|
|
@@ -661,6 +704,26 @@ class Rake::DevEiate < Rake::TaskLib
|
|
661
704
|
end
|
662
705
|
|
663
706
|
|
707
|
+
### Yield an IO to the block open to a file that will replace +filename+ if the
|
708
|
+
### block returns successfully.
|
709
|
+
def write_replacement_file( filename, **opts )
|
710
|
+
path = Pathname( filename ).expand_path
|
711
|
+
mode = path.stat.mode
|
712
|
+
owner = path.stat.uid
|
713
|
+
group = path.stat.gid
|
714
|
+
|
715
|
+
tmpfile = Tempfile.create( path.basename.to_s, **opts ) do |fh|
|
716
|
+
yield( fh )
|
717
|
+
|
718
|
+
newfile = Pathname( fh.path ).expand_path
|
719
|
+
newfile.rename( path )
|
720
|
+
|
721
|
+
path.chown( owner, group )
|
722
|
+
path.chmod( mode )
|
723
|
+
end
|
724
|
+
end
|
725
|
+
|
726
|
+
|
664
727
|
### Output debugging information about documentation.
|
665
728
|
def output_documentation_debugging
|
666
729
|
summary = self.extract_summary
|
@@ -736,4 +799,24 @@ class Rake::DevEiate < Rake::TaskLib
|
|
736
799
|
return nil
|
737
800
|
end
|
738
801
|
|
802
|
+
|
803
|
+
### Convenience mapping -- fetch a value for the setting of the given +name+
|
804
|
+
### from the appropriate environment variable. Returns +nil+ if that variable is
|
805
|
+
### undefined or blank.
|
806
|
+
def env( name, as_pathname: false )
|
807
|
+
env_name = ENV_SETTING_NAME[ name ] or return nil
|
808
|
+
val = ENV[ env_name ] or return nil
|
809
|
+
return val unless as_pathname
|
810
|
+
return PROJECT_DIR + val
|
811
|
+
end
|
812
|
+
|
813
|
+
|
814
|
+
### Return the path to the file that should contain the VERSION constant.
|
815
|
+
def version_file_from( name )
|
816
|
+
return name.
|
817
|
+
split( /-/ ).
|
818
|
+
reject {|word| PACKAGE_IGNORE_WORDS.include?(word) }.
|
819
|
+
join( '/' )
|
820
|
+
end
|
821
|
+
|
739
822
|
end # class Rake::DevEiate
|
data/lib/rake/deveiate/checks.rb
CHANGED
@@ -0,0 +1,256 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'rake'
|
5
|
+
require 'hglib'
|
6
|
+
|
7
|
+
require 'rake/deveiate' unless defined?( Rake::DevEiate )
|
8
|
+
|
9
|
+
|
10
|
+
# Fixup and conversion tasks
|
11
|
+
module Rake::DevEiate::Fixup
|
12
|
+
extend Rake::DSL
|
13
|
+
|
14
|
+
|
15
|
+
# Pattern for matching lines in the Manifest that shouldn't be there
|
16
|
+
MANIFEST_CRUFT_LINE = %r{
|
17
|
+
^(?: # Match whole lines
|
18
|
+
changelog
|
19
|
+
)$
|
20
|
+
}xim
|
21
|
+
|
22
|
+
# Pathnames of Bundler-related files
|
23
|
+
BUNDLER_FILES = [
|
24
|
+
Rake::DevEiate::PROJECT_DIR + 'Gemfile',
|
25
|
+
Rake::DevEiate::PROJECT_DIR + 'Gemfile.lock',
|
26
|
+
Rake::DevEiate::PROJECT_DIR + 'Gemfile.devel',
|
27
|
+
Rake::DevEiate::PROJECT_DIR + 'Gemfile.devel.lock',
|
28
|
+
]
|
29
|
+
|
30
|
+
# Pathnames of legacy dependency files
|
31
|
+
LEGACY_DEPSFILES = [
|
32
|
+
Rake::DevEiate::PROJECT_DIR + '.gems',
|
33
|
+
Rake::DevEiate::PROJECT_DIR + '.rvm.gems',
|
34
|
+
]
|
35
|
+
|
36
|
+
# Gems to add to the 'development' group of the deps file
|
37
|
+
DEV_GEMDEPS = %w[
|
38
|
+
rake-deveiate
|
39
|
+
rdoc-generator-fivefish
|
40
|
+
]
|
41
|
+
|
42
|
+
|
43
|
+
### Define fixup tasks
|
44
|
+
def define_tasks
|
45
|
+
super if defined?( super )
|
46
|
+
|
47
|
+
self.define_hoe_fixup_tasks
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
### Set up tasks that check for poor whitespace discipline
|
52
|
+
def define_hoe_fixup_tasks
|
53
|
+
|
54
|
+
desc "Perform various fixup tasks on the current project."
|
55
|
+
task :fixup => 'fixup:all'
|
56
|
+
|
57
|
+
namespace :fixup do
|
58
|
+
|
59
|
+
task :all => [
|
60
|
+
:rakefile,
|
61
|
+
:manifest,
|
62
|
+
:bundler,
|
63
|
+
:depsfiles,
|
64
|
+
]
|
65
|
+
|
66
|
+
desc "Remove hoe from the Rakefile and re-generate it"
|
67
|
+
task :rakefile, &method( :do_fixup_rakefile )
|
68
|
+
|
69
|
+
|
70
|
+
desc "Clean up cruft from the manifest file"
|
71
|
+
task :manifest, &method( :do_fixup_manifest )
|
72
|
+
|
73
|
+
|
74
|
+
desc "Remove Bundler-related files"
|
75
|
+
task :bundler, &method( :do_fixup_bundler )
|
76
|
+
|
77
|
+
|
78
|
+
desc "Fix up dependencies file/s"
|
79
|
+
task :depsfiles, &method( :do_fixup_legacy_depsfiles )
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
task :fixup_debug, &method( :do_fixup_debug )
|
84
|
+
task :debug => :fixup_debug
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
### Task function -- output debugging for fixup tasks.
|
90
|
+
def do_fixup_debug( task, args )
|
91
|
+
fixups = []
|
92
|
+
|
93
|
+
fixups << "De-hoeify the Rakefile" if self.rakefile_needs_hoe_fixup?
|
94
|
+
fixups << "Remove cruft from the manifest" if self.manifest_needs_fixup?
|
95
|
+
fixups << "Remove bundler files" if self.bundler_files_present?
|
96
|
+
fixups << "Convert legacy dependency files" if self.legacy_deps_files_present?
|
97
|
+
|
98
|
+
self.prompt.say( "Fixups available:", color: :bright_green )
|
99
|
+
|
100
|
+
if fixups.empty?
|
101
|
+
self.prompt.say( "None; project looks clean." )
|
102
|
+
else
|
103
|
+
fixups.each do |desc|
|
104
|
+
self.prompt.say "[ ] %s" % [ desc ]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
self.prompt.say( "\n" )
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
### Return +true+ if the Rakefile in the current project directory needs to be
|
113
|
+
### cleaned up.
|
114
|
+
def rakefile_needs_hoe_fixup?
|
115
|
+
return false unless self.rakefile.exist? && !self.rakefile.zero?
|
116
|
+
return self.rakefile.read.split( /^__END__/m, 2 ).first.match?( /hoe/i )
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
### Returns +true+ if the manifest file has crufty lines in it.
|
121
|
+
def manifest_needs_fixup?
|
122
|
+
return false unless self.manifest_file.exist?
|
123
|
+
return self.manifest_file.each_line.any?( MANIFEST_CRUFT_LINE )
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
### Return +true+ if there are Bundler-related files in the project.
|
128
|
+
def bundler_files_present?
|
129
|
+
return BUNDLER_FILES.any?( &:exist? )
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
### Return +true+ if there are legacy dependency files in the project
|
134
|
+
def legacy_deps_files_present?
|
135
|
+
return LEGACY_DEPSFILES.any?( &:exist? )
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
### Replace the current Rakefile with a generated one of it is a Hoe-based one.
|
140
|
+
def do_fixup_rakefile( task, * )
|
141
|
+
unless self.rakefile_needs_hoe_fixup?
|
142
|
+
self.trace "Not a hoe-based Rakefile; skipping"
|
143
|
+
return
|
144
|
+
end
|
145
|
+
|
146
|
+
original = self.rakefile.read
|
147
|
+
|
148
|
+
self.write_replacement_file( self.rakefile, encoding: 'utf-8' ) do |fh|
|
149
|
+
|
150
|
+
self.trace "Re-generating Rakefile from a template"
|
151
|
+
template = Rake::DevEiate::Generate::RAKEFILE_TEMPLATE
|
152
|
+
boilerplate = self.load_and_render_template( template, 'Rakefile' )
|
153
|
+
fh.print( boilerplate )
|
154
|
+
|
155
|
+
self.trace "Appending the old Rakefile contents in an END section"
|
156
|
+
fh.puts
|
157
|
+
fh.puts "__END__"
|
158
|
+
fh.puts
|
159
|
+
fh.print( original )
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
|
164
|
+
### Clean up cruft from the manifest file.
|
165
|
+
def do_fixup_manifest( task, * )
|
166
|
+
unless self.manifest_needs_fixup?
|
167
|
+
self.trace "Manifest is clean; skipping"
|
168
|
+
return
|
169
|
+
end
|
170
|
+
|
171
|
+
self.write_replacement_file( self.manifest_file, encoding: 'utf-8' ) do |fh|
|
172
|
+
self.trace "Removing cruft from the manifest"
|
173
|
+
self.manifest_file.each_line do |line|
|
174
|
+
next if line.match?( MANIFEST_CRUFT_LINE )
|
175
|
+
fh.puts( line )
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
|
181
|
+
### Remove any bundler-related files.
|
182
|
+
def do_fixup_bundler( task, * )
|
183
|
+
BUNDLER_FILES.each do |file|
|
184
|
+
next unless file.exist?
|
185
|
+
self.trace "Removing bundler file %s..." % [ file ]
|
186
|
+
self.hg.rm( file, force: true )
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
|
191
|
+
### Convert legacy dependency files to the newer form.
|
192
|
+
def do_fixup_legacy_depsfiles( task, * )
|
193
|
+
unless self.legacy_deps_files_present?
|
194
|
+
self.trace "No legacy dependency files; skipping"
|
195
|
+
return
|
196
|
+
end
|
197
|
+
|
198
|
+
new_depsfile = Rake::DevEiate::GEMDEPS_FILE
|
199
|
+
|
200
|
+
LEGACY_DEPSFILES.each do |depsfile|
|
201
|
+
next unless depsfile.readable?
|
202
|
+
|
203
|
+
if new_depsfile.exist?
|
204
|
+
self.hg.rm( depsfile )
|
205
|
+
else
|
206
|
+
depnames = depsfile.each_line.map do |line|
|
207
|
+
line.split( /\s+/, 2 ).first
|
208
|
+
end
|
209
|
+
|
210
|
+
raise "Failed to read dependencies from %s!" % [ depsfile ] if depnames.empty?
|
211
|
+
|
212
|
+
if self.hg.tracked?( depsfile )
|
213
|
+
self.trace "Recording move of %s to %s" % [ depsfile, new_depsfile ]
|
214
|
+
self.hg.mv( depsfile, new_depsfile )
|
215
|
+
else
|
216
|
+
depsfile.rename( new_depsfile )
|
217
|
+
end
|
218
|
+
|
219
|
+
newest_deps = self.find_latest_versions( *depnames ).
|
220
|
+
reject {|tuple| tuple.name.include?('hoe') }
|
221
|
+
dev_deps = self.find_latest_versions( *DEV_GEMDEPS )
|
222
|
+
|
223
|
+
self.write_replacement_file( new_depsfile, encoding: 'utf-8' ) do |fh|
|
224
|
+
fh.puts "source 'https://rubygems.org/'"
|
225
|
+
fh.puts
|
226
|
+
|
227
|
+
newest_deps.each do |dep|
|
228
|
+
fh.puts "gem '%s', '%s'" %
|
229
|
+
[ dep.name, dep.version.approximate_recommendation ]
|
230
|
+
end
|
231
|
+
|
232
|
+
fh.puts
|
233
|
+
fh.puts "group :development do"
|
234
|
+
dev_deps.each do |dep|
|
235
|
+
fh.puts "\tgem '%s', '%s'" %
|
236
|
+
[ dep.name, dep.version.approximate_recommendation ]
|
237
|
+
end
|
238
|
+
fh.puts "end"
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
|
245
|
+
### Find the latest version for the specified +gemnames+ and return them as Gem::Specifiations
|
246
|
+
def find_latest_versions( *gemnames )
|
247
|
+
pattern = /\A#{Regexp.union(gemnames)}\Z/
|
248
|
+
fetcher = Gem::SpecFetcher.fetcher
|
249
|
+
return fetcher.
|
250
|
+
detect( :latest ) {|tuple| pattern =~ tuple.name && tuple.platform == 'ruby' }.
|
251
|
+
transpose.first
|
252
|
+
end
|
253
|
+
|
254
|
+
end # module Rake::DevEiate::Fixups
|
255
|
+
|
256
|
+
|
@@ -12,6 +12,7 @@ module Rake::DevEiate::Generate
|
|
12
12
|
|
13
13
|
|
14
14
|
# Template files
|
15
|
+
RAKEFILE_TEMPLATE = 'Rakefile.erb'
|
15
16
|
README_TEMPLATE = 'README.erb'
|
16
17
|
HISTORY_TEMPLATE = 'History.erb'
|
17
18
|
|
@@ -27,12 +28,14 @@ module Rake::DevEiate::Generate
|
|
27
28
|
def define_tasks
|
28
29
|
super if defined?( super )
|
29
30
|
|
31
|
+
file( self.rakefile.to_s )
|
30
32
|
file( self.readme_file.to_s )
|
31
33
|
file( self.history_file.to_s )
|
32
34
|
file( self.manifest_file.to_s )
|
33
35
|
file( RUBY_VERSION_FILE.to_s )
|
34
36
|
file( GEMSET_FILE.to_s )
|
35
37
|
|
38
|
+
task( self.rakefile, &method(:do_generate_rakefile) )
|
36
39
|
task( self.readme_file, &method(:do_generate_readme_file) )
|
37
40
|
task( self.history_file, &method(:do_generate_history_file) )
|
38
41
|
task( self.manifest_file, &method(:do_generate_manifest_file) )
|
@@ -41,6 +44,7 @@ module Rake::DevEiate::Generate
|
|
41
44
|
|
42
45
|
desc "Generate any missing project files."
|
43
46
|
task :generate => [
|
47
|
+
self.rakefile,
|
44
48
|
self.readme_file,
|
45
49
|
self.history_file,
|
46
50
|
self.manifest_file,
|
@@ -48,11 +52,26 @@ module Rake::DevEiate::Generate
|
|
48
52
|
GEMSET_FILE,
|
49
53
|
]
|
50
54
|
|
55
|
+
# Abstract named tasks; mostly for invoking programmatically
|
56
|
+
namespace :generate do
|
57
|
+
task :rakefile => self.rakefile
|
58
|
+
task :readme => self.readme_file
|
59
|
+
task :history_file => self.history_file
|
60
|
+
task :manifest => self.manifest_file
|
61
|
+
task :ruby_version_file => RUBY_VERSION_FILE
|
62
|
+
task :gemset_file => GEMSET_FILE
|
63
|
+
end
|
64
|
+
|
51
65
|
desc "Diff the manifest file against the default set of project files."
|
52
66
|
task( :diff_manifest, &method(:do_diff_manifest) )
|
53
67
|
end
|
54
68
|
|
55
69
|
|
70
|
+
### Generate a Rakefile if one doesn't already exist. Error if one does.
|
71
|
+
def do_generate_rakefile( task, args )
|
72
|
+
self.generate_from_template( task.name, RAKEFILE_TEMPLATE )
|
73
|
+
end
|
74
|
+
|
56
75
|
|
57
76
|
### Generate a README file if one doesn't already exist. Error if one does.
|
58
77
|
def do_generate_readme_file( task, args )
|
@@ -110,11 +129,11 @@ module Rake::DevEiate::Generate
|
|
110
129
|
def generate_from_template( filename, template_path )
|
111
130
|
self.prompt.ok "Generating #{filename}..."
|
112
131
|
File.open( filename, FILE_CREATION_FLAGS, 0644, encoding: 'utf-8' ) do |io|
|
113
|
-
result = self.load_and_render_template( template_path )
|
132
|
+
result = self.load_and_render_template( template_path, filename )
|
114
133
|
io.print( result )
|
115
134
|
end
|
116
135
|
end
|
117
136
|
|
118
|
-
end # module Rake::DevEiate::
|
137
|
+
end # module Rake::DevEiate::Generate
|
119
138
|
|
120
139
|
|
data/lib/rake/deveiate/hg.rb
CHANGED
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake-deveiate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.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
|
- |
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
jBZSA+N+xUTgUWpXjjwsLZjzJkhWATJWq+krNXcqpwXo6HsjmdUxoFMt63RBb+sI
|
35
35
|
XrxOxp8o0uOkU7FdLSGsyqJ2LzsR4obN
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2020-
|
37
|
+
date: 2020-10-01 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: rake
|
@@ -78,20 +78,40 @@ dependencies:
|
|
78
78
|
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '3.8'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: simplecov
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0.18'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0.18'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
96
|
name: hglib
|
83
97
|
requirement: !ruby/object:Gem::Requirement
|
84
98
|
requirements:
|
85
99
|
- - "~>"
|
86
100
|
- !ruby/object:Gem::Version
|
87
|
-
version: '0.
|
101
|
+
version: '0.10'
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.10.1
|
88
105
|
type: :runtime
|
89
106
|
prerelease: false
|
90
107
|
version_requirements: !ruby/object:Gem::Requirement
|
91
108
|
requirements:
|
92
109
|
- - "~>"
|
93
110
|
- !ruby/object:Gem::Version
|
94
|
-
version: '0.
|
111
|
+
version: '0.10'
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 0.10.1
|
95
115
|
- !ruby/object:Gem::Dependency
|
96
116
|
name: tty-prompt
|
97
117
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,14 +132,14 @@ dependencies:
|
|
112
132
|
requirements:
|
113
133
|
- - "~>"
|
114
134
|
- !ruby/object:Gem::Version
|
115
|
-
version: '0.
|
135
|
+
version: '0.6'
|
116
136
|
type: :runtime
|
117
137
|
prerelease: false
|
118
138
|
version_requirements: !ruby/object:Gem::Requirement
|
119
139
|
requirements:
|
120
140
|
- - "~>"
|
121
141
|
- !ruby/object:Gem::Version
|
122
|
-
version: '0.
|
142
|
+
version: '0.6'
|
123
143
|
- !ruby/object:Gem::Dependency
|
124
144
|
name: tty-table
|
125
145
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,7 +183,9 @@ dependencies:
|
|
163
183
|
- !ruby/object:Gem::Version
|
164
184
|
version: '0.4'
|
165
185
|
description: This is a collection of Rake tasks I use for development. I distribute
|
166
|
-
them as a gem mostly so people
|
186
|
+
them as a gem mostly so people who wish to contribute to the other Open Source libraries
|
187
|
+
I maintain can do so easily, but of course you're welcome to use them yourself
|
188
|
+
if you find them useful.
|
167
189
|
email:
|
168
190
|
- ged@FaerieMUD.org
|
169
191
|
executables: []
|
@@ -174,9 +196,12 @@ files:
|
|
174
196
|
- README.md
|
175
197
|
- data/rake-deveiate/History.erb
|
176
198
|
- data/rake-deveiate/README.erb
|
199
|
+
- data/rake-deveiate/Rakefile.erb
|
200
|
+
- data/rake-deveiate/global.rake
|
177
201
|
- lib/rake/deveiate.rb
|
178
202
|
- lib/rake/deveiate/checks.rb
|
179
203
|
- lib/rake/deveiate/docs.rb
|
204
|
+
- lib/rake/deveiate/fixup.rb
|
180
205
|
- lib/rake/deveiate/gem_dep_finder.rb
|
181
206
|
- lib/rake/deveiate/gemspec.rb
|
182
207
|
- lib/rake/deveiate/generate.rb
|
@@ -191,7 +216,9 @@ metadata:
|
|
191
216
|
homepage_uri: https://hg.sr.ht/~ged/rake-deveiate
|
192
217
|
documentation_uri: https://deveiate.org/code/rake-deveiate/
|
193
218
|
changelog_uri: https://deveiate.org/code/rake-deveiate/History_md.html
|
194
|
-
|
219
|
+
source_uri: https://hg.sr.ht/~ged/rake-deveiate/browse
|
220
|
+
bug_tracker_uri: https://todo.sr.ht/~ged/rake-deveiate/browse
|
221
|
+
post_install_message:
|
195
222
|
rdoc_options: []
|
196
223
|
require_paths:
|
197
224
|
- lib
|
@@ -207,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
234
|
version: '0'
|
208
235
|
requirements: []
|
209
236
|
rubygems_version: 3.1.2
|
210
|
-
signing_key:
|
237
|
+
signing_key:
|
211
238
|
specification_version: 4
|
212
239
|
summary: This is a collection of Rake tasks I use for development.
|
213
240
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|