pkg/cli/util.go
package cli
/**
* SPDX-License-Identifier: Apache-2.0
* Copyright 2020 vorteil.io Pty Ltd
*/
import (
"os"
"path/filepath"
"strings"
"github.com/vorteil/vorteil/pkg/vio"
"github.com/vorteil/vorteil/pkg/vpkg"
)
func HandleErrors() {
if errorStatusMessage != nil {
// Pretty sure this only happens when invalid flags.
// Which the error gets printed before this
if log != nil {
log.Errorf(errorStatusMessage.Error())
}
}
if errorStatusCode != 0 {
os.Exit(errorStatusCode)
}
return
}
func handleDirectory(src string, dst string, builder vpkg.Builder) error {
// create subtree
tree, err := vio.FileTreeFromDirectory(src)
if err != nil {
return err
}
x := strings.Split(strings.TrimSuffix(filepath.ToSlash(src), "/"), "/")
err = builder.AddSubTreeToFS(filepath.Join(dst, x[len(x)-1]), tree)
if err != nil {
return err
}
return nil
}
func handleFile(src string, dst string, builder vpkg.Builder) error {
// create file object
f, err := vio.LazyOpen(src)
if err != nil {
return err
}
err = builder.AddToFS(filepath.Join(dst, filepath.Base(f.Name())), f)
if err != nil {
return err
}
return nil
}
func handleFileInjections(builder vpkg.Builder) error {
for src, v := range filesMap {
for _, dst := range v {
stat, err := os.Stat(src)
if err != nil {
return err
}
if stat.IsDir() {
err = handleDirectory(src, dst, builder)
if err != nil {
return err
}
} else {
err = handleFile(src, dst, builder)
if err != nil {
return err
}
}
}
}
return nil
}