rookie 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/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
|