1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
# Copyright (C) the Rugged contributors. All rights reserved.
#
# This file is part of Rugged, distributed under the MIT license.
# For full terms see the included LICENSE file.
module Rugged
class Tag < Rugged::Reference
GPG_SIGNATURE_PREFIX = "-----BEGIN PGP SIGNATURE-----".freeze
def self.extract_signature(repo, oid, prefix=GPG_SIGNATURE_PREFIX)
object = repo.read(oid)
unless object.type == :tag
raise GitRPC::InvalidObject, "Invalid object type #{object.type}, expected tag"
end
if index = object.data.index(prefix)
[
object.data.byteslice(index..-1),
object.data.byteslice(0...index)
]
else
nil
end
end
def name
canonical_name.sub(%r{^refs/tags/}, "")
end
class Annotation
def self.prettify_message(msg, strip_comments = true)
Rugged::prettify_message(msg, strip_comments)
end
def inspect
"#<Rugged::Tag::Annotation:#{object_id} {name: #{name.inspect}, message: #{message.inspect}, target: #{target.inspect}>"
end
def to_hash
{
:message => message,
:name => name,
:target => target,
:tagger => tagger,
}
end
def modify(new_args, force=True)
args = self.to_hash.merge(new_args)
Tag.create(args, force)
end
end
end
end
|