@@ -7,6 +7,8 @@ package cmd
7
7
import (
8
8
"fmt"
9
9
"log"
10
+ "os"
11
+ "path/filepath"
10
12
11
13
"code.gitea.io/sdk/gitea"
12
14
@@ -87,13 +89,17 @@ var CmdReleaseCreate = cli.Command{
87
89
Name : "prerelease, p" ,
88
90
Usage : "the release is a prerelease" ,
89
91
},
92
+ cli.StringSliceFlag {
93
+ Name : "asset, a" ,
94
+ Usage : "a list of files to attach to the release" ,
95
+ },
90
96
},
91
97
}
92
98
93
99
func runReleaseCreate (ctx * cli.Context ) error {
94
100
login , owner , repo := initCommand (ctx )
95
101
96
- _ , err := login .Client ().CreateRelease (owner , repo , gitea.CreateReleaseOption {
102
+ release , err := login .Client ().CreateRelease (owner , repo , gitea.CreateReleaseOption {
97
103
TagName : ctx .String ("tag" ),
98
104
Target : ctx .String ("target" ),
99
105
Title : ctx .String ("title" ),
@@ -103,8 +109,29 @@ func runReleaseCreate(ctx *cli.Context) error {
103
109
})
104
110
105
111
if err != nil {
112
+ if err .Error () == "409 Conflict" {
113
+ log .Fatal ("error: There already is a release for this tag" )
114
+ }
115
+
106
116
log .Fatal (err )
107
117
}
108
118
119
+ for _ , asset := range ctx .StringSlice ("asset" ) {
120
+ var file * os.File
121
+
122
+ if file , err = os .Open (asset ); err != nil {
123
+ log .Fatal (err )
124
+ }
125
+
126
+ filePath := filepath .Base (asset )
127
+
128
+ if _ , err = login .Client ().CreateReleaseAttachment (owner , repo , release .ID , file , filePath ); err != nil {
129
+ file .Close ()
130
+ log .Fatal (err )
131
+ }
132
+
133
+ file .Close ()
134
+ }
135
+
109
136
return nil
110
137
}
0 commit comments