Skip to content

Commit c10b3b2

Browse files
committed
feat: installing and extracting NodeJS packages
1 parent 0482272 commit c10b3b2

File tree

4 files changed

+61
-1
lines changed

4 files changed

+61
-1
lines changed

src/func/func.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,58 @@ package flightpkg
22

33
import (
44
"bufio"
5+
"encoding/json"
56
"fmt"
7+
"io/ioutil"
8+
"net/http"
69
"os"
10+
11+
grab "github.com/cavaliergopher/grab/v3"
12+
targz "github.com/walle/targz"
713
)
814

15+
func Install(args []string) {
16+
registry := "https://registry.yarnpkg.com/"
17+
// registry2 := "https://registry.npmmirror.com/"
18+
if len(args) != 1 {
19+
fmt.Println("flight install <pkg>")
20+
} else {
21+
22+
resp, err := http.Get(fmt.Sprintf(registry+"%v", args[0]))
23+
if err != nil {
24+
fmt.Println(err)
25+
}
26+
27+
defer resp.Body.Close()
28+
29+
body, err := ioutil.ReadAll(resp.Body)
30+
31+
if err != nil {
32+
fmt.Println(err)
33+
}
34+
35+
/* Getting the version of the package that is being installed. */
36+
var data map[string]interface{}
37+
json.Unmarshal(body, &data)
38+
39+
latest := data["dist-tags"].(map[string]interface{})["latest"].(string)
40+
tarball := data["versions"].(map[string]interface{})[latest].(map[string]interface{})["dist"].(map[string]interface{})["tarball"].(string)
41+
42+
os.Mkdir(".flight", 0777)
43+
os.Mkdir(".flight\\"+args[0], 0777)
44+
_, err = grab.Get(".flight\\"+args[0], tarball)
45+
if err != nil {
46+
fmt.Println(err)
47+
}
48+
fmt.Println("Installed " + args[0] + " @ " + latest)
49+
50+
targz.Extract(fmt.Sprintf("./.flight/%v/%v-%v.tgz", args[0], args[0], latest), "./node_modules")
51+
os.RemoveAll(".flight")
52+
os.Rename(fmt.Sprintf("./node_modules/package"), fmt.Sprintf("./node_modules/%v", args[0]))
53+
fmt.Println("Extracted " + args[0] + " @ " + latest)
54+
}
55+
}
56+
957
func Figlet() {
1058
// Open the file.
1159
f, _ := os.Open("..\\misc\\flight.txt")

src/go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ module flightpkg
22

33
go 1.18
44

5-
require github.com/mbndr/figlet4go v0.0.0-20190224160619-d6cef5b186ea // indirect
5+
require (
6+
github.com/cavaliergopher/grab/v3 v3.0.1 // indirect
7+
github.com/mbndr/figlet4go v0.0.0-20190224160619-d6cef5b186ea // indirect
8+
github.com/walle/targz v0.0.0-20140417120357-57fe4206da5a // indirect
9+
)

src/go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
1+
github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4=
2+
github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4=
13
github.com/mbndr/figlet4go v0.0.0-20190224160619-d6cef5b186ea h1:mQncVDBpKkAecPcH2IMGpKUQYhwowlafQbfkz2QFqkc=
24
github.com/mbndr/figlet4go v0.0.0-20190224160619-d6cef5b186ea/go.mod h1:QzTGLGoOqLHUBK8/EZ0v4Fa4CdyXmdyRwCHcl0YbeO4=
5+
github.com/walle/targz v0.0.0-20140417120357-57fe4206da5a h1:6cKSHLRphD9Fo1LJlISiulvgYCIafJ3QfKLimPYcAGc=
6+
github.com/walle/targz v0.0.0-20140417120357-57fe4206da5a/go.mod h1:nccQrXCnc5SjsThFLmL7hYbtT/mHJcuolPifzY5vJqE=

src/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ func main() {
1414
} else {
1515
if cli[0] == "help" {
1616
funcs.Help()
17+
} else if cli[0] == "install" {
18+
funcs.Install(cli[1:])
19+
} else {
20+
fmt.Println("flight <command> [arguments]")
1721
}
1822
}
1923
}

0 commit comments

Comments
 (0)