github.com/pluswing/datasync@v1.1.1-0.20240218052257-9077f6fc4ae3/cmd/push.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "path/filepath" 6 7 "github.com/pluswing/datasync/data" 8 "github.com/pluswing/datasync/file" 9 "github.com/pluswing/datasync/storage" 10 "github.com/spf13/cobra" 11 ) 12 13 var pushCmd = &cobra.Command{ 14 Use: "push [flags] [version_id]", 15 Short: "upload version", 16 Long: `upload version`, 17 Args: cobra.MatchAll(cobra.RangeArgs(0, 1), cobra.OnlyValidArgs), 18 Run: func(cmd *cobra.Command, args []string) { 19 _, err := file.FindCurrentDir() 20 if err != nil { 21 fmt.Println("datasync.yaml not found.\nPlease run `datasync init`") 22 return 23 } 24 25 version, err := file.GetCurrentVersion(args) 26 if err != nil { 27 fmt.Println(err.Error()) 28 return 29 } 30 31 dir, err := file.DataDir() 32 cobra.CheckErr(err) 33 34 data.DispatchStorage(setting.Storage, data.StorageFuncTable{ 35 Gcs: func(conf data.StorageGcsType) { 36 storage.Upload(version.FileNameWithDir(dir), version.FileName(), conf) 37 // FIXME .datasyncを同期したほうが良い。 38 file.MoveVersionToRemote(version) 39 storage.Upload(filepath.Join(dir, ".datasync"), ".datasync", conf) 40 }, 41 }) 42 fmt.Printf("push Succeeded. version_id = %s\n", version.Id) 43 }, 44 } 45 46 func init() { 47 rootCmd.AddCommand(pushCmd) 48 }