semver 0.1.0 → 0.2.0
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.
- data/.semver +2 -2
- data/README.md +5 -1
- data/bin/semver +11 -10
- data/lib/semver.rb +6 -3
- data/semver.gemspec +1 -1
- metadata +3 -3
data/.semver
CHANGED
data/README.md
CHANGED
@@ -18,11 +18,15 @@ use it
|
|
18
18
|
quickstart for ruby
|
19
19
|
-------------------
|
20
20
|
require 'semver'
|
21
|
-
v = SemVer.find
|
21
|
+
v = SemVer.find
|
22
22
|
v.major # => "0"
|
23
23
|
v.major.next!
|
24
24
|
v.major # => "1"
|
25
25
|
v.format "%M.%m.%p" # => "1.1.0"
|
26
26
|
v.save
|
27
27
|
|
28
|
+
git integration
|
29
|
+
---------------
|
30
|
+
% git config --global alias.semtag '!git tag -a $(semver tag) -m "tagging $(semver tag)"'
|
31
|
+
|
28
32
|
[Franco Lazzarino](mailto:flazzarino@gmail.com)
|
data/bin/semver
CHANGED
@@ -2,8 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'semver'
|
4
4
|
|
5
|
+
class CommandError < StandardError; end
|
6
|
+
|
5
7
|
begin
|
6
|
-
command = ARGV.shift or raise "no command given"
|
8
|
+
command = ARGV.shift or raise CommandError, "no command given"
|
7
9
|
|
8
10
|
case command
|
9
11
|
when /^init(ialize)?$/
|
@@ -14,13 +16,13 @@ begin
|
|
14
16
|
|
15
17
|
when /^inc(rement)?$/
|
16
18
|
version = SemVer.find
|
17
|
-
dimension = ARGV.shift or raise "required: major | minor | patch"
|
19
|
+
dimension = ARGV.shift or raise CommandError, "required: major | minor | patch"
|
18
20
|
|
19
21
|
case dimension
|
20
22
|
when 'major' then version.major.next!
|
21
23
|
when 'minor' then version.minor.next!
|
22
24
|
when 'patch' then version.patch.next!
|
23
|
-
else raise "#{dimension} is invalid: major | minor | patch"
|
25
|
+
else raise CommandError, "#{dimension} is invalid: major | minor | patch"
|
24
26
|
end
|
25
27
|
|
26
28
|
version.special = ''
|
@@ -28,13 +30,13 @@ begin
|
|
28
30
|
|
29
31
|
when /^spe(cial)?$/
|
30
32
|
version = SemVer.find
|
31
|
-
special_str = ARGV.shift or raise "required: an arbitrary string (beta, alfa, romeo, etc)"
|
33
|
+
special_str = ARGV.shift or raise CommandError, "required: an arbitrary string (beta, alfa, romeo, etc)"
|
32
34
|
version.special = special_str
|
33
35
|
version.save
|
34
36
|
|
35
37
|
when 'format'
|
36
38
|
version = SemVer.find
|
37
|
-
format_str = ARGV.shift or raise "required: format string"
|
39
|
+
format_str = ARGV.shift or raise CommandError, "required: format string"
|
38
40
|
version.format format_str
|
39
41
|
|
40
42
|
when 'tag'
|
@@ -50,18 +52,17 @@ init[ialze] # initialize semantic version tracking
|
|
50
52
|
inc[rement] major | minor | patch # increment a specific version number
|
51
53
|
spe[cial] [STRING] # set a special version suffix
|
52
54
|
format # printf like format: %M, %m, %p, %s
|
53
|
-
tag #
|
55
|
+
tag # equivalent to format 'v%M.%m.%p%s'
|
54
56
|
help
|
55
57
|
|
56
|
-
PLEASE READ http://semver.org
|
58
|
+
PLEASE READ http://semver.org
|
57
59
|
HELP
|
58
60
|
|
59
|
-
else raise "invalid command #{command}"
|
61
|
+
else raise CommandError, "invalid command #{command}"
|
60
62
|
end
|
61
63
|
|
62
|
-
rescue => e
|
64
|
+
rescue CommandError, NoSemVerError => e
|
63
65
|
puts e.message
|
64
|
-
puts e.backtrace
|
65
66
|
puts "#{$0} help for more info"
|
66
67
|
exit 1
|
67
68
|
end
|
data/lib/semver.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
class NoSemVerError < StandardError; end
|
2
|
+
|
1
3
|
class SemVer
|
2
4
|
|
3
5
|
FILE_NAME = '.semver'
|
4
6
|
|
5
7
|
def SemVer.find dir=nil
|
6
|
-
v = SemVer.new
|
8
|
+
v = SemVer.new
|
7
9
|
v.load
|
8
10
|
v
|
9
11
|
end
|
@@ -17,8 +19,9 @@ class SemVer
|
|
17
19
|
|
18
20
|
loop do
|
19
21
|
|
20
|
-
if
|
21
|
-
|
22
|
+
if File.dirname(File.expand_path(path)) == '/'
|
23
|
+
raise NoSemVerError, "#{dir} is not semantic versioned"
|
24
|
+
elsif Dir[FILE_NAME].empty?
|
22
25
|
path = File.join '..', path
|
23
26
|
next
|
24
27
|
else
|
data/semver.gemspec
CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |spec|
|
|
4
4
|
spec.name = "semver"
|
5
5
|
spec.version = SemVer.find.format '%M.%m.%p'
|
6
6
|
spec.summary = "Semantic Versioning"
|
7
|
-
spec.description = "maintain versions as per http://semver.
|
7
|
+
spec.description = "maintain versions as per http://semver.org"
|
8
8
|
spec.email = "flazzarino@gmail.com"
|
9
9
|
spec.authors = ["Francesco Lazzarino"]
|
10
10
|
spec.homepage = 'http://github.com/flazz/semver'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Lazzarino
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-04-20 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description: maintain versions as per http://semver.
|
16
|
+
description: maintain versions as per http://semver.org
|
17
17
|
email: flazzarino@gmail.com
|
18
18
|
executables:
|
19
19
|
- semver
|