class Gem::Tasks::SCM::Tag


The ‘scm:tag` task.

def define


Defines the `scm:tag` task.
def define
  namespace :scm do
    task :tag, [:name] do |t,args|
      tag = if args.name
              args.name
            else
              version_tag(@project.gemspec.version)
            end
      status "Tagging #{tag} ..."
      unless tag!(tag)
        error "Could not create tag #{tag}"
      end
    end
  end
end

def initialize(options={})

Options Hash: (**options)
  • :format (String, Proc) --

Parameters:
  • options (Hash) --
def initialize(options={})
  super()
  @format = options.fetch(:format,DEFAULT_FORMAT)
  yield self if block_given?
  define
end

def tag!(name)

Returns:
  • (Boolean) -

Parameters:
  • name (String) --
def tag!(name)
  case @project.scm
  when :git then run 'git', 'tag', name
  when :hg  then run 'hg', 'tag', name
  when :svn
    branch   = File.basename(@project.root)
    tags_dir = if branch == 'trunk'
                 # we are in trunk/
                 File.join('..','tags')
               else
                 # must be within branches/$name/
                 File.join('..','..','tags')
               end
    tag_dir = File.join(tag_dirs,name)
    FileUtils.mkdir_p tags_dir
    FileUtils.cp_r '.', tag_dir
    return run('svn', 'add', tag_dir)
  else
    true
  end
end

def version_tag(version)

Raises:
  • (TypeError) -

Returns:
  • (String) -

Parameters:
  • version (String) --
def version_tag(version)
  case @format
  when String
    (@format % version)
  when Proc
    @format[version]
  else
    raise(TypeError,"tag format must be a String or Proc")
  end
end