revision 1.5.2 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.org +80 -59
- data/lib/revision/cli.rb +16 -0
- data/lib/revision/md5.rb +51 -0
- data/lib/revision/releasable.rb +45 -37
- data/lib/revision/version.rb +10 -1
- data/releasables.yaml +11 -0
- data/revision.gemspec +11 -0
- metadata +92 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2eb61c791c5f9c8e8261578dcaa580aca1a7f8a02c683c0e649f1ed34403ac39
|
4
|
+
data.tar.gz: 70262dc4433fd6c894a74b100c81142836dd059a9f5264688eff7a0286137a3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3fa4cd59ec2193032cd8a414445c3ba642496bbd36952595dae0c16c52ebd0b36804eec7f5dbc55804f3020d43ac9b69894a7ac38ebfa04dd71b21f1588a991
|
7
|
+
data.tar.gz: aa4f7e424425b1b22f80fac69f2b6d885cb63eb02ce4f080047528b5796a7482b0fef19ecae72192dce7b780593b87ff7c35ca0b7eed64a340761cf44d9b7dc2
|
data/.gitignore
CHANGED
data/README.org
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
# or alternatively #+SETUPFILE: theme-readtheorg.setup
|
24
24
|
|
25
25
|
* Overview
|
26
|
-
This gem automates revision management for source projects. The tool is language agnostic (used for C, ruby and matlab projects, to date -- though you're probably better off using bundler for ruby projects). It supports per-project configuration using a yaml-format file called =releasables.yaml= located at the project root.
|
26
|
+
This gem automates revision management for source projects. The tool is language agnostic (used for C, ruby, python and matlab projects, to date -- though you're probably better off using bundler for ruby projects). It supports per-project configuration using a yaml-format file called =releasables.yaml= located at the project root.
|
27
27
|
|
28
28
|
It currently supports the following functionality
|
29
29
|
- Manage 3-component revision IDs embedded natively in source file
|
@@ -31,9 +31,10 @@ It currently supports the following functionality
|
|
31
31
|
- Automatically prompts for a changelog entry each time a revision identifier is incremented
|
32
32
|
- Optionally commits and tags changes to a git repo after an update to the revision ID
|
33
33
|
- Builds and archives projects in zip format (including release notes and arbitrary release artefacts defined
|
34
|
-
- Deploys
|
34
|
+
- Deploys build artefacts to one or more defined (local or remote) filesystem locations
|
35
|
+
- Automatically generates md5sums when archiving or deploying build artefacts
|
35
36
|
|
36
|
-
|
37
|
+
Hacked on sporadically to allow me to tag, archive and deploy projects in multiple languages in a consistent fashion.
|
37
38
|
|
38
39
|
* Installation
|
39
40
|
** Dependencies
|
@@ -101,7 +102,7 @@ Run the executable with no arguments to get usage instructions in your console w
|
|
101
102
|
|
102
103
|
#+RESULTS:
|
103
104
|
#+begin_example
|
104
|
-
Loading releasable definitions from /home/cormacc/
|
105
|
+
Loading releasable definitions from /home/cormacc/nmd/gem/revision/releasables.yaml ...
|
105
106
|
Commands:
|
106
107
|
revision --version, -v # print the version
|
107
108
|
revision archive # Archive releasable(s)
|
@@ -111,6 +112,7 @@ Commands:
|
|
111
112
|
revision help [COMMAND] # Describe available commands or one specific command
|
112
113
|
revision info # Display info for all defined releasables
|
113
114
|
revision major # Increment major revision index
|
115
|
+
revision md5 # Compute md5sums for current build artefacts
|
114
116
|
revision minor # Increment minor revision index
|
115
117
|
revision package # Build and archive releasables
|
116
118
|
revision patch # Increment patch revision index
|
@@ -166,36 +168,39 @@ The lines beginning with '#' are explanatory comments
|
|
166
168
|
#+END_NOTE
|
167
169
|
|
168
170
|
#+BEGIN_SRC yaml
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
171
|
+
:releasables
|
172
|
+
- :id: my_releasable
|
173
|
+
:revision:
|
174
|
+
# Source file containing the revision identifier
|
175
|
+
# This will also include changelog entries, embedded as comments
|
176
|
+
:src: lib/revision/version.rb
|
177
|
+
# Regex matching the source revision identifier. Must contain the following named capture groups
|
178
|
+
# - major, minor, patch :: Numeric (uint) sequences representing the three revision ID components
|
179
|
+
# - sep1, sep2 :: the characters separating the revision components
|
180
|
+
# - prefix, postfix :: sufficient syntactic context to match the revision ID uniquely
|
181
|
+
# N.B. this regex matches the version ID from the standard bundler gem skeleton,
|
182
|
+
# e.g. VERSION = "1.1.0"
|
183
|
+
:regex: (?<prefix>VERSION = ")(?<major>\d+)(?<sep1>\.)(?<minor>\d+)(?<sep2>\.)(?<patch>\d+)(?<postfix>")
|
184
|
+
# Comment char for the project language -- prefixed to each line of changelog entries
|
185
|
+
# Quotes only necessary here to prevent # being interpreted as the beginning of a YAML comment
|
186
|
+
:comment_prefix: "#"
|
187
|
+
# Sequence of build steps -- each item should be a valid shell command, prefixed with the YAML sequence item token, '- '
|
188
|
+
:build_steps:
|
189
|
+
- bundle exec rake install
|
190
|
+
# Sequence defining the files (build artefacts) to package in the release archive.
|
191
|
+
# Each artefact definition must include a :src: key/value pair.
|
192
|
+
# An optional :dest: value may be provided to rename the file during packaging, or just (as in the first entry below)
|
193
|
+
# to flatten the folder structure.
|
194
|
+
# Any <VER> (or <REV>) in the :src: or :dest: placeholders wil be replaced with the current revision ID
|
195
|
+
# The revision archive will also include the revision history extracted as a text file
|
196
|
+
:artefacts:
|
197
|
+
# A binary artefact
|
198
|
+
- :src: pkg/revision-<VER>.gem
|
199
|
+
:dest: revision-<VER>.gem
|
200
|
+
# ':dest:' defaults to the string specified for ':src:' if not specified explicitly
|
201
|
+
# md5sums are generated by default for each artefact -- the ':md5:' option allows this to be disabled per-artefact
|
202
|
+
- :src: README.org
|
203
|
+
:md5: false
|
199
204
|
#+END_SRC
|
200
205
|
|
201
206
|
**** TODO (or at least consider) add support for overridable defaults
|
@@ -213,32 +218,32 @@ managing some embedded C projects, and the default values reflect this.
|
|
213
218
|
#+END_NOTE
|
214
219
|
|
215
220
|
#+BEGIN_SRC yaml
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
221
|
+
:releasables:
|
222
|
+
- :id: mbt_cd_firmware
|
223
|
+
:revision:
|
224
|
+
:src: src/FirmwareRevision.c
|
225
|
+
:build_steps:
|
226
|
+
- make --jobs=8 -f Makefile CONF=bootloadable
|
227
|
+
:artefacts:
|
228
|
+
- :src: dist/bootloadable/production/firmware.production.hex
|
229
|
+
:dest: mbt_cd_firmware_v<REV>.bootloadable.hex
|
230
|
+
- :src: dist/default/production/firmware.production.hex
|
231
|
+
:dest: mbt_cd_firmware_v<REV>.standalone.hex
|
227
232
|
#+END_SRC
|
228
233
|
|
229
234
|
**** Ruby project
|
230
235
|
|
231
236
|
#+BEGIN_SRC yaml
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
237
|
+
:releasables:
|
238
|
+
- :id: revision
|
239
|
+
:revision:
|
240
|
+
:src: lib/revision/version.rb
|
241
|
+
:regex: (?<prefix>VERSION = ")(?<major>\d+)(?<sep1>\.)(?<minor>\d+)(?<sep2>\.)(?<patch>\d+)(?<postfix>")
|
242
|
+
:comment_prefix: "#"
|
243
|
+
:build_steps:
|
244
|
+
- bundle exec rake install
|
245
|
+
:artefacts:
|
246
|
+
- :src: pkg/revision-<VER>.gem
|
242
247
|
#+END_SRC
|
243
248
|
|
244
249
|
*** Heirarchical project
|
@@ -250,7 +255,7 @@ at that root could include them as follows...
|
|
250
255
|
#+BEGIN_SRC yaml
|
251
256
|
:releasables:
|
252
257
|
- :folder: examples/c
|
253
|
-
|
258
|
+
- :folder: examples/ruby
|
254
259
|
#+END_SRC
|
255
260
|
|
256
261
|
**** TODO consider supporting a higher-level aggregate revision ID
|
@@ -260,16 +265,32 @@ at that root could include them as follows...
|
|
260
265
|
:src: release_log.txt
|
261
266
|
:releasables:
|
262
267
|
- :folder: examples/c
|
263
|
-
|
268
|
+
- :folder: examples/ruby
|
264
269
|
#+END_SRC
|
265
270
|
|
266
271
|
* Development
|
267
272
|
|
273
|
+
** Environment
|
268
274
|
After checking out the repo, run =bin/setup= to install dependencies. Then, run =rake spec= to run the tests. You can also run =bin/console= for an interactive prompt that will allow you to experiment.
|
269
275
|
|
270
|
-
|
276
|
+
** Installation from source
|
277
|
+
To install this gem from source on your local machine, run =bundle exec rake install= from the repository root.
|
278
|
+
|
279
|
+
** Incrementing release versions
|
280
|
+
You can do this using the gem, by entering one of the following commands at the repository root
|
281
|
+
|
282
|
+
| Command | Effect |
|
283
|
+
|------------------+----------------------------------------------|
|
284
|
+
| =revision patch= | Patch version increment, e.g. 1.1.0 -> 1.1.1 |
|
285
|
+
| =revision minor= | Patch version increment, e.g. 1.1.1 -> 1.2.0 |
|
286
|
+
| =revision major= | Major version increment, e.g. 1.2.0 -> 2.0.0 |
|
287
|
+
|
288
|
+
You'll be prompted to rebuild the gem, commit changes to the git repo and add a revision tag to the commit.
|
289
|
+
|
290
|
+
Alternatively, manually update the version number in =version.rb= and rebuild/install locally using =bundle exec rake install=
|
271
291
|
|
272
|
-
|
292
|
+
** Deploying to rubygems
|
293
|
+
=bundle exec rake release=, will create a git tag for the version (if not, push git commits and tags, and push the =.gem= file to [rubygems.org](https://rubygems.org).
|
273
294
|
|
274
295
|
* Contributing
|
275
296
|
|
data/lib/revision/cli.rb
CHANGED
@@ -4,6 +4,7 @@ require_relative 'releasable'
|
|
4
4
|
require_relative 'info'
|
5
5
|
require_relative 'errors'
|
6
6
|
require_relative 'version'
|
7
|
+
require_relative 'md5'
|
7
8
|
|
8
9
|
module Revision
|
9
10
|
class CLI < Thor
|
@@ -105,6 +106,21 @@ module Revision
|
|
105
106
|
select_one.tag
|
106
107
|
end
|
107
108
|
|
109
|
+
desc 'md5', 'Compute md5sums for current build artefacts'
|
110
|
+
method_option :file, :aliases => "-f", :type => :string, :default => nil ,:desc => "File to md5sum (defaults to build artefacts defined in yaml)"
|
111
|
+
def md5
|
112
|
+
r = select_one
|
113
|
+
files = options[:file].nil? ?
|
114
|
+
r.artefacts.select { |a| a[:md5]==true }.map { |a| a[:src] } :
|
115
|
+
[options[:file]]
|
116
|
+
raise "No files specified" unless files.length
|
117
|
+
puts "Calculating md5sum for files #{files}"
|
118
|
+
for f in files
|
119
|
+
md5sum = Revision::MD5.from_file(f)
|
120
|
+
puts "#{md5sum}"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
108
124
|
private
|
109
125
|
|
110
126
|
def id_options
|
data/lib/revision/md5.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'digest'
|
2
|
+
|
3
|
+
class Revision::MD5
|
4
|
+
|
5
|
+
READ_CHUNK_KB = 1024
|
6
|
+
FILENAME_EXTENSION = "md5"
|
7
|
+
|
8
|
+
attr_reader :root, :filename
|
9
|
+
|
10
|
+
def self.from_file(filepath, filename: nil)
|
11
|
+
raise "File #{filepath} not found" unless File.exist?(filepath)
|
12
|
+
filename ||= File.basename(filepath)
|
13
|
+
root = File.dirname(filepath)
|
14
|
+
stream = File.open(filepath, 'rb')
|
15
|
+
new(stream, filename, root: root)
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(ioreader, filename, root: nil)
|
19
|
+
root ||= Dir.getwd
|
20
|
+
@reader = ioreader
|
21
|
+
@root = root
|
22
|
+
@filename = filename
|
23
|
+
end
|
24
|
+
|
25
|
+
def calc
|
26
|
+
md5 = Digest::MD5.new
|
27
|
+
bytes_per_chunk = READ_CHUNK_KB*1024
|
28
|
+
while chunk = @reader.read(bytes_per_chunk)
|
29
|
+
md5 << chunk
|
30
|
+
end
|
31
|
+
md5.hexdigest
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
<<~EOT
|
36
|
+
#{calc} #{@filename}
|
37
|
+
EOT
|
38
|
+
end
|
39
|
+
|
40
|
+
def md5filename
|
41
|
+
"#{@filename}.#{FILENAME_EXTENSION}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def write(filepath: nil)
|
45
|
+
filepath ||= File.join(@root, md5filename)
|
46
|
+
filename = File.basename(filepath)
|
47
|
+
File.open(filepath, "w") { |f| f.write "#{calc} #{filename}" }
|
48
|
+
filepath
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/lib/revision/releasable.rb
CHANGED
@@ -68,7 +68,8 @@ module Revision
|
|
68
68
|
# Legacy definition syntax compatibility
|
69
69
|
@build_def = config[:build] ? config[:build] : { environment: { variables: {}}, steps: config[:build_steps]}
|
70
70
|
@artefacts = config[:artefacts] || []
|
71
|
-
@artefacts.each { |a| a[:dest] ||= a[:src] } unless @artefacts.nil? || @artefacts.empty?
|
71
|
+
@artefacts.each { |a| a[:dest] ||= File.basename(a[:src]) } unless @artefacts.nil? || @artefacts.empty?
|
72
|
+
# @artefacts.each { |a| a[:md5] = true if a[:md5].nil? } unless @artefacts.nil? || @artefacts.empty?
|
72
73
|
@config = config
|
73
74
|
end
|
74
75
|
|
@@ -166,7 +167,6 @@ module Revision
|
|
166
167
|
puts commit_message
|
167
168
|
system("git commit -a -m \"#{commit_message}\"")
|
168
169
|
puts "Tagging as #{tag_id}"
|
169
|
-
puts "git tag -a #{tag_id} -m \"#{tag_annotation}\""
|
170
170
|
system("git tag -a #{tag_id} -m \"#{tag_annotation}\"")
|
171
171
|
end
|
172
172
|
end
|
@@ -188,46 +188,61 @@ module Revision
|
|
188
188
|
"#{@id}_revision_history_v#{@revision}.txt"
|
189
189
|
end
|
190
190
|
|
191
|
-
def
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
191
|
+
def interp_rev(string)
|
192
|
+
string.gsub(REVISION_PLACEHOLDER, @revision.to_s)
|
193
|
+
end
|
194
|
+
|
195
|
+
def normalise_artefact(a)
|
196
|
+
src_norm = interp_rev(a[:src])
|
197
|
+
a_norm = {
|
198
|
+
src: src_norm,
|
199
|
+
dest: a[:dest].nil? ? File.basename(src_norm) : interp_rev(a[:dest]),
|
200
|
+
md5: a[:md5].nil? ? true : a[:md5]
|
201
|
+
}
|
202
|
+
if Gem.win_platform? && !a_norm[:src].end_with?('.exe') && File.exist?(File.join(@root, a_norm[:src] + '.exe'))
|
203
|
+
puts "... windows platform -- appending '.exe' ('#{a_norm[:src]}' -> '#{a_norm[:src]}.exe')"
|
204
|
+
a_norm[:src] += '.exe'
|
205
|
+
a_norm[:dest] += '.exe' unless a_norm[:dest].end_with?('.exe')
|
204
206
|
end
|
205
|
-
|
207
|
+
a_norm
|
208
|
+
end
|
209
|
+
|
210
|
+
def artefacts
|
211
|
+
@artefacts.map { |a| normalise_artefact(a)}
|
206
212
|
end
|
207
213
|
|
208
214
|
def archive
|
209
215
|
puts "Archiving #{@artefacts.length} build artefacts as #{archive_name}..."
|
210
|
-
amap = artefact_map
|
211
216
|
if File.exist?(archive_name)
|
212
217
|
puts "... deleting existing archive"
|
213
218
|
File.delete(archive_name)
|
214
219
|
end
|
215
220
|
Zip::File.open(archive_name, Zip::File::CREATE) do |zipfile|
|
216
|
-
|
217
|
-
|
218
|
-
#
|
219
|
-
|
220
|
-
|
221
|
+
zip_entries = artefacts
|
222
|
+
zip_entries.each.with_index(1) do |a, idx|
|
223
|
+
puts "... (#{idx}/#{zip_entries.length}) #{a[:dest]} :: <= #{a[:src]}"
|
224
|
+
zipfile.add(a[:dest], a[:src])
|
225
|
+
if a[:md5]
|
226
|
+
md5name = "#{a[:dest]}.md5"
|
227
|
+
puts "... (#{idx}/#{zip_entries.length}) #{a[:dest]} :: embedding md5sum (#{md5name})"
|
228
|
+
zipfile.get_output_stream(md5name) { |os| os.write("#{MD5.from_file(a[:src])}")}
|
229
|
+
else
|
230
|
+
puts "... (#{idx}/#{zip_entries.length}) #{a[:dest]} :: no md5sum required"
|
231
|
+
end
|
221
232
|
end
|
222
233
|
puts "... embedding revision history as #{changelog_name} "
|
223
234
|
zipfile.get_output_stream(changelog_name) { |os| output_changelog(os)}
|
224
235
|
end
|
236
|
+
archive_md5 = MD5.from_file(archive_name)
|
237
|
+
puts "... generating archive md5sum as #{archive_md5.md5filename} "
|
238
|
+
archive_md5.write
|
225
239
|
|
226
240
|
if @config.dig(:archive)
|
227
241
|
archive_root = File.expand_path(@config[:archive])
|
228
242
|
puts "... moving #{archive_name} to #{archive_root}"
|
229
243
|
FileUtils.mkdir_p(archive_root)
|
230
244
|
FileUtils.mv(archive_name, archive_root)
|
245
|
+
FileUtils.mv(archive_md5.md5filename, archive_root)
|
231
246
|
end
|
232
247
|
end
|
233
248
|
|
@@ -245,10 +260,6 @@ module Revision
|
|
245
260
|
|
246
261
|
raise Errors::NotSpecified.new(':deploy') if destinations.empty?
|
247
262
|
|
248
|
-
if @config.dig(:deploy, :pre)
|
249
|
-
exec_pipeline('deploy (pre)', @config[:deploy][:pre])
|
250
|
-
end
|
251
|
-
|
252
263
|
destinations.each do |d|
|
253
264
|
destination = File.expand_path(d[:dest])
|
254
265
|
|
@@ -256,21 +267,23 @@ module Revision
|
|
256
267
|
exec_pipeline('deploy (pre / #{d[:dest]})', d[:pre])
|
257
268
|
end
|
258
269
|
|
259
|
-
puts "Deploying #{
|
270
|
+
puts "Deploying #{artefacts.length} build artefacts to #{destination}..."
|
260
271
|
if not File.exist?(destination)
|
261
272
|
puts "... folder not found -> creating ... '#{destination}'"
|
262
273
|
FileUtils.mkdir_p(destination)
|
263
274
|
end
|
264
|
-
|
265
|
-
|
266
|
-
src
|
267
|
-
|
275
|
+
artefacts.each.with_index(1) do |a, idx|
|
276
|
+
# src, dest = entry
|
277
|
+
src = File.join(@root,a[:src])
|
278
|
+
dest = destination.empty? ? a[:dest] : File.join(destination, a[:dest])
|
279
|
+
puts "... (#{idx}/#{artefacts.length}) #{src} => #{dest}"
|
268
280
|
if File.exist?(dest)
|
269
281
|
puts "... deleting existing '#{dest}' ..."
|
270
282
|
FileUtils.rm_rf(dest)
|
271
283
|
end
|
272
|
-
puts "... deploying '#{src}' -> '#{dest}"
|
284
|
+
puts "... deploying '#{src}' -> '#{dest}'"
|
273
285
|
FileUtils.cp_r(src,dest)
|
286
|
+
puts "... writing md5sum for '#{dest}' to '#{MD5.from_file(dest).write}'" if a[:md5]
|
274
287
|
end
|
275
288
|
File.open(File.join(destination,changelog_name),'w') { |f| output_changelog(f)}
|
276
289
|
|
@@ -279,11 +292,6 @@ module Revision
|
|
279
292
|
end
|
280
293
|
end
|
281
294
|
|
282
|
-
|
283
|
-
|
284
|
-
if @config.dig(:deploy, :post)
|
285
|
-
exec_pipeline('deploy (post)', @config[:deploy][:post])
|
286
|
-
end
|
287
295
|
end
|
288
296
|
|
289
297
|
def package
|
data/lib/revision/version.rb
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
# Defines the revision ID for the revision gem
|
2
2
|
module Revision
|
3
|
-
VERSION = "1.
|
3
|
+
VERSION = "1.6.1".freeze
|
4
4
|
end
|
5
5
|
|
6
6
|
# <BEGIN CHANGELOG>
|
7
7
|
#
|
8
|
+
# Version 1.6.1 (31 Aug 2022)
|
9
|
+
# - Fixed logging error preventing windows exe creation
|
10
|
+
#
|
11
|
+
# Version 1.6.0 (01 Dec 2021)
|
12
|
+
# - New feature: Automated MD5sum generation during 'archive' and 'deploy' tasks
|
13
|
+
#
|
14
|
+
# Version 1.5.3 (26 Oct 2021)
|
15
|
+
# - Multiple deployment destinations bugfix -- only last destination was being used.
|
16
|
+
#
|
8
17
|
# Version 1.5.2 (10 Jun 2020)
|
9
18
|
# - Uprevving around undeletable git tag
|
10
19
|
#
|
data/releasables.yaml
CHANGED
@@ -5,6 +5,17 @@
|
|
5
5
|
:regex: (?<prefix>VERSION = ")(?<major>\d+)(?<sep1>\.)(?<minor>\d+)(?<sep2>\.)(?<patch>\d+)(?<postfix>".freeze)
|
6
6
|
:comment_prefix: "#"
|
7
7
|
:build_steps:
|
8
|
+
- mkdir -p test-output/2
|
8
9
|
- bundle exec rake install
|
10
|
+
#Define 3 build artefacts as test cases for 'deploy' and 'archive' tasks
|
11
|
+
#Expect MD5 file to be generated by default for first entry (where not specified explicitly)
|
9
12
|
:artefacts:
|
10
13
|
- :src: pkg/revision-<VER>.gem
|
14
|
+
- :src: README.org
|
15
|
+
:md5: false
|
16
|
+
- :src: Rakefile
|
17
|
+
:md5: true
|
18
|
+
#Define two deployment destinations to verify multiple deployments work as intended
|
19
|
+
:deploy:
|
20
|
+
- :dest: ./test-output
|
21
|
+
- :dest: ./test-output/2
|
data/revision.gemspec
CHANGED
@@ -28,4 +28,15 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency "rake", "~> 13.0"
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
30
30
|
spec.add_development_dependency "pry"
|
31
|
+
#emacs ruby layer deps...
|
32
|
+
#...lsp backend
|
33
|
+
spec.add_development_dependency "steep"
|
34
|
+
spec.add_development_dependency "solargraph"
|
35
|
+
#...robe backend
|
36
|
+
#....watch this space
|
37
|
+
#...generic
|
38
|
+
spec.add_development_dependency "ruby_parser"
|
39
|
+
spec.add_development_dependency "rubocop"
|
40
|
+
spec.add_development_dependency "prettier"
|
41
|
+
spec.add_development_dependency "seeing_is_believing"
|
31
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: revision
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cormac Cannon
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -94,10 +94,94 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: steep
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: solargraph
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: ruby_parser
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: prettier
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: seeing_is_believing
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
97
181
|
description: Updates project revision identifiers in software source files and associated
|
98
182
|
change log. Can also build and package project archives as a zip and optionally
|
99
183
|
commit, tag and push to a Git repo.
|
100
|
-
email:
|
184
|
+
email:
|
101
185
|
executables:
|
102
186
|
- revision
|
103
187
|
extensions: []
|
@@ -117,6 +201,7 @@ files:
|
|
117
201
|
- lib/revision/cli.rb
|
118
202
|
- lib/revision/errors.rb
|
119
203
|
- lib/revision/info.rb
|
204
|
+
- lib/revision/md5.rb
|
120
205
|
- lib/revision/releasable.rb
|
121
206
|
- lib/revision/string_case.rb
|
122
207
|
- lib/revision/version.rb
|
@@ -127,7 +212,7 @@ licenses:
|
|
127
212
|
- MIT
|
128
213
|
metadata:
|
129
214
|
source_code_uri: https://github.com/cormacc/revision
|
130
|
-
post_install_message:
|
215
|
+
post_install_message:
|
131
216
|
rdoc_options: []
|
132
217
|
require_paths:
|
133
218
|
- lib
|
@@ -142,8 +227,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
227
|
- !ruby/object:Gem::Version
|
143
228
|
version: '0'
|
144
229
|
requirements: []
|
145
|
-
rubygems_version: 3.
|
146
|
-
signing_key:
|
230
|
+
rubygems_version: 3.3.15
|
231
|
+
signing_key:
|
147
232
|
specification_version: 4
|
148
233
|
summary: Language-agnostic revision management tool
|
149
234
|
test_files: []
|