From a9b4f1ecd40e85db115af2fccc1d62cbb9801ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Mon, 24 May 2021 00:11:58 +0300 Subject: [PATCH] move command implementations to internal/ --- BUILD | 3 +-- internal/cmdrootfs/BUILD | 13 ++++++++++ internal/cmdrootfs/cmdrootfs.go | 43 +++++++++++++++++++++++++++++++++ main.go | 41 +++---------------------------- 4 files changed, 60 insertions(+), 40 deletions(-) create mode 100644 internal/cmdrootfs/BUILD create mode 100644 internal/cmdrootfs/cmdrootfs.go diff --git a/BUILD b/BUILD index 2453045..c9adc08 100644 --- a/BUILD +++ b/BUILD @@ -6,9 +6,8 @@ go_library( importpath = "github.com/motiejus/code/undocker", visibility = ["//visibility:private"], deps = [ - "//src/undocker/rootfs:go_default_library", + "//src/undocker/internal/cmdrootfs:go_default_library", "@com_github_jessevdk_go_flags//:go_default_library", - "@org_uber_go_multierr//:go_default_library", ], ) diff --git a/internal/cmdrootfs/BUILD b/internal/cmdrootfs/BUILD new file mode 100644 index 0000000..c6f077f --- /dev/null +++ b/internal/cmdrootfs/BUILD @@ -0,0 +1,13 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["cmdrootfs.go"], + importpath = "github.com/motiejus/code/undocker/internal/cmdrootfs", + visibility = ["//src/undocker:__subpackages__"], + deps = [ + "//src/undocker/rootfs:go_default_library", + "@com_github_jessevdk_go_flags//:go_default_library", + "@org_uber_go_multierr//:go_default_library", + ], +) diff --git a/internal/cmdrootfs/cmdrootfs.go b/internal/cmdrootfs/cmdrootfs.go new file mode 100644 index 0000000..74ff270 --- /dev/null +++ b/internal/cmdrootfs/cmdrootfs.go @@ -0,0 +1,43 @@ +package cmdrootfs + +import ( + "errors" + "os" + + goflags "github.com/jessevdk/go-flags" + "github.com/motiejus/code/undocker/rootfs" + "go.uber.org/multierr" +) + +type CmdRootFS struct { + PositionalArgs struct { + Infile goflags.Filename `long:"infile" description:"Input tarball"` + Outfile string `long:"outfile" description:"Output path, stdout is '-'"` + } `positional-args:"yes" required:"yes"` +} + +func (r *CmdRootFS) Execute(args []string) (err error) { + if len(args) != 0 { + return errors.New("too many args") + } + + in, err := os.Open(string(r.PositionalArgs.Infile)) + if err != nil { + return err + } + defer func() { err = multierr.Append(err, in.Close()) }() + + var out *os.File + outf := string(r.PositionalArgs.Outfile) + if outf == "-" { + out = os.Stdout + } else { + out, err = os.Create(outf) + if err != nil { + return err + } + } + defer func() { err = multierr.Append(err, out.Close()) }() + + return rootfs.RootFS(in, out) +} diff --git a/main.go b/main.go index 0b20280..69c7a55 100644 --- a/main.go +++ b/main.go @@ -1,18 +1,16 @@ package main import ( - "errors" "os" goflags "github.com/jessevdk/go-flags" - "github.com/motiejus/code/undocker/rootfs" - "go.uber.org/multierr" + "github.com/motiejus/code/undocker/internal/cmdrootfs" ) type ( params struct { - RootFS cmdRootFS `command:"rootfs" description:"Unpack a docker container image to a single filesystem tarball"` - Manifest cmdManifest `command:"manifest"` + RootFS cmdrootfs.CmdRootFS `command:"rootfs" description:"Unpack a docker container image to a single filesystem tarball"` + Manifest cmdManifest `command:"manifest"` } cmdManifest struct{} // stub @@ -33,36 +31,3 @@ func run(args []string) error { return nil } - -type cmdRootFS struct { - PositionalArgs struct { - Infile goflags.Filename `long:"infile" description:"Input tarball"` - Outfile string `long:"outfile" description:"Output path, stdout is '-'"` - } `positional-args:"yes" required:"yes"` -} - -func (r *cmdRootFS) Execute(args []string) (err error) { - if len(args) != 0 { - return errors.New("too many args") - } - - in, err := os.Open(string(r.PositionalArgs.Infile)) - if err != nil { - return err - } - defer func() { err = multierr.Append(err, in.Close()) }() - - var out *os.File - outf := string(r.PositionalArgs.Outfile) - if outf == "-" { - out = os.Stdout - } else { - out, err = os.Create(outf) - if err != nil { - return err - } - } - defer func() { err = multierr.Append(err, out.Close()) }() - - return rootfs.RootFS(in, out) -}