@@ -112,43 +112,20 @@ func IsReleaseExist(repoID int64, tagName string) (bool, error) {
112112 return x .Get (& Release {RepoID : repoID , LowerTagName : strings .ToLower (tagName )})
113113}
114114
115- func createTag (gitRepo * git.Repository , rel * Release ) error {
116- // Only actual create when publish.
117- if ! rel .IsDraft {
118- if ! gitRepo .IsTagExist (rel .TagName ) {
119- commit , err := gitRepo .GetCommit (rel .Target )
120- if err != nil {
121- return fmt .Errorf ("GetCommit: %v" , err )
122- }
123-
124- // Trim '--' prefix to prevent command line argument vulnerability.
125- rel .TagName = strings .TrimPrefix (rel .TagName , "--" )
126- if err = gitRepo .CreateTag (rel .TagName , commit .ID .String ()); err != nil {
127- if strings .Contains (err .Error (), "is not a valid tag name" ) {
128- return ErrInvalidTagName {rel .TagName }
129- }
130- return err
131- }
132- rel .LowerTagName = strings .ToLower (rel .TagName )
133- }
134- commit , err := gitRepo .GetTagCommit (rel .TagName )
135- if err != nil {
136- return fmt .Errorf ("GetTagCommit: %v" , err )
137- }
115+ // InsertRelease inserts a release
116+ func InsertRelease (rel * Release ) error {
117+ _ , err := x .Insert (rel )
118+ return err
119+ }
138120
139- rel .Sha1 = commit .ID .String ()
140- rel .CreatedUnix = timeutil .TimeStamp (commit .Author .When .Unix ())
141- rel .NumCommits , err = commit .CommitsCount ()
142- if err != nil {
143- return fmt .Errorf ("CommitsCount: %v" , err )
144- }
145- } else {
146- rel .CreatedUnix = timeutil .TimeStampNow ()
147- }
148- return nil
121+ // UpdateRelease updates all columns of a release
122+ func UpdateRelease (rel * Release ) error {
123+ _ , err := x .ID (rel .ID ).AllCols ().Update (rel )
124+ return err
149125}
150126
151- func addReleaseAttachments (releaseID int64 , attachmentUUIDs []string ) (err error ) {
127+ // AddReleaseAttachments adds a release attachments
128+ func AddReleaseAttachments (releaseID int64 , attachmentUUIDs []string ) (err error ) {
152129 // Check attachments
153130 var attachments = make ([]* Attachment , 0 )
154131 for _ , uuid := range attachmentUUIDs {
@@ -173,51 +150,6 @@ func addReleaseAttachments(releaseID int64, attachmentUUIDs []string) (err error
173150 return
174151}
175152
176- // CreateRelease creates a new release of repository.
177- func CreateRelease (gitRepo * git.Repository , rel * Release , attachmentUUIDs []string ) error {
178- isExist , err := IsReleaseExist (rel .RepoID , rel .TagName )
179- if err != nil {
180- return err
181- } else if isExist {
182- return ErrReleaseAlreadyExist {rel .TagName }
183- }
184-
185- if err = createTag (gitRepo , rel ); err != nil {
186- return err
187- }
188- rel .LowerTagName = strings .ToLower (rel .TagName )
189-
190- _ , err = x .InsertOne (rel )
191- if err != nil {
192- return err
193- }
194-
195- err = addReleaseAttachments (rel .ID , attachmentUUIDs )
196- if err != nil {
197- return err
198- }
199-
200- if ! rel .IsDraft {
201- if err := rel .LoadAttributes (); err != nil {
202- log .Error ("LoadAttributes: %v" , err )
203- } else {
204- mode , _ := AccessLevel (rel .Publisher , rel .Repo )
205- if err := PrepareWebhooks (rel .Repo , HookEventRelease , & api.ReleasePayload {
206- Action : api .HookReleasePublished ,
207- Release : rel .APIFormat (),
208- Repository : rel .Repo .APIFormat (mode ),
209- Sender : rel .Publisher .APIFormat (),
210- }); err != nil {
211- log .Error ("PrepareWebhooks: %v" , err )
212- } else {
213- go HookQueue .Add (rel .Repo .ID )
214- }
215- }
216- }
217-
218- return nil
219- }
220-
221153// GetRelease returns release by given ID.
222154func GetRelease (repoID int64 , tagName string ) (* Release , error ) {
223155 isExist , err := IsReleaseExist (repoID , tagName )
@@ -385,40 +317,6 @@ func SortReleases(rels []*Release) {
385317 sort .Sort (sorter )
386318}
387319
388- // UpdateRelease updates information of a release.
389- func UpdateRelease (doer * User , gitRepo * git.Repository , rel * Release , attachmentUUIDs []string ) (err error ) {
390- if err = createTag (gitRepo , rel ); err != nil {
391- return err
392- }
393- rel .LowerTagName = strings .ToLower (rel .TagName )
394-
395- _ , err = x .ID (rel .ID ).AllCols ().Update (rel )
396- if err != nil {
397- return err
398- }
399-
400- err = rel .loadAttributes (x )
401- if err != nil {
402- return err
403- }
404-
405- err = addReleaseAttachments (rel .ID , attachmentUUIDs )
406-
407- mode , _ := AccessLevel (doer , rel .Repo )
408- if err1 := PrepareWebhooks (rel .Repo , HookEventRelease , & api.ReleasePayload {
409- Action : api .HookReleaseUpdated ,
410- Release : rel .APIFormat (),
411- Repository : rel .Repo .APIFormat (mode ),
412- Sender : doer .APIFormat (),
413- }); err1 != nil {
414- log .Error ("PrepareWebhooks: %v" , err )
415- } else {
416- go HookQueue .Add (rel .Repo .ID )
417- }
418-
419- return err
420- }
421-
422320// DeleteReleaseByID deletes a release and corresponding Git tag by given ID.
423321func DeleteReleaseByID (id int64 , doer * User , delTag bool ) error {
424322 rel , err := GetReleaseByID (id )
0 commit comments