versionius 0.0.1 → 0.0.2
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/Gemfile +1 -0
- data/lib/tasks/versionius.rake +20 -1
- data/lib/versionius/builder.rb +4 -12
- data/lib/versionius/version.rb +50 -0
- data/lib/versionius/versionius.rb +1 -1
- data/lib/versionius.rb +1 -0
- data/spec/version_spec.rb +72 -0
- data/versionius.gemspec +1 -0
- metadata +21 -2
data/Gemfile
CHANGED
data/lib/tasks/versionius.rake
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'versionius'
|
2
|
-
require 'rake'
|
3
2
|
|
4
3
|
namespace :versionius do
|
5
4
|
|
@@ -8,4 +7,24 @@ namespace :versionius do
|
|
8
7
|
builder = Versionius::Builder.new('./', './public/')
|
9
8
|
builder.run
|
10
9
|
end
|
10
|
+
|
11
|
+
desc "Create minor tag"
|
12
|
+
task :minor do
|
13
|
+
version = Versionius::Version.new('./')
|
14
|
+
version.minor
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Create major tag"
|
18
|
+
task :major do
|
19
|
+
version = Versionius::Version.new('./')
|
20
|
+
version.major
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
desc "Create release tag"
|
25
|
+
task :release do
|
26
|
+
version = Versionius::Version.new('./')
|
27
|
+
version.release
|
28
|
+
end
|
11
29
|
end
|
30
|
+
|
data/lib/versionius/builder.rb
CHANGED
@@ -12,9 +12,8 @@ module Versionius
|
|
12
12
|
repo = Grit::Repo.new(@repository_path)
|
13
13
|
|
14
14
|
File.open(File.join(@version_file_path, Versionius::FILE_NAME), "w+") do |file|
|
15
|
-
|
16
|
-
|
17
|
-
file.puts "#{Versionius::TAG_TITLE} #{tag.name}"
|
15
|
+
unless repo.tags.empty?
|
16
|
+
file.puts "#{Versionius::TAG_TITLE} #{repo.tags.last.name}"
|
18
17
|
|
19
18
|
commits = between_tags(repo) if repo.tags.size > 1
|
20
19
|
end
|
@@ -27,16 +26,9 @@ module Versionius
|
|
27
26
|
end
|
28
27
|
|
29
28
|
def between_tags(repo)
|
30
|
-
|
29
|
+
last = repo.tags.last
|
31
30
|
previous = repo.tags[repo.tags.size - 2]
|
32
|
-
|
33
|
-
for commit in repo.commits
|
34
|
-
break if commit.id == previous.commit.id
|
35
|
-
|
36
|
-
commits << commit
|
37
|
-
end
|
38
|
-
|
39
|
-
commits
|
31
|
+
repo.commits_between(previous.commit.id, last.commit.id)
|
40
32
|
end
|
41
33
|
end
|
42
34
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'grit'
|
2
|
+
require 'versionomy'
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
module Versionius
|
6
|
+
|
7
|
+
class Version
|
8
|
+
def initialize(project_path)
|
9
|
+
@repo = Grit::Repo.new(project_path)
|
10
|
+
@version = Versionomy.parse(tag.name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def minor
|
14
|
+
change(@version.bump(2))
|
15
|
+
end
|
16
|
+
|
17
|
+
def major
|
18
|
+
change(@version.bump(1))
|
19
|
+
end
|
20
|
+
|
21
|
+
def release
|
22
|
+
change(@version.bump(0))
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def tag
|
28
|
+
@repo.tags.last || NoTag.new
|
29
|
+
end
|
30
|
+
|
31
|
+
def tag_version(version)
|
32
|
+
system "git tag #{version}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def git_push
|
36
|
+
system "git push --tags origin master"
|
37
|
+
end
|
38
|
+
|
39
|
+
def change(version)
|
40
|
+
tag_version(version.to_s)
|
41
|
+
git_push
|
42
|
+
end
|
43
|
+
|
44
|
+
class NoTag
|
45
|
+
def name
|
46
|
+
"0.0.0"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/versionius.rb
CHANGED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'versionomy'
|
3
|
+
|
4
|
+
include Versionius
|
5
|
+
|
6
|
+
describe Version do
|
7
|
+
before do
|
8
|
+
@repo = Grit::Repo.new(repository_path, :is_bare => true)
|
9
|
+
Grit::Repo.stub!(:new).and_return(@repo)
|
10
|
+
|
11
|
+
version.should_receive(:git_push)
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:version) { Version.new(repository_path) }
|
15
|
+
|
16
|
+
context "when we have no tags in the project" do
|
17
|
+
let(:repository_path) { './spec/fixtures/commits_repo/dot_git' }
|
18
|
+
|
19
|
+
context "for minor changes" do
|
20
|
+
it "should create tag" do
|
21
|
+
version.should_receive(:tag_version).with('0.0.1').and_return
|
22
|
+
|
23
|
+
version.minor
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "for major changes" do
|
28
|
+
it "should create tag" do
|
29
|
+
version.should_receive(:tag_version).with('0.1.0').and_return
|
30
|
+
|
31
|
+
version.major
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "for release changes" do
|
36
|
+
it "should create tag" do
|
37
|
+
version.should_receive(:tag_version).with('1.0.0').and_return
|
38
|
+
|
39
|
+
version.release
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when we have several tags in the project" do
|
45
|
+
let(:repository_path) { './spec/fixtures/tags_repo/dot_git' }
|
46
|
+
|
47
|
+
context "for minor changes" do
|
48
|
+
it "should increment minor version on minor changes" do
|
49
|
+
version.should_receive(:tag_version).with('0.0.3').and_return
|
50
|
+
|
51
|
+
version.minor
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "for major changes" do
|
56
|
+
it "should increment major version and minor as zero" do
|
57
|
+
version.should_receive(:tag_version).with('0.1.0').and_return
|
58
|
+
|
59
|
+
version.major
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "for release changes" do
|
64
|
+
it "should increment release version and minor, major as zero" do
|
65
|
+
version.should_receive(:tag_version).with('1.0.0').and_return
|
66
|
+
|
67
|
+
version.release
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
data/versionius.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: versionius
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: grit
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: versionomy
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
description: Build version txt file in the public folder
|
31
47
|
email:
|
32
48
|
- alex.korsak@gmail.com
|
@@ -47,6 +63,7 @@ files:
|
|
47
63
|
- lib/versionius/builder.rb
|
48
64
|
- lib/versionius/railtie.rb
|
49
65
|
- lib/versionius/tasks.rb
|
66
|
+
- lib/versionius/version.rb
|
50
67
|
- lib/versionius/versionius.rb
|
51
68
|
- spec/builder_spec.rb
|
52
69
|
- spec/fixtures/commits_repo/README
|
@@ -134,6 +151,7 @@ files:
|
|
134
151
|
- spec/fixtures/tags_repo/dot_git/refs/tags/0.0.1
|
135
152
|
- spec/fixtures/tags_repo/dot_git/refs/tags/0.0.2
|
136
153
|
- spec/spec_helper.rb
|
154
|
+
- spec/version_spec.rb
|
137
155
|
- versionius.gemspec
|
138
156
|
homepage: http://github.com/oivoodoo/versionius
|
139
157
|
licenses: []
|
@@ -246,3 +264,4 @@ test_files:
|
|
246
264
|
- spec/fixtures/tags_repo/dot_git/refs/tags/0.0.1
|
247
265
|
- spec/fixtures/tags_repo/dot_git/refs/tags/0.0.2
|
248
266
|
- spec/spec_helper.rb
|
267
|
+
- spec/version_spec.rb
|