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  }