@@ -2,6 +2,7 @@ package main
22
33import (
44 "bytes"
5+ "encoding/json"
56 "fmt"
67 "os"
78 "path/filepath"
@@ -10,28 +11,35 @@ import (
1011)
1112
1213func main () {
13- outdir , err := getDistFolderPath ()
14+ outDir , err := getDistFolderPath ()
1415
1516 if err != nil {
1617 fmt .Println ("[ERROR] [getDistFolderPath] " , err )
1718 return
1819 }
1920
20- err = createDistFolder (outdir )
21+ meta , err := getReleaserMetaData ()
22+
23+ if err != nil {
24+ fmt .Println ("[ERROR] [getReleaserMetaData] " , err )
25+ return
26+ }
27+
28+ err = createDistFolder (outDir )
2129
2230 if err != nil {
2331 fmt .Println ("[ERROR] [createDistFolder] " , err )
2432 return
2533 }
2634
27- pkgString , err := getPackageJsonString ()
35+ pkgString , err := getPackageJsonString (* meta )
2836
2937 if err != nil {
3038 fmt .Println ("[ERROR] [getPackageJsonString] " , err )
3139 return
3240 }
3341
34- err = writePackageJson (outdir , pkgString )
42+ err = writePackageJson (outDir , pkgString )
3543
3644 if err != nil {
3745 fmt .Println ("[ERROR] [writePackageJson] " , err )
@@ -41,11 +49,6 @@ func main() {
4149 fmt .Println ("package.json created" )
4250}
4351
44- type Foo struct {
45- Version string
46- URL string
47- }
48-
4952func getDistFolderPath () (string , error ) {
5053 fullPath , err := filepath .Abs ("./" )
5154
@@ -70,7 +73,12 @@ func createDistFolder(distPath string) error {
7073 return nil
7174}
7275
73- func getPackageJsonString () (string , error ) {
76+ type PkgJsonTemplate struct {
77+ Version string
78+ URL string
79+ }
80+
81+ func getPackageJsonString (meta ReleaserMetaData ) (string , error ) {
7482 temp , err := template .ParseFiles ("./scripts/templates/package.json" )
7583
7684 if err != nil {
@@ -79,8 +87,9 @@ func getPackageJsonString() (string, error) {
7987
8088 var buff bytes.Buffer
8189
82- temp .Execute (& buff , Foo {Version : "2.0.0" ,
83- URL : `https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/myGoPackage_{{version}}_{{platform}}_{{arch}}.tar.gz` ,
90+ temp .Execute (& buff , PkgJsonTemplate {
91+ Version : meta .GetVersion (),
92+ URL : fmt .Sprintf ("https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/%s_{{version}}_{{platform}}_{{arch}}.tar.gz" , meta .ProjectName ),
8493 })
8594
8695 result := buff .String ()
@@ -104,3 +113,41 @@ func writePackageJson(distPath string, pkgString string) error {
104113
105114 return nil
106115}
116+
117+ type ReleaserMetaData struct {
118+ Tag string `json:"tag"`
119+ ProjectName string `json:"project_name"`
120+ }
121+
122+ func (r * ReleaserMetaData ) GetVersion () string {
123+ // remove v prefix
124+ return r .Tag [1 :]
125+ }
126+
127+ func getReleaserMetaData () (* ReleaserMetaData , error ) {
128+ fullPath , err := filepath .Abs ("./" )
129+
130+ if err != nil {
131+ return nil , err
132+ }
133+
134+ releaserMetaPath := filepath .Join (fullPath , "dist/metadata.json" )
135+
136+ file , err := os .Open (releaserMetaPath )
137+
138+ if err != nil {
139+ return nil , err
140+ }
141+
142+ defer file .Close ()
143+
144+ var meta ReleaserMetaData
145+
146+ err = json .NewDecoder (file ).Decode (& meta )
147+
148+ if err != nil {
149+ return nil , err
150+ }
151+
152+ return & meta , nil
153+ }
0 commit comments