func copyResource(basePath string, resource string, destination string) error { rel, err := filepath.Rel(basePath, resource) if err != nil { return err } return common.MirrorFile(resource, filepath.Join(destination, rel)) }
func moveBinaryToDirectory(target, destDir string) error { if runtime.GOOS == "windows" { target = target + ".exe" } srcFile := path.Join(bin, target) destFile := path.Join(destDir, target) if err := os.MkdirAll(destDir, newDirPermissions); err != nil { return err } if err := common.MirrorFile(srcFile, destFile); err != nil { return err } return os.Remove(srcFile) }
func moveBinaryToBinDir() { srcFile := gaugeGo destDir := getBinDir() if getGOOS() == WINDOWS { srcFile = srcFile + ".exe" } destFile := filepath.Join(destDir, srcFile) if err := os.MkdirAll(destDir, common.NewDirectoryPermissions); err != nil { fmt.Printf("Failed to create directory %s. %s\n", destDir, err.Error()) } if err := common.MirrorFile(srcFile, destFile); err != nil { fmt.Printf("Failed to copy file %s to %s. %s\n", srcFile, destFile, err.Error()) } os.Remove(srcFile) }
// key will be the source file and value will be the target func installFiles(files map[string]string, installDir string) { for src, dst := range files { base := filepath.Base(src) installDst := filepath.Join(installDir, dst) log.Printf("Install %s -> %s\n", src, installDst) stat, err := os.Stat(src) if err != nil { panic(err) } if stat.IsDir() { _, err = common.MirrorDir(src, installDst) } else { err = common.MirrorFile(src, filepath.Join(installDst, base)) } if err != nil { panic(err) } } }