diff options
Diffstat (limited to 'commands/bridge_push.go')
-rw-r--r-- | commands/bridge_push.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/commands/bridge_push.go b/commands/bridge_push.go new file mode 100644 index 00000000..11f5ca82 --- /dev/null +++ b/commands/bridge_push.go @@ -0,0 +1,62 @@ +package commands + +import ( + "fmt" + "time" + + "github.com/spf13/cobra" + + "github.com/MichaelMure/git-bug/bridge" + "github.com/MichaelMure/git-bug/bridge/core" + "github.com/MichaelMure/git-bug/cache" + "github.com/MichaelMure/git-bug/util/interrupt" +) + +func runBridgePush(cmd *cobra.Command, args []string) error { + backend, err := cache.NewRepoCache(repo) + if err != nil { + return err + } + defer backend.Close() + interrupt.RegisterCleaner(backend.Close) + + var b *core.Bridge + + if len(args) == 0 { + b, err = bridge.DefaultBridge(backend) + } else { + b, err = bridge.LoadBridge(backend, args[0]) + } + + if err != nil { + return err + } + + // TODO: by default export only new events + out, err := b.ExportAll(time.Time{}) + if err != nil { + return err + } + + for result := range out { + if result.Err != nil { + fmt.Println(result.Err, result.Reason) + } else { + fmt.Printf("%s: %s\n", result.String(), result.ID) + } + } + + return nil +} + +var bridgePushCmd = &cobra.Command{ + Use: "push [<name>]", + Short: "Push updates.", + PreRunE: loadRepo, + RunE: runBridgePush, + Args: cobra.MaximumNArgs(1), +} + +func init() { + bridgeCmd.AddCommand(bridgePushCmd) +} |