diff --git a/cmd/hoster_cli/commands/new.go b/cmd/hoster_cli/commands/new.go index 9a1b84d..d7557c4 100644 --- a/cmd/hoster_cli/commands/new.go +++ b/cmd/hoster_cli/commands/new.go @@ -19,6 +19,10 @@ import ( ) func CmdNew(c *cli.Context) error { + if os.Getuid() != 0 { + golog.Fatalf("You need to run this command as root.") + } + name := strings.TrimSpace(c.String("name")) domain := strings.TrimSpace(c.String("domain")) customProjectPath := strings.TrimSpace(c.String("custom-path")) diff --git a/cmd/hoster_cli/hoster.go b/cmd/hoster_cli/hoster.go index 352cba5..1c246e0 100644 --- a/cmd/hoster_cli/hoster.go +++ b/cmd/hoster_cli/hoster.go @@ -2,6 +2,7 @@ package hoster_cli import ( "os" + "os/user" "path/filepath" "gitea.codeblob.work/pk/hoster/cmd/hoster_cli/commands" @@ -12,17 +13,12 @@ import ( ) func Execute() { - homeDir, err := os.UserHomeDir() - if err != nil { - golog.Fatalf("Error getting home directory: %v", err) - } - - conf.LoadConfig(filepath.Join(homeDir, ".hoster.yml")) + conf.LoadConfig(filepath.Join(findHomeDir(), ".hoster.yml")) app := &cli.App{ Name: "hoster", Usage: "Hoster", - Version: "1.0.8", + Version: "1.0.9", Commands: []*cli.Command{ { Name: "new", @@ -60,3 +56,27 @@ func Execute() { golog.Fatal(err) } } + +func findHomeDir() string { + if os.Getuid() == 0 { + username := os.Getenv("SUDO_USER") + + if username == "" { + golog.Fatalf("SUDO_USER environment variable is not set.") + } + + u, err := user.Lookup(username) + if err != nil { + golog.Fatal(err) + } + + return u.HomeDir + } + + dir, err := os.UserHomeDir() + if err != nil { + golog.Fatalf("Error getting home directory: %v", err) + } + + return dir +}