rookie 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- clean_tasks = []
18
- if gem then setup_tasks << 'gem:setup'; clean_tasks << 'gem:clean' end
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
@@ -3,7 +3,7 @@ module Rookie
3
3
 
4
4
  MAJOR = 0
5
5
  MINOR = 0
6
- PATCH = 1
6
+ PATCH = 2
7
7
  BUILD = nil
8
8
 
9
9
  STRING = [ MAJOR, MINOR, PATCH, BUILD ].compact.join '.'
@@ -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.1
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: &14422940 !ruby/object:Gem::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: *14422940
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: &14422380 !ruby/object:Gem::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: *14422380
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: -230876263994541469
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: -230876263994541469
89
+ hash: 2350059705358843851
78
90
  requirements: []
79
91
  rubyforge_project:
80
92
  rubygems_version: 1.8.10