main
1package main
2
3import (
4 "context"
5 "embed"
6 "fmt"
7 "io/fs"
8 "log/slog"
9 "os"
10
11 "github.com/bryfry/bindle/internal/apt"
12 "github.com/bryfry/bindle/internal/bashrcd"
13 "github.com/bryfry/bindle/internal/extractor"
14 "github.com/bryfry/bindle/internal/golang"
15 "github.com/bryfry/bindle/internal/nvim"
16 "github.com/bryfry/bindle/internal/zig"
17)
18
19//go:embed home/**
20var _homeFS embed.FS
21
22const _homeRoot = "home"
23
24func main() {
25
26 err := apt.Install("vim", "tmux", "htop", "curl", "shellcheck", "git", "git-lfs")
27 if err != nil {
28 fmt.Println(err)
29 return // fmt.Errorf("apt install failed: %w", err)
30 }
31
32 err = golang.Install()
33 if err != nil {
34 fmt.Println(err)
35 return // fmt.Errorf("config deploy failed: %w", path, err)
36 }
37
38 err = nvim.Install()
39 if err != nil {
40 fmt.Println(err)
41 return // fmt.Errorf("config deploy failed: %w", path, err)
42 }
43
44 err = zig.Install()
45 if err != nil {
46 fmt.Println(err)
47 return // fmt.Errorf("config deploy failed: %w", path, err)
48 }
49
50 err = bashrcd.Install()
51 if err != nil {
52 fmt.Println(err)
53 return // fmt.Errorf("bashrc integration failed: %w", err)
54 }
55
56 contentFS, err := fs.Sub(_homeFS, _homeRoot)
57 if err != nil {
58 fmt.Println(err)
59 return // fmt.Errorf("config deploy failed: %w", path, err)
60 }
61
62 homeDir := os.Getenv("HOME")
63 e, _ := extractor.New(contentFS, homeDir)
64 err = e.Deploy()
65 if err != nil {
66 fmt.Println(err)
67 return // fmt.Errorf("config deploy failed: %w", path, err)
68 }
69
70 logger := slog.Default()
71 e.LogResults(logger, context.Background())
72}