Skip to content

Commit

Permalink
Merge pull request #22 from ad-freiburg/save_and_load
Browse files Browse the repository at this point in the history
Support for wharfer load/save fixes #21
  • Loading branch information
niklas88 authored Sep 6, 2019
2 parents 8c16e57 + 2bf7eac commit 52ac495
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 0 deletions.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
module github.com/ad-freiburg/wharfer

require github.com/docker/docker v1.13.1

go 1.13
10 changes: 10 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ var runCmd wrap.Run
var psCmd wrap.Ps
var killCmd wrap.Kill
var rmCmd wrap.Rm
var loadCmd wrap.Load
var saveCmd wrap.Save
var logsCmd wrap.Logs
var pullCmd wrap.Pull
var imagesCmd wrap.Images
Expand All @@ -40,6 +42,8 @@ func init() {
runCmd.InitFlags()
psCmd.InitFlags()
killCmd.InitFlags()
loadCmd.InitFlags()
saveCmd.InitFlags()
logsCmd.InitFlags()
rmCmd.InitFlags()
pullCmd.InitFlags()
Expand All @@ -62,6 +66,8 @@ func main() {
fmt.Fprintln(os.Stderr, "\tps")
fmt.Fprintln(os.Stderr, "\tkill")
fmt.Fprintln(os.Stderr, "\trm")
fmt.Fprintln(os.Stderr, "\tload")
fmt.Fprintln(os.Stderr, "\tsave")
fmt.Fprintln(os.Stderr, "\tlogs")
fmt.Fprintln(os.Stderr, "\tpull")
fmt.Fprintln(os.Stderr, "\timages")
Expand All @@ -81,6 +87,10 @@ func main() {
args = killCmd.ParseToArgs(os.Args[2:])
case "rm":
args = rmCmd.ParseToArgs(os.Args[2:])
case "save":
args = saveCmd.ParseToArgs(os.Args[2:])
case "load":
args = loadCmd.ParseToArgs(os.Args[2:])
case "logs":
args = logsCmd.ParseToArgs(os.Args[2:])
case "ps":
Expand Down
44 changes: 44 additions & 0 deletions wrap/load.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package wrap

import (
"flag"
"os"
)

type Load struct {
Cmd *flag.FlagSet
Input string
Quiet bool
}

func (load *Load) InitFlags() {
const inputUsage = "Read from tar archive file, instead of STDIN"
load.Cmd = flag.NewFlagSet("load", flag.ExitOnError)
load.Cmd.StringVar(&load.Input, "input", "", inputUsage)
load.Cmd.StringVar(&load.Input, "i", "", inputUsage+" (shorthand)")
load.Cmd.BoolVar(&load.Quiet, "quiet", false, "Supress output")
load.Cmd.BoolVar(&load.Quiet, "q", false, "Supress output (shorthand)")
}

func (load *Load) ParseToArgs(rawArgs []string) []string {
if err := load.Cmd.Parse(rawArgs); err != nil {
// Only returns an error if the Usage was shown
os.Exit(0)
}
args := []string{"load"}
if load.Input != "" {
args = append(args, "--input", load.Input)
}

if load.Quiet {
args = append(args, "--quiet")
}

if load.Cmd.NArg() > 0 {
// add -- to make sure additional arguments are not interpreted as
// potentially harmful flags. Here this is the PATH
args = append(args, "--")
args = append(args, load.Cmd.Args()...)
}
return args
}
37 changes: 37 additions & 0 deletions wrap/save.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package wrap

import (
"flag"
"os"
)

type Save struct {
Cmd *flag.FlagSet
Output string
}

func (save *Save) InitFlags() {
const outputUsage = "Write to a file, instead of STDOUT"
save.Cmd = flag.NewFlagSet("save", flag.ExitOnError)
save.Cmd.StringVar(&save.Output, "output", "", outputUsage)
save.Cmd.StringVar(&save.Output, "o", "", outputUsage+" (shorthand)")
}

func (save *Save) ParseToArgs(rawArgs []string) []string {
if err := save.Cmd.Parse(rawArgs); err != nil {
// Only returns an error if the Usage was shown
os.Exit(0)
}
args := []string{"save"}
if save.Output != "" {
args = append(args, "--output", save.Output)
}

if save.Cmd.NArg() > 0 {
// add -- to make sure additional arguments are not interpreted as
// potentially harmful flags. Here this is the container to kill
args = append(args, "--")
args = append(args, save.Cmd.Args()...)
}
return args
}

0 comments on commit 52ac495

Please sign in to comment.