semverve 0.2.0 → 0.2.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/CONTRIBUTING.md +21 -0
- data/Gemfile.lock +1 -1
- data/README.md +40 -2
- data/lib/semverve/task.rb +29 -9
- data/lib/semverve/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b04f97b571e0eed652d155221cddb5afe06d703f2a27546f15c11e3d26a3d214
|
|
4
|
+
data.tar.gz: 6c824db22d1967e9daa8de369ca199b6cc7969f6ab2179933600fbba34d1aa6e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 31208572bd96d1d1bb00537673e9960594501a2b4226f821114d8cb624965fd0cd7282722d6284cf0666f80a908706174a3ca3d0bb4109a3b18dc882e9a26ecd
|
|
7
|
+
data.tar.gz: 8deb952db13cfdf0f8a13fbbcffb07afc23c402ece2efc3d50899d4158ea7455a6bedc993cb79c9d3de8dfc83c8142981f87f52777ee79a8dba1c1b09bc58dcd
|
data/CONTRIBUTING.md
CHANGED
|
@@ -100,6 +100,27 @@ When changing behavior, update the README at the same time. The README is the
|
|
|
100
100
|
primary user guide, so examples should match real task names, configuration
|
|
101
101
|
names, defaults, and output.
|
|
102
102
|
|
|
103
|
+
## Rake Task Interface Design
|
|
104
|
+
Semverve should feel natural from a shell while staying Rake-native. Prefer
|
|
105
|
+
Rake task arguments for direct task inputs:
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
bundle exec rake 'semverve:set[x.y.z]'
|
|
109
|
+
bundle exec rake 'semverve:generate[simple,force]'
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
For tasks with more than one optional value, prefer meaning-bearing tokens over
|
|
113
|
+
strict positional placeholders. For example, `semverve:generate` treats semantic
|
|
114
|
+
versions as the generated version, `module` or `simple` as the format, and
|
|
115
|
+
`force` as the overwrite mode. That keeps invocations like
|
|
116
|
+
`rake 'semverve:generate[simple]'` and `rake 'semverve:generate[force]'`
|
|
117
|
+
readable without requiring awkward empty slots.
|
|
118
|
+
|
|
119
|
+
Reserve environment variables for cross-cutting runtime toggles that compose
|
|
120
|
+
across related tasks, such as `SEMVERVE_REPORT_IGNORED=true rake
|
|
121
|
+
semverve:check`. Avoid generic environment variables like `VERSION`, `FORMAT`,
|
|
122
|
+
or `FORCE`; they can collide with a user's shell, CI, or parent build process.
|
|
123
|
+
|
|
103
124
|
## Versioning and Release Checks
|
|
104
125
|
Semverve uses Semverve to maintain itself, which doubles as useful
|
|
105
126
|
smoke-testing. The project Rakefile requires `lib/semverve/task` and installs
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -133,6 +133,7 @@ Semverve tasks use Rake task arguments for values:
|
|
|
133
133
|
```sh
|
|
134
134
|
rake 'semverve:set[1.2.3]'
|
|
135
135
|
rake 'semverve:generate[1.0.0,simple]'
|
|
136
|
+
rake 'semverve:generate[simple]'
|
|
136
137
|
rake 'semverve:generate[force]'
|
|
137
138
|
```
|
|
138
139
|
|
|
@@ -250,6 +251,7 @@ Generate a specific version or format:
|
|
|
250
251
|
|
|
251
252
|
```sh
|
|
252
253
|
rake 'semverve:generate[1.0.0,simple]'
|
|
254
|
+
rake 'semverve:generate[simple]'
|
|
253
255
|
```
|
|
254
256
|
|
|
255
257
|
Generation fails if the target file already exists. To replace it:
|
|
@@ -258,11 +260,14 @@ Generation fails if the target file already exists. To replace it:
|
|
|
258
260
|
rake 'semverve:generate[force]'
|
|
259
261
|
```
|
|
260
262
|
|
|
261
|
-
`semverve:generate` accepts optional
|
|
262
|
-
|
|
263
|
+
`semverve:generate` accepts optional tokens for version, format, and force.
|
|
264
|
+
Token order does not matter: semantic versions set the generated version,
|
|
265
|
+
`module` or `simple` sets the format, and `force` overwrites an existing version
|
|
266
|
+
file.
|
|
263
267
|
|
|
264
268
|
```sh
|
|
265
269
|
rake 'semverve:generate[1.0.0,force]'
|
|
270
|
+
rake 'semverve:generate[simple,force]'
|
|
266
271
|
rake 'semverve:generate[1.0.0,simple,force]'
|
|
267
272
|
```
|
|
268
273
|
|
|
@@ -620,6 +625,39 @@ For release CI, run the release check before building or pushing:
|
|
|
620
625
|
bundle exec rake semverve:check:release build
|
|
621
626
|
```
|
|
622
627
|
|
|
628
|
+
## Vim
|
|
629
|
+
While there's no official vim support (yet), you can add the following to
|
|
630
|
+
`~/.vim/plugin/semverve.vim`.
|
|
631
|
+
|
|
632
|
+
```vim
|
|
633
|
+
command! -bang SemverveAudit call <SID>semverve_audit(<bang>0)
|
|
634
|
+
function! s:semverve_audit(report_ignored) abort
|
|
635
|
+
let l:old_efm = &errorformat
|
|
636
|
+
try
|
|
637
|
+
let &errorformat = '%f:%l:%c:%m'
|
|
638
|
+
let l:string = ""
|
|
639
|
+
if !a:report_ignored
|
|
640
|
+
let l:string .= 'SEMVERVE_REPORT_IGNORED=true '
|
|
641
|
+
endif
|
|
642
|
+
let l:string .= 'bundle exec rake semverve:check 2>/dev/null'
|
|
643
|
+
cexpr systemlist(l:string)
|
|
644
|
+
if v:shell_error != 0
|
|
645
|
+
copen
|
|
646
|
+
else
|
|
647
|
+
cclose
|
|
648
|
+
echo 'Semverve checks passed.'
|
|
649
|
+
endif
|
|
650
|
+
finally
|
|
651
|
+
let &errorformat = l:old_efm
|
|
652
|
+
endtry
|
|
653
|
+
endfunction
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
You can then call `:SemverveAudit`, which will call `bundle exec rake
|
|
657
|
+
semverve:check`, and `:SemverveAudit!` which will call the same command with
|
|
658
|
+
`SEMVERVE_REPORT_IGNORED=true`, and populate and open the quickfix list if any
|
|
659
|
+
offenses are found.
|
|
660
|
+
|
|
623
661
|
## Reporting Bugs and Requesting Features
|
|
624
662
|
If you have an idea or find a bug, please [create an
|
|
625
663
|
issue](https://github.com/evanthegrayt/semverve/issues/new). Just make sure
|
data/lib/semverve/task.rb
CHANGED
|
@@ -366,17 +366,37 @@ module Semverve
|
|
|
366
366
|
#
|
|
367
367
|
# @return [Hash]
|
|
368
368
|
def generate_options(args)
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
if values.length > 2
|
|
372
|
-
raise Error, "Run rake 'semverve:generate[VERSION,FORMAT,force]'."
|
|
369
|
+
args.to_a.each_with_object({force: false}) do |value, options|
|
|
370
|
+
assign_generate_option(value, options)
|
|
373
371
|
end
|
|
372
|
+
end
|
|
374
373
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
374
|
+
##
|
|
375
|
+
# Assigns a single +semverve:generate+ token by meaning.
|
|
376
|
+
#
|
|
377
|
+
# @param [String] value
|
|
378
|
+
# @param [Hash] options
|
|
379
|
+
#
|
|
380
|
+
# @return [void]
|
|
381
|
+
def assign_generate_option(value, options)
|
|
382
|
+
case value
|
|
383
|
+
when nil, ""
|
|
384
|
+
nil
|
|
385
|
+
when "force"
|
|
386
|
+
raise Error, "Duplicate generate option force." if options[:force]
|
|
387
|
+
|
|
388
|
+
options[:force] = true
|
|
389
|
+
when SemanticVersion::PATTERN
|
|
390
|
+
raise Error, "Duplicate generate version #{value.inspect}." if options[:version]
|
|
391
|
+
|
|
392
|
+
options[:version] = value
|
|
393
|
+
when "module", "simple"
|
|
394
|
+
raise Error, "Duplicate generate format #{value.inspect}." if options[:format]
|
|
395
|
+
|
|
396
|
+
options[:format] = value
|
|
397
|
+
else
|
|
398
|
+
raise Error, "Unknown generate option #{value.inspect}. Use a semantic version, module, simple, or force."
|
|
399
|
+
end
|
|
380
400
|
end
|
|
381
401
|
|
|
382
402
|
##
|
data/lib/semverve/version.rb
CHANGED