Skip to content

Commit

Permalink
Merge pull request #62 from bodgit/issue61
Browse files Browse the repository at this point in the history
Decompress to `.iso` file automatically
  • Loading branch information
bodgit committed Feb 1, 2023
2 parents 119bf5f + f18728d commit 8fba9da
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions cmd/rvz/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ import (
"io"
"log"
"os"
"path/filepath"
"strings"

"github.com/bodgit/plumbing"
"github.com/bodgit/rvz"
"github.com/schollz/progressbar/v3"
"github.com/urfave/cli/v2"
)

const isoExtension = ".iso"

var (
version = "dev"
commit = "none" //nolint:gochecknoglobals
Expand All @@ -31,7 +36,16 @@ func decompress(c *cli.Context) error {
cli.ShowCommandHelpAndExit(c, c.Command.FullName(), 1)
}

f, err := os.Open(c.Args().First())
src, dst := c.Args().Get(0), c.Args().Get(1)
if dst == "" {
if ext := filepath.Ext(src); ext == isoExtension {
return fmt.Errorf("source file %s already has %s extension", src, isoExtension)
}

dst = strings.TrimSuffix(src, rvz.Extension) + isoExtension
}

f, err := os.Open(src)
if err != nil {
return err
}
Expand All @@ -42,23 +56,20 @@ func decompress(c *cli.Context) error {
return err
}

var w io.Writer
var w io.WriteCloser

if c.NArg() >= 2 {
w, err = os.Create(c.Args().Get(1))
if err != nil {
return err
}
defer w.(io.Closer).Close() //nolint:forcetypeassert
} else {
w = os.Stdout
w, err = os.Create(dst)
if err != nil {
return err
}

if c.Bool("verbose") {
pb := progressbar.DefaultBytes(r.Size())
w = io.MultiWriter(w, pb)
w = plumbing.MultiWriteCloser(w, plumbing.NopWriteCloser(pb))
}

defer w.Close()

_, err = io.Copy(w, r)

return err
Expand Down

0 comments on commit 8fba9da

Please sign in to comment.