Class: Rookie::Tasks::Git
- Inherits:
-
Rake::TaskLib
- Object
- Rake::TaskLib
- Rookie::Tasks::Git
- Defined in:
- lib/rookie/tasks/git.rb
Instance Attribute Summary collapse
-
#release_version ⇒ Object
Returns the value of attribute release_version.
Instance Method Summary collapse
- #already_tagged?(tag_name) ⇒ Boolean
- #define ⇒ Object
-
#initialize(release_version = nil, working_dir = Dir.pwd) {|_self| ... } ⇒ Git
constructor
A new instance of Git.
- #push!(remote = 'origin', branch = 'master', tags = false) ⇒ Object
- #release!(version_tag = release_tag, remote = 'origin', branch = 'master') ⇒ Object
- #release_tag(version = release_version) ⇒ Object
- #tag!(tag_name) ⇒ Object
Constructor Details
#initialize(release_version = nil, working_dir = Dir.pwd) {|_self| ... } ⇒ Git
Returns a new instance of Git.
11 12 13 14 15 16 17 18 19 |
# File 'lib/rookie/tasks/git.rb', line 11 def initialize(release_version = nil, working_dir = Dir.pwd) logger = ::Logger.new STDOUT logger.level = ::Logger::INFO logger.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" } self.git = ::Git.open working_dir, :log => logger self.release_version = release_version yield self if block_given? define end |
Instance Attribute Details
#release_version ⇒ Object
Returns the value of attribute release_version.
9 10 11 |
# File 'lib/rookie/tasks/git.rb', line 9 def release_version @release_version end |
Instance Method Details
#already_tagged?(tag_name) ⇒ Boolean
43 44 45 |
# File 'lib/rookie/tasks/git.rb', line 43 def already_tagged?(tag_name) git.tag tag_name rescue nil end |
#define ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rookie/tasks/git.rb', line 47 def define namespace :git do desc 'Tags latest commit with the given tag name' task :tag, :tag_name do |task, args| tag! args[:tag_name] end desc 'Pushes changes to a remote repository' task :push, :remote, :branch do |task, args| args.with_defaults remote: 'origin', branch: 'master' push! args[:remote], args[:branch] end namespace :push do desc 'Pushes tags to a remote repository' task :tags, :remote, :branch do |task, args| args.with_defaults remote: 'origin', branch: 'master' push! args[:remote], args[:branch] end end desc 'Release current version' task :release, :version, :remote, :branch do |task, args| args.with_defaults version: release_tag, remote: 'origin', branch: 'master' release! args[:version], args[:remote], args[:branch] end end end |
#push!(remote = 'origin', branch = 'master', tags = false) ⇒ Object
34 35 36 |
# File 'lib/rookie/tasks/git.rb', line 34 def push!(remote = 'origin', branch = 'master', = false) git.push remote, branch, end |
#release!(version_tag = release_tag, remote = 'origin', branch = 'master') ⇒ Object
38 39 40 41 |
# File 'lib/rookie/tasks/git.rb', line 38 def release!(version_tag = release_tag, remote = 'origin', branch = 'master') tag! version_tag push! remote, branch, true end |
#release_tag(version = release_version) ⇒ Object
21 22 23 |
# File 'lib/rookie/tasks/git.rb', line 21 def release_tag(version = release_version) "v#{version.to_s}" end |
#tag!(tag_name) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/rookie/tasks/git.rb', line 25 def tag!(tag_name) raise "Tag '#{tag_name.inspect}' is invalid" if tag_name.nil? or tag_name.empty? if already_tagged? tag_name raise "Tag '#{tag_name}' already in repository" else git.add_tag tag_name end end |