diff options
Diffstat (limited to '')
-rw-r--r-- | modules/repository/push.go | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/modules/repository/push.go b/modules/repository/push.go new file mode 100644 index 0000000..66d0417 --- /dev/null +++ b/modules/repository/push.go @@ -0,0 +1,70 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package repository + +import ( + "code.gitea.io/gitea/modules/git" +) + +// PushUpdateOptions defines the push update options +type PushUpdateOptions struct { + PusherID int64 + PusherName string + RepoUserName string + RepoName string + RefFullName git.RefName // branch, tag or other name to push + OldCommitID string + NewCommitID string + TimeNano int64 +} + +// IsNewRef return true if it's a first-time push to a branch, tag or etc. +func (opts *PushUpdateOptions) IsNewRef() bool { + return git.IsEmptyCommitID(opts.OldCommitID, nil) +} + +// IsDelRef return true if it's a deletion to a branch or tag +func (opts *PushUpdateOptions) IsDelRef() bool { + return git.IsEmptyCommitID(opts.NewCommitID, nil) +} + +// IsUpdateRef return true if it's an update operation +func (opts *PushUpdateOptions) IsUpdateRef() bool { + return !opts.IsNewRef() && !opts.IsDelRef() +} + +// IsNewTag return true if it's a creation to a tag +func (opts *PushUpdateOptions) IsNewTag() bool { + return opts.RefFullName.IsTag() && opts.IsNewRef() +} + +// IsDelTag return true if it's a deletion to a tag +func (opts *PushUpdateOptions) IsDelTag() bool { + return opts.RefFullName.IsTag() && opts.IsDelRef() +} + +// IsNewBranch return true if it's the first-time push to a branch +func (opts *PushUpdateOptions) IsNewBranch() bool { + return opts.RefFullName.IsBranch() && opts.IsNewRef() +} + +// IsUpdateBranch return true if it's not the first push to a branch +func (opts *PushUpdateOptions) IsUpdateBranch() bool { + return opts.RefFullName.IsBranch() && opts.IsUpdateRef() +} + +// IsDelBranch return true if it's a deletion to a branch +func (opts *PushUpdateOptions) IsDelBranch() bool { + return opts.RefFullName.IsBranch() && opts.IsDelRef() +} + +// RefName returns simple name for ref +func (opts *PushUpdateOptions) RefName() string { + return opts.RefFullName.ShortName() +} + +// RepoFullName returns repo full name +func (opts *PushUpdateOptions) RepoFullName() string { + return opts.RepoUserName + "/" + opts.RepoName +} |