refactor: seperate files, function and structs into seperate packages
This commit is contained in:
parent
7f951585c8
commit
5b7775f33e
37 changed files with 547 additions and 677 deletions
43
dotfiles/dotfiles.go
Normal file
43
dotfiles/dotfiles.go
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
package dotfiles
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"system_setup_tool/internal/shell"
|
||||
)
|
||||
|
||||
type DotfilesConfig struct {
|
||||
Enable bool `mapstructure:"enable"`
|
||||
GitRepo string `mapstructure:"git_repo"`
|
||||
}
|
||||
|
||||
func SetupDotfiles(config DotfilesConfig) error {
|
||||
if _, err := shell.ExecLookPath("git"); err != nil {
|
||||
return fmt.Errorf("git ist nicht installiert")
|
||||
}
|
||||
|
||||
if _, err := shell.ExecLookPath("stow"); err != nil {
|
||||
return fmt.Errorf("gnu stow not installed")
|
||||
}
|
||||
|
||||
dotfilesDir := filepath.Join(os.Getenv("HOME"), "dotfiles")
|
||||
|
||||
cmd := shell.ExecCommand("git", "clone", config.GitRepo, dotfilesDir)
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("error cloning dotfiles: %v", err)
|
||||
}
|
||||
|
||||
if err := os.Chdir(dotfilesDir); err != nil {
|
||||
return fmt.Errorf("error changing into dotfiles directory: %v", err)
|
||||
}
|
||||
|
||||
cmd = shell.ExecCommand("stow", ".", "--override='*'")
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Printf("error creating links: %v", err)
|
||||
}
|
||||
fmt.Printf("all linked properly\n")
|
||||
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue