Skip to content

Commit ffc921a

Browse files
committed
chore(release): prepare v0.2.0-beta.9.0.7
1 parent e3bbb3c commit ffc921a

100 files changed

Lines changed: 1543 additions & 912 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "infynon"
3-
version = "0.2.0-beta.9.0.6"
3+
version = "0.2.0-beta.9.0.7"
44
edition = "2021"
55
authors = ["d4rkNinja"]
66
description = "Package intelligence, API flow testing, and shared coding memory for AI-assisted development"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ cargo install infynon
283283
### Go
284284

285285
```bash
286-
go install github.com/d4rkNinja/infynon-cli/go@latest
286+
go install github.com/d4rkNinja/infynon-cli/go/cmd/infynon@latest
287287
```
288288

289289
### Linux / macOS

docs/install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ cargo install infynon
2222
### Go
2323

2424
```bash
25-
go install github.com/d4rkNinja/infynon-cli/go@latest
25+
go install github.com/d4rkNinja/infynon-cli/go/cmd/infynon@latest
2626
```
2727

2828
### Linux / macOS (shell script)

go/cmd/infynon/main.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package main
2+
3+
import "github.com/d4rkNinja/infynon-cli/go/internal/installer"
4+
5+
func main() {
6+
installer.Main()
7+
}

go/internal/installer/installer.go

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
package installer
2+
3+
import (
4+
"fmt"
5+
"io"
6+
"net/http"
7+
"os"
8+
"os/exec"
9+
"path/filepath"
10+
"runtime"
11+
"time"
12+
)
13+
14+
const (
15+
repo = "d4rkNinja/infynon-cli"
16+
version = "0.2.0-beta.9.0.7"
17+
)
18+
19+
func targetTriple() (target, ext string, ok bool) {
20+
switch runtime.GOOS + "/" + runtime.GOARCH {
21+
case "windows/amd64":
22+
return "x86_64-pc-windows-msvc", ".exe", true
23+
case "linux/amd64":
24+
return "x86_64-unknown-linux-musl", "", true
25+
case "linux/arm64":
26+
return "aarch64-unknown-linux-musl", "", true
27+
case "darwin/amd64":
28+
return "x86_64-apple-darwin", "", true
29+
case "darwin/arm64":
30+
return "aarch64-apple-darwin", "", true
31+
default:
32+
return "", "", false
33+
}
34+
}
35+
36+
func binDir() (string, error) {
37+
if exe, err := os.Executable(); err == nil {
38+
if dir := filepath.Dir(exe); dir != "." && dir != "" {
39+
return dir, nil
40+
}
41+
}
42+
if gobin := os.Getenv("GOBIN"); gobin != "" {
43+
return gobin, nil
44+
}
45+
if gopath := os.Getenv("GOPATH"); gopath != "" {
46+
return filepath.Join(gopath, "bin"), nil
47+
}
48+
home, err := os.UserHomeDir()
49+
if err != nil {
50+
return "", err
51+
}
52+
return filepath.Join(home, "go", "bin"), nil
53+
}
54+
55+
func download(url, dest string) error {
56+
if err := os.MkdirAll(filepath.Dir(dest), 0o755); err != nil {
57+
return err
58+
}
59+
60+
tmp, err := os.CreateTemp(filepath.Dir(dest), ".infynon-download-*")
61+
if err != nil {
62+
return err
63+
}
64+
tmpPath := tmp.Name()
65+
removeTmp := true
66+
defer func() {
67+
if removeTmp {
68+
_ = os.Remove(tmpPath)
69+
}
70+
}()
71+
72+
client := http.Client{Timeout: 60 * time.Second}
73+
req, err := http.NewRequest(http.MethodGet, url, nil)
74+
if err != nil {
75+
_ = tmp.Close()
76+
return err
77+
}
78+
req.Header.Set("User-Agent", "infynon-go-installer")
79+
80+
resp, err := client.Do(req)
81+
if err != nil {
82+
_ = tmp.Close()
83+
return err
84+
}
85+
defer resp.Body.Close()
86+
87+
if resp.StatusCode != http.StatusOK {
88+
_ = tmp.Close()
89+
return fmt.Errorf("download failed: HTTP %d from %s", resp.StatusCode, url)
90+
}
91+
92+
if _, err := io.Copy(tmp, resp.Body); err != nil {
93+
_ = tmp.Close()
94+
return err
95+
}
96+
if err := tmp.Close(); err != nil {
97+
return err
98+
}
99+
if runtime.GOOS != "windows" {
100+
if err := os.Chmod(tmpPath, 0o755); err != nil {
101+
return err
102+
}
103+
}
104+
if err := os.Rename(tmpPath, dest); err != nil {
105+
return err
106+
}
107+
removeTmp = false
108+
return nil
109+
}
110+
111+
func runBinary(binPath string, args []string) {
112+
cmd := exec.Command(binPath, args...)
113+
cmd.Stdin = os.Stdin
114+
cmd.Stdout = os.Stdout
115+
cmd.Stderr = os.Stderr
116+
if err := cmd.Run(); err != nil {
117+
if exitErr, ok := err.(*exec.ExitError); ok {
118+
os.Exit(exitErr.ExitCode())
119+
}
120+
fmt.Fprintf(os.Stderr, "[infynon] Failed to run binary: %v\n", err)
121+
os.Exit(1)
122+
}
123+
}
124+
125+
func Main() {
126+
target, ext, ok := targetTriple()
127+
if !ok {
128+
fmt.Fprintf(os.Stderr, "[infynon] Unsupported platform: %s/%s\n", runtime.GOOS, runtime.GOARCH)
129+
fmt.Fprintf(os.Stderr, " Build from source: cargo install --git https://github.com/%s\n", repo)
130+
os.Exit(1)
131+
}
132+
133+
dir, err := binDir()
134+
if err != nil {
135+
fmt.Fprintf(os.Stderr, "[infynon] Could not resolve install directory: %v\n", err)
136+
os.Exit(1)
137+
}
138+
binPath := filepath.Join(dir, "infynon"+ext)
139+
140+
if _, err := os.Stat(binPath); err == nil {
141+
runBinary(binPath, os.Args[1:])
142+
return
143+
}
144+
145+
tag := "v" + version
146+
asset := "infynon-" + target + ext
147+
url := fmt.Sprintf("https://github.com/%s/releases/download/%s/%s", repo, tag, asset)
148+
149+
fmt.Printf("[infynon] Downloading %s from %s release...\n", asset, tag)
150+
if err := download(url, binPath); err != nil {
151+
fmt.Fprintf(os.Stderr, "[infynon] Download failed: %v\n", err)
152+
fmt.Fprintf(os.Stderr, "[infynon] Manual install: https://github.com/%s/releases/tag/%s\n", repo, tag)
153+
os.Exit(1)
154+
}
155+
156+
fmt.Printf("[infynon] Installed to %s\n", binPath)
157+
if len(os.Args) > 1 {
158+
runBinary(binPath, os.Args[1:])
159+
return
160+
}
161+
fmt.Println("[infynon] Run: infynon --help")
162+
}

go/main.go

Lines changed: 5 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,138 +1,12 @@
1-
// Package main provides a Go-installable wrapper for the INFYNON CLI.
1+
// Package main keeps the legacy /go install path working.
22
//
3-
// Install:
3+
// Prefer:
44
//
5-
// go install github.com/d4rkNinja/infynon-cli/go@latest
6-
//
7-
// This downloads the pre-built binary from GitHub Releases for your
8-
// platform and places it in your $GOPATH/bin.
5+
// go install github.com/d4rkNinja/infynon-cli/go/cmd/infynon@latest
96
package main
107

11-
import (
12-
"fmt"
13-
"io"
14-
"net/http"
15-
"os"
16-
"os/exec"
17-
"path/filepath"
18-
"runtime"
19-
)
20-
21-
const (
22-
repo = "d4rkNinja/infynon-cli"
23-
version = "0.2.0-beta.9.0.6"
24-
)
25-
26-
func targetTriple() (target, ext string, ok bool) {
27-
switch runtime.GOOS + "/" + runtime.GOARCH {
28-
case "windows/amd64":
29-
return "x86_64-pc-windows-msvc", ".exe", true
30-
case "linux/amd64":
31-
return "x86_64-unknown-linux-musl", "", true
32-
case "linux/arm64":
33-
return "aarch64-unknown-linux-musl", "", true
34-
case "darwin/amd64":
35-
return "x86_64-apple-darwin", "", true
36-
case "darwin/arm64":
37-
return "aarch64-apple-darwin", "", true
38-
default:
39-
return "", "", false
40-
}
41-
}
42-
43-
func binDir() string {
44-
if gopath := os.Getenv("GOPATH"); gopath != "" {
45-
return filepath.Join(gopath, "bin")
46-
}
47-
home, _ := os.UserHomeDir()
48-
return filepath.Join(home, "go", "bin")
49-
}
50-
51-
func download(url, dest string) error {
52-
resp, err := http.Get(url)
53-
if err != nil {
54-
return err
55-
}
56-
defer resp.Body.Close()
57-
58-
if resp.StatusCode != 200 {
59-
return fmt.Errorf("download failed: HTTP %d from %s", resp.StatusCode, url)
60-
}
61-
62-
f, err := os.Create(dest)
63-
if err != nil {
64-
return err
65-
}
66-
defer f.Close()
67-
68-
_, err = io.Copy(f, resp.Body)
69-
return err
70-
}
8+
import "github.com/d4rkNinja/infynon-cli/go/internal/installer"
719

7210
func main() {
73-
target, ext, ok := targetTriple()
74-
if !ok {
75-
fmt.Fprintf(os.Stderr, "[infynon] Unsupported platform: %s/%s\n", runtime.GOOS, runtime.GOARCH)
76-
fmt.Fprintf(os.Stderr, " Build from source: cargo install --git https://github.com/%s\n", repo)
77-
os.Exit(1)
78-
}
79-
80-
dir := binDir()
81-
binPath := filepath.Join(dir, "infynon"+ext)
82-
83-
// If binary already exists, just exec it with args
84-
if _, err := os.Stat(binPath); err == nil {
85-
cmd := exec.Command(binPath, os.Args[1:]...)
86-
cmd.Stdin = os.Stdin
87-
cmd.Stdout = os.Stdout
88-
cmd.Stderr = os.Stderr
89-
if err := cmd.Run(); err != nil {
90-
if exitErr, ok := err.(*exec.ExitError); ok {
91-
os.Exit(exitErr.ExitCode())
92-
}
93-
os.Exit(1)
94-
}
95-
return
96-
}
97-
98-
// Download binary from GitHub releases
99-
tag := "v" + version
100-
asset := "infynon-" + target + ext
101-
url := fmt.Sprintf("https://github.com/%s/releases/download/%s/%s", repo, tag, asset)
102-
103-
fmt.Printf("[infynon] Downloading %s from %s release...\n", asset, tag)
104-
105-
if err := os.MkdirAll(dir, 0o755); err != nil {
106-
fmt.Fprintf(os.Stderr, "[infynon] Failed to create bin dir: %v\n", err)
107-
os.Exit(1)
108-
}
109-
110-
if err := download(url, binPath); err != nil {
111-
fmt.Fprintf(os.Stderr, "[infynon] Download failed: %v\n", err)
112-
fmt.Fprintf(os.Stderr, "[infynon] Manual install: https://github.com/%s/releases/tag/%s\n", repo, tag)
113-
os.Exit(1)
114-
}
115-
116-
if runtime.GOOS != "windows" {
117-
os.Chmod(binPath, 0o755)
118-
}
119-
120-
fmt.Printf("[infynon] Installed to %s\n", binPath)
121-
122-
// Run with any passed args
123-
if len(os.Args) > 1 {
124-
cmd := exec.Command(binPath, os.Args[1:]...)
125-
cmd.Stdin = os.Stdin
126-
cmd.Stdout = os.Stdout
127-
cmd.Stderr = os.Stderr
128-
if err := cmd.Run(); err != nil {
129-
if exitErr, ok := err.(*exec.ExitError); ok {
130-
os.Exit(exitErr.ExitCode())
131-
}
132-
os.Exit(1)
133-
}
134-
} else {
135-
// Show version info after fresh install
136-
fmt.Printf("[infynon] Run: infynon --help\n")
137-
}
11+
installer.Main()
13812
}

npm/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ This package downloads the matching native binary for your OS and architecture.
2929

3030
```bash
3131
cargo install infynon # Rust (crates.io)
32-
go install github.com/d4rkNinja/infynon-cli/go@latest # Go
32+
go install github.com/d4rkNinja/infynon-cli/go/cmd/infynon@latest # Go
3333
curl -fsSL https://raw.githubusercontent.com/d4rkNinja/infynon-cli/main/scripts/install.sh | bash # Linux/macOS
3434
```
3535

npm/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "infynon",
3-
"version": "0.2.0-beta.9.0.6",
3+
"version": "0.2.0-beta.9.0.7",
44
"description": "Package intelligence, API flow testing, and repo memory for AI-assisted backend teams.",
55
"bin": {
66
"infynon": "run.js",
@@ -16,7 +16,7 @@
1616
"preuninstall.js"
1717
],
1818
"engines": {
19-
"node": ">=14"
19+
"node": ">=14.14"
2020
},
2121
"keywords": [
2222
"security",

0 commit comments

Comments
 (0)