rookie 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rookie/tasks.rb +17 -4
- data/lib/rookie/tasks/git.rb +85 -0
- data/lib/rookie/version.rb +1 -1
- data/rookie.gemspec +2 -0
- metadata +21 -9
data/lib/rookie/tasks.rb
CHANGED
@@ -1,21 +1,31 @@
|
|
1
1
|
require 'rookie/tasks/gem'
|
2
|
+
require 'rookie/tasks/git'
|
2
3
|
require 'rake/tasklib'
|
3
4
|
|
4
5
|
module Rookie
|
5
6
|
class Tasks < ::Rake::TaskLib
|
6
7
|
|
7
|
-
attr_accessor :gem
|
8
|
+
attr_accessor :gem, :git
|
8
9
|
|
9
10
|
def initialize(gemspec = nil)
|
10
11
|
self.gem = Tasks::Gem.new gemspec
|
12
|
+
self.git = Tasks::Git.new gem.spec.version.to_s
|
11
13
|
yield self if block_given?
|
12
14
|
define
|
13
15
|
end
|
14
16
|
|
15
17
|
def define
|
16
|
-
setup_tasks = []
|
17
|
-
|
18
|
-
if
|
18
|
+
setup_tasks, clean_tasks, release_tasks = [], [], []
|
19
|
+
|
20
|
+
if git
|
21
|
+
release_tasks << 'git:release'
|
22
|
+
end
|
23
|
+
|
24
|
+
if gem
|
25
|
+
setup_tasks << 'gem:setup'
|
26
|
+
clean_tasks << 'gem:clean'
|
27
|
+
release_tasks << 'gem:push'
|
28
|
+
end
|
19
29
|
|
20
30
|
desc 'Setup project'
|
21
31
|
task :setup => setup_tasks
|
@@ -23,6 +33,9 @@ module Rookie
|
|
23
33
|
desc 'Remove temporary files'
|
24
34
|
task :clean => clean_tasks
|
25
35
|
|
36
|
+
desc 'Release project'
|
37
|
+
task :release => release_tasks
|
38
|
+
|
26
39
|
task :default => :setup
|
27
40
|
end
|
28
41
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'git'
|
2
|
+
require 'logger'
|
3
|
+
require 'rake/tasklib'
|
4
|
+
|
5
|
+
module Rookie
|
6
|
+
class Tasks < ::Rake::TaskLib
|
7
|
+
class Git < ::Rake::TaskLib
|
8
|
+
|
9
|
+
attr_accessor :release_version
|
10
|
+
|
11
|
+
def initialize(release_version = nil, working_dir = Dir.pwd)
|
12
|
+
self.git = ::Git.open working_dir, :log => ::Logger.new(STDOUT)
|
13
|
+
self.release_version = release_version
|
14
|
+
yield self if block_given?
|
15
|
+
define
|
16
|
+
end
|
17
|
+
|
18
|
+
def tag!(tag_name)
|
19
|
+
raise "Tag '#{tag_name.inspect}' is invalid" if tag_name.nil? or tag_name.empty?
|
20
|
+
if already_tagged? tag_name
|
21
|
+
raise "Tag '#{tag_name}' already in repository"
|
22
|
+
else
|
23
|
+
git.add_tag tag_name
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def push!(remote = 'origin', branch = 'master')
|
28
|
+
git.push remote, branch
|
29
|
+
end
|
30
|
+
|
31
|
+
def push_tags!(remote = 'origin', branch = 'master')
|
32
|
+
git.push remote, branch, true
|
33
|
+
end
|
34
|
+
|
35
|
+
def release!(version = release_version, remote = 'origin', branch = 'master')
|
36
|
+
release_tag = "v#{version.to_s}"
|
37
|
+
tag! release_tag
|
38
|
+
push! remote, branch
|
39
|
+
push_tags! remote, branch
|
40
|
+
end
|
41
|
+
|
42
|
+
def already_tagged?(tag_name)
|
43
|
+
git.tag tag_name rescue nil
|
44
|
+
end
|
45
|
+
|
46
|
+
def define
|
47
|
+
namespace :git do
|
48
|
+
desc 'Tags latest commit with the given tag name'
|
49
|
+
task :tag, :tag_name do |task, args|
|
50
|
+
tag! args[:tag_name]
|
51
|
+
end
|
52
|
+
|
53
|
+
desc 'Pushes changes to a remote repository'
|
54
|
+
task :push, :remote, :branch do |task, args|
|
55
|
+
args.with_defaults remote: 'origin', branch: 'master'
|
56
|
+
push! args[:remote], args[:branch]
|
57
|
+
end
|
58
|
+
|
59
|
+
desc 'Pushes tags to a remote repository'
|
60
|
+
task :push_tags, :remote, :branch do |task, args|
|
61
|
+
args.with_defaults remote: 'origin', branch: 'master'
|
62
|
+
push_tags! args[:remote], args[:branch]
|
63
|
+
end
|
64
|
+
|
65
|
+
desc 'Release current version'
|
66
|
+
task :release, :version, :remote, :branch do |task, args|
|
67
|
+
args.with_defaults version: release_version, remote: 'origin', branch: 'master'
|
68
|
+
release! args[:version], args[:remote], args[:branch]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def git=(repo)
|
76
|
+
@git = repo
|
77
|
+
end
|
78
|
+
|
79
|
+
def git
|
80
|
+
@git
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/rookie/version.rb
CHANGED
data/rookie.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new('rookie') do |gem|
|
|
10
10
|
gem.summary = 'Simple Rake tasks that make life easier.'
|
11
11
|
gem.description = gem.summary
|
12
12
|
gem.homepage = 'https://github.com/matheusmoreira/rookie'
|
13
|
+
gem.licenses = %w(GPLv3)
|
13
14
|
|
14
15
|
gem.author = 'Matheus Afonso Martins Moreira'
|
15
16
|
gem.email = 'matheus.a.m.moreira@gmail.com'
|
@@ -17,6 +18,7 @@ Gem::Specification.new('rookie') do |gem|
|
|
17
18
|
gem.files = `git ls-files`.split "\n"
|
18
19
|
|
19
20
|
gem.add_runtime_dependency 'rake'
|
21
|
+
gem.add_runtime_dependency 'git'
|
20
22
|
|
21
23
|
gem.add_development_dependency 'bundler'
|
22
24
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rookie
|
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:
|
@@ -13,7 +13,7 @@ date: 2011-12-19 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &14281300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *14281300
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: git
|
27
|
+
requirement: &14280800 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *14280800
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: bundler
|
27
|
-
requirement: &
|
38
|
+
requirement: &14280320 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,7 +43,7 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *14280320
|
36
47
|
description: Simple Rake tasks that make life easier.
|
37
48
|
email: matheus.a.m.moreira@gmail.com
|
38
49
|
executables: []
|
@@ -42,17 +53,18 @@ files:
|
|
42
53
|
- .gitignore
|
43
54
|
- .rvmrc
|
44
55
|
- Gemfile
|
45
|
-
- Gemfile.lock
|
46
56
|
- LICENSE.GPLv3
|
47
57
|
- README.markdown
|
48
58
|
- Rakefile
|
49
59
|
- lib/rookie.rb
|
50
60
|
- lib/rookie/tasks.rb
|
51
61
|
- lib/rookie/tasks/gem.rb
|
62
|
+
- lib/rookie/tasks/git.rb
|
52
63
|
- lib/rookie/version.rb
|
53
64
|
- rookie.gemspec
|
54
65
|
homepage: https://github.com/matheusmoreira/rookie
|
55
|
-
licenses:
|
66
|
+
licenses:
|
67
|
+
- GPLv3
|
56
68
|
post_install_message:
|
57
69
|
rdoc_options: []
|
58
70
|
require_paths:
|
@@ -65,7 +77,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
77
|
version: '0'
|
66
78
|
segments:
|
67
79
|
- 0
|
68
|
-
hash:
|
80
|
+
hash: 2350059705358843851
|
69
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
82
|
none: false
|
71
83
|
requirements:
|
@@ -74,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
86
|
version: '0'
|
75
87
|
segments:
|
76
88
|
- 0
|
77
|
-
hash:
|
89
|
+
hash: 2350059705358843851
|
78
90
|
requirements: []
|
79
91
|
rubyforge_project:
|
80
92
|
rubygems_version: 1.8.10
|