version 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +10 -0
- data/README.rdoc +9 -4
- data/VERSION +1 -1
- data/lib/version.rb +39 -4
- data/lib/{ext → version/ext}/array.rb +2 -0
- data/lib/version/ext/class.rb +11 -0
- data/lib/{ext → version/ext}/hash.rb +2 -0
- data/lib/{ext → version/ext}/string.rb +2 -0
- metadata +5 -5
- data/lib/ext/class.rb +0 -29
data/History.rdoc
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=== Version 0.8.0 / (unreleased)
|
2
|
+
|
3
|
+
* bug fixes
|
4
|
+
* fixed README documentation to properly reflect is_versioned
|
5
|
+
* put core class extensions in a subdirectory of version, to avoid filename
|
6
|
+
collisions with other gems
|
7
|
+
|
8
|
+
* enhancements
|
9
|
+
* Added Version.current method (closes #2)
|
10
|
+
|
1
11
|
=== Version 0.7.1 / 2010-02-05
|
2
12
|
|
3
13
|
* bug fixes
|
data/README.rdoc
CHANGED
@@ -32,7 +32,8 @@ You're all set up.
|
|
32
32
|
$ rake version:bump:minor # => 0.2.0
|
33
33
|
$ rake version:bump:revision # => 0.2.1
|
34
34
|
$ rake version:bump:major # => 1.0.0
|
35
|
-
$
|
35
|
+
$ rake version:bump:minor # => 1.0.1
|
36
|
+
$ cat VERSION # => 1.0.1
|
36
37
|
|
37
38
|
Version also supports a .yml VERSION file. See the VersionTask rdoc for
|
38
39
|
details.
|
@@ -40,15 +41,19 @@ details.
|
|
40
41
|
=== Library Versioning
|
41
42
|
|
42
43
|
Version lets you automatically keep an in-class VERSION constant in sync with
|
43
|
-
the contents of the version file on disk.
|
44
|
+
the contents of the version file on disk. Version also provides a class-level
|
45
|
+
+current+ method which lets you get the current version without setting a
|
46
|
+
class-level constant.
|
44
47
|
|
45
48
|
require 'version'
|
46
49
|
|
50
|
+
Version.current # => 1.0.1
|
51
|
+
|
47
52
|
class Foo
|
48
|
-
|
53
|
+
is_versioned
|
49
54
|
end
|
50
55
|
|
51
|
-
Foo::VERSION # => 1.0.
|
56
|
+
Foo::VERSION # => 1.0.1
|
52
57
|
|
53
58
|
The Class::Version method takes a filename parameter if you use a different
|
54
59
|
location for the VERSION file. See the Class::Version rdoc for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.0
|
data/lib/version.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
require 'ext/array'
|
2
|
-
require 'ext/class'
|
3
|
-
require 'ext/hash'
|
4
|
-
require 'ext/string'
|
1
|
+
require 'version/ext/array'
|
2
|
+
require 'version/ext/class'
|
3
|
+
require 'version/ext/hash'
|
4
|
+
require 'version/ext/string'
|
5
|
+
|
6
|
+
require 'pathname'
|
5
7
|
|
6
8
|
#
|
7
9
|
# Encodes version-numbering logic into a convenient class.
|
@@ -9,6 +11,39 @@ require 'ext/string'
|
|
9
11
|
class Version
|
10
12
|
include Comparable
|
11
13
|
|
14
|
+
#
|
15
|
+
# Searches through the parent directories of the calling method and looks
|
16
|
+
# for a VERSION or VERSION.yml file to parse out the current version. Pass
|
17
|
+
#
|
18
|
+
# Pass a filename to +path+ to override autodetection, or pass a directory
|
19
|
+
# name as +path+ to autodetect within a given directory
|
20
|
+
#
|
21
|
+
def self.current(path = nil)
|
22
|
+
# if path is nil, detect automatically; if path is a directory, detect
|
23
|
+
# automatically in the directory; if path is a filename, use it directly
|
24
|
+
path = path ? Pathname.new(path) : self.version_file(caller.first)
|
25
|
+
path = self.version_file(path) unless path.file?
|
26
|
+
|
27
|
+
raise 'no VERSION or VERSION.yml found' unless path
|
28
|
+
|
29
|
+
case path.extname
|
30
|
+
when '' then path.read.strip.to_version
|
31
|
+
when '.yml' then YAML::load(path.read).to_version
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Attempts to detect the version file for the passed +filename+. Looks up
|
37
|
+
# the directory hierarchy for a file named VERSION or VERSION.yml. Returns
|
38
|
+
# a Pathname for the file if found, otherwise nil.
|
39
|
+
#
|
40
|
+
def self.version_file(filename)
|
41
|
+
Pathname(filename).dirname.expand_path.ascend do |d|
|
42
|
+
break d.join('VERSION') if d.join('VERSION').exist?
|
43
|
+
break d.join('VERSION.yml') if d.join('VERSION.yml').exist?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
12
47
|
#
|
13
48
|
# Creates a new version number, with a +major+ version number, +minor+
|
14
49
|
# revision number, +revision+ number, and optionally more (unnamed)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: version
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Touset
|
@@ -36,11 +36,11 @@ files:
|
|
36
36
|
- README.rdoc
|
37
37
|
- TODO.rdoc
|
38
38
|
- VERSION
|
39
|
-
- lib/ext/array.rb
|
40
|
-
- lib/ext/class.rb
|
41
|
-
- lib/ext/hash.rb
|
42
|
-
- lib/ext/string.rb
|
43
39
|
- lib/rake/version_task.rb
|
40
|
+
- lib/version/ext/array.rb
|
41
|
+
- lib/version/ext/class.rb
|
42
|
+
- lib/version/ext/hash.rb
|
43
|
+
- lib/version/ext/string.rb
|
44
44
|
- lib/version.rb
|
45
45
|
- spec/spec.opts
|
46
46
|
- spec/spec_helper.rb
|
data/lib/ext/class.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
|
3
|
-
class Class
|
4
|
-
#
|
5
|
-
# Automagically sets a VERSION constant in the current class, populated by
|
6
|
-
# the Version in +filename+. Attempts to guess the filename of the VERSION
|
7
|
-
# file by looking for VERSION or VERSION.yml files in the directories above
|
8
|
-
# the caller
|
9
|
-
#
|
10
|
-
def is_versioned(filename = nil)
|
11
|
-
# attempt to guess the filename if none given
|
12
|
-
if filename.nil?
|
13
|
-
filename = Pathname.new(caller.first).dirname.expand_path.ascend do |d|
|
14
|
-
break d.join('VERSION') if d.join('VERSION').exist?
|
15
|
-
break d.join('VERSION.yml') if d.join('VERSION.yml').exist?
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
raise 'no VERSION or VERSION.yml found' unless filename
|
20
|
-
|
21
|
-
path = Pathname.new(filename)
|
22
|
-
contents = path.read
|
23
|
-
|
24
|
-
const_set :VERSION, case path.extname
|
25
|
-
when '' then contents.strip.to_version
|
26
|
-
when '.yml' then YAML::load(contents).to_version
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|