Skip to content

Commit 773a082

Browse files
track cmd/mint/
1 parent d208702 commit 773a082

3 files changed

Lines changed: 93 additions & 3 deletions

File tree

.github/workflows/release.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
name: Release
22

33
on:
4-
pull_request:
4+
workflow_dispatch:
55
push:
66
branches:
77
- main
8-
8+
paths:
9+
- VERSION
10+
911
jobs:
1012
snapshot:
1113
runs-on: ubuntu-latest

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Binaries
2-
mint
2+
/mint
33
mint.exe
44
*.exe
55
*.test

cmd/mint/main.go

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package main
2+
3+
import (
4+
"flag"
5+
"fmt"
6+
"os"
7+
"os/signal"
8+
"syscall"
9+
10+
tea "github.com/charmbracelet/bubbletea"
11+
12+
"github.com/programmersd21/mint/internal/api"
13+
"github.com/programmersd21/mint/internal/cache"
14+
"github.com/programmersd21/mint/internal/downloads"
15+
"github.com/programmersd21/mint/internal/tui"
16+
)
17+
18+
var (
19+
version = "dev"
20+
commit = "unknown"
21+
buildDate = "unknown"
22+
)
23+
24+
func main() {
25+
showVersion := flag.Bool("version", false, "Show version")
26+
dataDir := flag.String("data-dir", defaultDataDir(), "Data directory for cache and settings")
27+
downloadDir := flag.String("download-dir", defaultDownloadDir(), "Download directory")
28+
apiKey := flag.String("api-key", "", "Modrinth API key")
29+
flag.Parse()
30+
31+
if *showVersion {
32+
fmt.Printf("mint %s (commit: %s, built: %s)\n", version, commit, buildDate)
33+
return
34+
}
35+
36+
c, err := cache.Open(cache.Config{DataDir: *dataDir})
37+
if err != nil {
38+
fmt.Fprintf(os.Stderr, "error opening cache: %s\n", err)
39+
os.Exit(1)
40+
}
41+
defer c.Close()
42+
43+
client := api.NewClient()
44+
if *apiKey != "" {
45+
client = api.NewClient(api.WithAPIKey(*apiKey))
46+
}
47+
48+
dlDir := *downloadDir
49+
if dlDir == "" {
50+
dlDir = *dataDir + "/downloads"
51+
}
52+
dlmgr := downloads.NewManager(dlDir, 3, c)
53+
defer dlmgr.Close()
54+
55+
p := tea.NewProgram(
56+
tui.New(client, c, dlmgr),
57+
tea.WithAltScreen(),
58+
tea.WithMouseCellMotion(),
59+
)
60+
61+
sigChan := make(chan os.Signal, 1)
62+
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
63+
go func() {
64+
<-sigChan
65+
p.Quit()
66+
}()
67+
68+
if _, err := p.Run(); err != nil {
69+
fmt.Fprintf(os.Stderr, "error: %s\n", err)
70+
os.Exit(1)
71+
}
72+
}
73+
74+
func defaultDataDir() string {
75+
home, err := os.UserHomeDir()
76+
if err != nil {
77+
return ".mint"
78+
}
79+
return home + "/.local/share/mint"
80+
}
81+
82+
func defaultDownloadDir() string {
83+
home, err := os.UserHomeDir()
84+
if err != nil {
85+
return "downloads"
86+
}
87+
return home + "/Downloads/mint"
88+
}

0 commit comments

Comments
 (0)