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.
@@ -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