in commands/util.go [663:736]
func unpackGzip(inpath string, outpath string) error {
var exists bool
var err error
exists, err = FileExists(outpath)
if err != nil {
return err
}
if exists {
errStr := wski18n.T("The file '{{.name}}' already exists. Delete it and retry.",
map[string]interface{}{"name": outpath})
werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
return werr
}
exists, err = FileExists(inpath)
if err != nil {
return err
}
if !exists {
errMsg := wski18n.T("File '{{.name}}' is not a valid file or it does not exist",
map[string]interface{}{
"name": inpath,
})
whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_USAGE,
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
return whiskErr
}
unGzFile, err := os.Create(outpath)
if err != nil {
whisk.Debug(whisk.DbgError, "os.Create(%s) failed: %s\n", outpath, err)
errStr := wski18n.T("Error creating unGzip file '{{.name}}': {{.err}}",
map[string]interface{}{"name": outpath, "err": err})
werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
return werr
}
defer unGzFile.Close()
gzFile, err := os.Open(inpath)
if err != nil {
whisk.Debug(whisk.DbgError, "os.Open(%s) failed: %s\n", inpath, err)
errStr := wski18n.T("Error opening Gzip file '{{.name}}': {{.err}}",
map[string]interface{}{"name": inpath, "err": err})
werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
return werr
}
defer gzFile.Close()
gzReader, err := gzip.NewReader(gzFile)
if err != nil {
whisk.Debug(whisk.DbgError, "gzip.NewReader() failed: %s\n", err)
errStr := wski18n.T("Unable to unzip file '{{.name}}': {{.err}}",
map[string]interface{}{"name": inpath, "err": err})
werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
return werr
}
_, err = io.Copy(unGzFile, gzReader)
if err != nil {
whisk.Debug(whisk.DbgError, "io.Copy() failed: %s\n", err)
errStr := wski18n.T("Unable to unzip file '{{.name}}': {{.err}}",
map[string]interface{}{"name": inpath, "err": err})
werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
return werr
}
return nil
}