Skip to content

Commit 4fab5ff

Browse files
authored
Merge pull request #8 from jonnyreeves/feature/add-prerelease-flag
Add prerelease support
2 parents 0ff5993 + efc7eef commit 4fab5ff

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Parameters:
1919
2020
Options:
2121
-version: Displays version
22+
-prerelease: Identify the release as a prerelease
2223
2324
Environment variables:
2425
DEBUG: Allows you to run github-release in debugging mode. DO NOT do this if you are attempting to upload big files.
@@ -42,4 +43,4 @@ Feel free to inspect this project's [Makefile](https://github.com/c4milo/github-
4243

4344
![](https://cldup.com/6Slplyys6X.png)
4445

45-
46+

main.go

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type Release struct {
4343
}
4444

4545
var verFlag bool
46+
var prereleaseFlag bool
4647

4748
func init() {
4849
log.SetFlags(0)
@@ -59,6 +60,7 @@ func init() {
5960
}
6061

6162
flag.BoolVar(&verFlag, "version", false, "-version")
63+
flag.BoolVar(&prereleaseFlag, "prerelease", false, "-prerelease")
6264
flag.Parse()
6365
}
6466

@@ -77,6 +79,7 @@ Parameters:
7779
7880
Options:
7981
-version: Displays version
82+
-prerelease: Identify the release as a prerelease
8083
8184
Environment variables:
8285
DEBUG: Allows you to run github-release in debugging mode. DO NOT do this if you are attempting to upload big files.
@@ -100,13 +103,14 @@ func main() {
100103
return
101104
}
102105

103-
if len(os.Args) < 6 {
106+
if flag.NArg() != 5 {
107+
log.Printf("Error: Invalid number of arguments (got %d, expected 5)\n\n", flag.NArg())
104108
log.Fatal(usage)
105109
}
106110

107-
userRepo := strings.Split(os.Args[1], "/")
111+
userRepo := strings.Split(flag.Arg(0), "/")
108112
if len(userRepo) != 2 {
109-
log.Printf("Error: Invalid format used for username and repository: %s\n\n", os.Args[1])
113+
log.Printf("Error: Invalid format used for username and repository: %s\n\n", flag.Arg(0))
110114
log.Fatal(usage)
111115
}
112116

@@ -121,24 +125,32 @@ Please refer to https://help.github.com/articles/creating-an-access-token-for-co
121125

122126
if debug {
123127
log.Println("Glob pattern received: ")
124-
log.Println(os.Args[5])
128+
log.Println(flag.Arg(4))
125129
}
126130

127-
filepaths, err := filepath.Glob(os.Args[5])
131+
filepaths, err := filepath.Glob(flag.Arg(4))
128132
if err != nil {
129-
log.Fatalf("Error: Invalid glob pattern: %s\n", os.Args[5])
133+
log.Fatalf("Error: Invalid glob pattern: %s\n", flag.Arg(4))
130134
}
131135

132136
if debug {
133137
log.Println("Expanded glob pattern: ")
134138
log.Printf("%v\n", filepaths)
135139
}
136140

137-
tag := os.Args[2]
138-
branch := os.Args[3]
139-
desc := os.Args[4]
141+
tag := flag.Arg(1)
142+
branch := flag.Arg(2)
143+
desc := flag.Arg(3)
140144

141-
CreateRelease(tag, branch, desc, filepaths)
145+
release := Release{
146+
TagName: tag,
147+
Name: tag,
148+
Prerelease: prereleaseFlag,
149+
Draft: false,
150+
Branch: branch,
151+
Body: desc,
152+
}
153+
publishRelease(release, filepaths)
142154
log.Println("Done")
143155
}
144156

@@ -172,8 +184,6 @@ func uploadFile(uploadURL, path string) {
172184
// CreateRelease creates a Github Release, attaching the given files as release assets
173185
// If a release already exist, up in Github, this function will attempt to attach the given files to it.
174186
func CreateRelease(tag, branch, desc string, filepaths []string) {
175-
endpoint := fmt.Sprintf("%s/releases", githubAPIEndpoint)
176-
177187
release := Release{
178188
TagName: tag,
179189
Name: tag,
@@ -182,7 +192,11 @@ func CreateRelease(tag, branch, desc string, filepaths []string) {
182192
Branch: branch,
183193
Body: desc,
184194
}
195+
publishRelease(release, filepaths)
196+
}
185197

198+
func publishRelease(release Release, filepaths []string) {
199+
endpoint := fmt.Sprintf("%s/releases", githubAPIEndpoint)
186200
releaseData, err := json.Marshal(release)
187201
if err != nil {
188202
log.Fatalln(err)
@@ -195,7 +209,7 @@ func CreateRelease(tag, branch, desc string, filepaths []string) {
195209
if err != nil && data != nil {
196210
log.Println(err)
197211
log.Println("Trying again assuming release already exists.")
198-
endpoint = fmt.Sprintf("%s/releases/tags/%s", githubAPIEndpoint, tag)
212+
endpoint = fmt.Sprintf("%s/releases/tags/%s", githubAPIEndpoint, release.TagName)
199213
data, err = doRequest("GET", endpoint, "application/json", nil, int64(0))
200214
}
201215

0 commit comments

Comments
 (0)