main
Raw Download raw file
 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}