module Event::PushTrait as_trait do def tag? data[:ref]["refs/tags"] end def new_branch? data[:before] =~ /^00000/ end def new_ref? data[:before] =~ /^00000/ end def rm_ref? data[:after] =~ /^00000/ end def md_ref? !(rm_ref? || new_ref?) end def commit_from data[:before] end def commit_to data[:after] end def ref_name if tag? tag_name else branch_name end end def branch_name @branch_name ||= data[:ref].gsub("refs/heads/", "") end def tag_name @tag_name ||= data[:ref].gsub("refs/tags/", "") end def commits @commits ||= data[:commits].map do |commit| project.commit(commit[:id]) end end def ref_type tag? ? "tag" : "branch" end def push_action_name if new_ref? "pushed new" elsif rm_ref? "removed #{ref_type}" else "pushed to" end end end end