Class: Rookie::Tasks::Git
- Inherits:
-
Rake::TaskLib
- Object
- Rake::TaskLib
- Rookie::Tasks::Git
- Defined in:
- lib/rookie/tasks/git.rb
Instance Attribute Summary collapse
- #logger ⇒ Object
-
#release_version ⇒ Object
Returns the value of attribute release_version.
-
#working_directory ⇒ Object
Returns the value of attribute working_directory.
Instance Method Summary collapse
- #already_tagged?(tag_name) ⇒ Boolean
- #define ⇒ Object
-
#initialize(release_version = nil, working_dir = Dir.pwd, logger = nil) {|_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, logger = nil) {|_self| ... } ⇒ Git
Returns a new instance of Git.
16 17 18 19 20 21 22 |
# File 'lib/rookie/tasks/git.rb', line 16 def initialize(release_version = nil, working_dir = Dir.pwd, logger = nil) self.logger = logger self.working_directory = working_dir self.release_version = release_version yield self if block_given? define end |
Instance Attribute Details
#logger ⇒ Object
12 13 14 |
# File 'lib/rookie/tasks/git.rb', line 12 def logger @logger ||= create_logger end |
#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 |
#working_directory ⇒ Object
Returns the value of attribute working_directory.
9 10 11 |
# File 'lib/rookie/tasks/git.rb', line 9 def working_directory @working_directory end |
Instance Method Details
#already_tagged?(tag_name) ⇒ Boolean
46 47 48 |
# File 'lib/rookie/tasks/git.rb', line 46 def already_tagged?(tag_name) git.tag tag_name rescue nil end |
#define ⇒ Object
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 75 76 77 |
# File 'lib/rookie/tasks/git.rb', line 50 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
37 38 39 |
# File 'lib/rookie/tasks/git.rb', line 37 def push!(remote = 'origin', branch = 'master', = false) git.push remote, branch, end |
#release!(version_tag = release_tag, remote = 'origin', branch = 'master') ⇒ Object
41 42 43 44 |
# File 'lib/rookie/tasks/git.rb', line 41 def release!(version_tag = release_tag, remote = 'origin', branch = 'master') tag! version_tag push! remote, branch, true end |
#release_tag(version = release_version) ⇒ Object
24 25 26 |
# File 'lib/rookie/tasks/git.rb', line 24 def release_tag(version = release_version) "v#{version.to_s}" end |
#tag!(tag_name) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/rookie/tasks/git.rb', line 28 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 |