aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorMarin Ivanov <[email protected]>2024-04-06 19:55:50 +0300
committerMarin Ivanov <[email protected]>2024-04-06 19:55:50 +0300
commitfae24c8056d5a97dd906238cd7d8c7e407094b3c (patch)
tree41a7a69e32d839c60d0745d6940ba2b6e1c3fd1d /main.go
parentd08ac6d01bd0adba84f9227e83b288e36eebccc1 (diff)
first useful version
Diffstat (limited to 'main.go')
-rw-r--r--main.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/main.go b/main.go
index 95de8b9..d880612 100644
--- a/main.go
+++ b/main.go
@@ -1,9 +1,55 @@
package main
import (
+ "archive/tar"
+ "io"
+ "log"
+ "os"
+
flag "github.com/spf13/pflag"
)
func main() {
+ var prefix string
+ var verbose int
+ flag.CountVarP(&verbose, "verbose", "v", "add verbosity")
+ flag.StringVarP(&prefix, "prefix", "p", "", "adds prefix to filenames")
flag.Parse()
+
+ if err := process(prefix, verbose); err != nil {
+ log.Fatal(err)
+ }
+
+}
+
+func process(prefix string, verbose int) error {
+ tr := tar.NewReader(os.Stdin)
+ tw := tar.NewWriter(os.Stdout)
+ defer tw.Close()
+ for {
+ hdr, err := tr.Next()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return err
+ }
+
+ if verbose >= 1 {
+ log.Printf("file: %s", hdr.Name)
+ }
+
+ hdr.Name = prefix + hdr.Name
+
+ if err = tw.WriteHeader(hdr); err != nil {
+ return err
+ }
+ if _, err := io.Copy(tw, tr); err != nil {
+ return err
+ }
+ }
+ if err := tw.Flush(); err != nil {
+ return err
+ }
+
+ return nil
}