@@ -20,10 +20,18 @@ import (
20
20
"os"
21
21
"strings"
22
22
"time"
23
+
24
+ "github.com/mongodb/mongocli/internal/flag"
25
+ "github.com/spf13/cobra"
23
26
)
24
27
25
28
const mongocli = "mongocli"
26
29
30
+ type Opts struct {
31
+ fileName string
32
+ version string
33
+ }
34
+
27
35
type DownloadArchive struct {
28
36
PreviousReleasesLink string `json:"previous_releases_link"`
29
37
ReleaseDate time.Time `json:"release_date"`
@@ -51,21 +59,21 @@ type Link struct {
51
59
Name string `json:"name"`
52
60
}
53
61
54
- func newPlatform (tool , version , arch , system , distro string , formats []string ) * Platform {
62
+ func newPlatform (packageName , version , arch , system , distro string , formats []string ) * Platform {
55
63
p := & Platform {}
56
64
p .Arch = arch
57
65
p .OS = distro
58
66
59
67
links := make ([]Link , len (formats ))
60
68
for i , f := range formats {
61
69
links [i ] = Link {
62
- DownloadLink : fmt .Sprintf ("https://fastdl.mongodb.org/mongocli/%s_%s_%s_%s.%s" , tool , version , system , arch , f ),
70
+ DownloadLink : fmt .Sprintf ("https://fastdl.mongodb.org/mongocli/%s_%s_%s_%s.%s" , packageName , version , system , arch , f ),
63
71
Name : f ,
64
72
}
65
73
}
66
74
67
75
title := "MongoDB Atlas CLI"
68
- if tool == mongocli {
76
+ if packageName == mongocli {
69
77
title = "MongoDB CLI"
70
78
}
71
79
p .Packages = Package {
@@ -76,17 +84,11 @@ func newPlatform(tool, version, arch, system, distro string, formats []string) *
76
84
}
77
85
78
86
func main () {
79
- version := os .Args [1 ]
80
- feedFilename := os .Args [2 ]
81
- fmt .Printf ("Generating JSON: %s\n " , feedFilename )
82
- err := generateFile (feedFilename , version )
83
-
84
- if err != nil {
87
+ cmd := Builder ()
88
+ if err := cmd .Execute (); err != nil {
85
89
fmt .Printf ("error encoding file: %v\n " , err )
86
-
87
90
os .Exit (1 )
88
91
}
89
- fmt .Printf ("File %s has been generated\n " , feedFilename )
90
92
}
91
93
92
94
func generateFile (name , version string ) error {
@@ -119,3 +121,28 @@ func generateFile(name, version string) error {
119
121
jsonEncoder .SetIndent ("" , " " )
120
122
return jsonEncoder .Encode (downloadArchive )
121
123
}
124
+
125
+ func Builder () * cobra.Command {
126
+ opts := Opts {}
127
+ cmd := & cobra.Command {
128
+ Use : "main" ,
129
+ Short : "Generate the download center json file" ,
130
+ Example : `
131
+ Generate the download center json file for mongocli
132
+ $ main --version 1.23.0 --file mongocli.json` ,
133
+ RunE : func (cmd * cobra.Command , args []string ) error {
134
+ fmt .Printf ("Generating JSON: %s\n " , opts .fileName )
135
+ return generateFile (opts .fileName , opts .version )
136
+ },
137
+ PostRun : func (cmd * cobra.Command , args []string ) {
138
+ fmt .Printf ("File %s has been generated\n " , opts .fileName )
139
+ },
140
+ }
141
+
142
+ cmd .Flags ().StringVar (& opts .version , flag .Version , "" , "release version." )
143
+ cmd .Flags ().StringVar (& opts .fileName , flag .File , "mongocli.json" , "file name of the download center json file." )
144
+
145
+ _ = cmd .MarkFlagFilename (flag .File )
146
+ _ = cmd .MarkFlagRequired (flag .Version )
147
+ return cmd
148
+ }
0 commit comments