From 0f883d49e7f686b7c1074c64b4f4da16968176e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Mon, 24 May 2021 00:11:57 +0300 Subject: [PATCH] start undocker --- BUILD | 15 +++++++++++++++ main.go | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 BUILD create mode 100644 main.go diff --git a/BUILD b/BUILD new file mode 100644 index 0000000..bd10e1f --- /dev/null +++ b/BUILD @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "undocker_lib", + srcs = ["main.go"], + importpath = "github.com/motiejus/code/undocker", + visibility = ["//visibility:private"], + deps = ["@com_github_jessevdk_go_flags//:go-flags"], +) + +go_binary( + name = "undocker", + embed = [":undocker_lib"], + visibility = ["//visibility:public"], +) diff --git a/main.go b/main.go new file mode 100644 index 0000000..36ade5a --- /dev/null +++ b/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "os" + "errors" + + goflags "github.com/jessevdk/go-flags" +) + +type opts struct { + PositionalArgs struct { + Infile goflags.Filename `long:"infile" description:"Docker container tarball"` + Outfile string `long:"outfile" description:"Output tarball"` + } `positional-args:"yes" required:"yes"` +} + +func main() { + if err := run(os.Args); err != nil { + os.Exit(1) + } + os.Exit(0) +} + +func run(args []string) error { + var flags opts + args1, err := goflags.ParseArgs(&flags, args) + if err != nil { + return err + } + if len(args1) != 0 { + return errors.New("too many args") + } + + fmt.Printf("infile: %s\n", flags.PositionalArgs.Infile) + fmt.Printf("outfile: %s\n", flags.PositionalArgs.Outfile) + + return nil +}