From 074ef32802ca2999656fbb708e179bc60846d5b0 Mon Sep 17 00:00:00 2001 From: wheelchairy Date: Tue, 4 Feb 2025 18:34:11 +0300 Subject: [PATCH] meh --- cmd/install-all.go | 82 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 cmd/install-all.go diff --git a/cmd/install-all.go b/cmd/install-all.go new file mode 100644 index 0000000..d91c52c --- /dev/null +++ b/cmd/install-all.go @@ -0,0 +1,82 @@ +package cmd + +import ( + "fmt" + "os" + "path/filepath" + "io" + "github.com/spf13/cobra" +) + +var installAllCmd = &cobra.Command{ + Use: "install-all", + Short: "Копирует бинарник и config.json в ~/.rails", + Run: func(cmd *cobra.Command, args []string) { + home, err := os.UserHomeDir() + if err != nil { + fmt.Printf("Ошибка получения домашней директории: %v\n", err) + os.Exit(1) + } + railsDir := filepath.Join(home, ".rails") + binDir := filepath.Join(railsDir, "bin") + configDir := filepath.Join(railsDir, "config") + if err := os.MkdirAll(binDir, 0755); err != nil { + fmt.Printf("Ошибка создания директории %s: %v\n", binDir, err) + os.Exit(1) + } + if err := os.MkdirAll(configDir, 0755); err != nil { + fmt.Printf("Ошибка создания директории %s: %v\n", configDir, err) + os.Exit(1) + } + exePath, err := os.Executable() + if err != nil { + fmt.Printf("Ошибка получения пути к бинарнику: %v\n", err) + os.Exit(1) + } + targetBin := filepath.Join(binDir, "train") + srcBin, err := os.Open(exePath) + if err != nil { + fmt.Printf("Ошибка открытия бинарника: %v\n", err) + os.Exit(1) + } + defer srcBin.Close() + dstBin, err := os.Create(targetBin) + if err != nil { + fmt.Printf("Ошибка создания файла бинарника: %v\n", err) + os.Exit(1) + } + defer dstBin.Close() + if _, err = io.Copy(dstBin, srcBin); err != nil { + fmt.Printf("Ошибка копирования бинарника: %v\n", err) + os.Exit(1) + } + if err = os.Chmod(targetBin, 0755); err != nil { + fmt.Printf("Ошибка установки прав для бинарника: %v\n", err) + os.Exit(1) + } + fmt.Printf("Бинарник скопирован в %s\n", targetBin) + sourceConfig := "./config.json" + targetConfig := filepath.Join(configDir, "config.json") + srcConfig, err := os.Open(sourceConfig) + if err != nil { + fmt.Printf("Ошибка открытия файла конфигурации: %v\n", err) + os.Exit(1) + } + defer srcConfig.Close() + dstConfig, err := os.Create(targetConfig) + if err != nil { + fmt.Printf("Ошибка создания файла конфигурации: %v\n", err) + os.Exit(1) + } + defer dstConfig.Close() + if _, err = io.Copy(dstConfig, srcConfig); err != nil { + fmt.Printf("Ошибка копирования файла конфигурации: %v\n", err) + os.Exit(1) + } + fmt.Printf("Файл конфигурации скопирован в %s\n", targetConfig) + }, +} + +func init() { + rootCmd.AddCommand(installAllCmd) +} \ No newline at end of file