1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-20 13:59:40 +02:00

refactor(libstack): move library to portainer [EE-5474] (#9120)

This commit is contained in:
Chaim Lev-Ari 2023-06-26 08:11:05 +07:00 committed by GitHub
parent 11571fd6ea
commit 8c16fbb8aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 691 additions and 0 deletions

View file

@ -0,0 +1,60 @@
package utils
import (
"os"
"os/exec"
"path"
"runtime"
"github.com/pkg/errors"
)
func osProgram(program string) string {
if runtime.GOOS == "windows" {
program += ".exe"
}
return program
}
func ProgramPath(rootPath, program string) string {
return path.Join(rootPath, osProgram(program))
}
// IsBinaryPresent check if docker compose binary is present
func IsBinaryPresent(program string) bool {
_, err := exec.LookPath(program)
return err == nil
}
// Copy copies sourcePath to destinationPath
func Copy(sourcePath, destinationPath string) error {
si, err := os.Stat(sourcePath)
if err != nil {
return errors.WithMessage(err, "file check failed")
}
input, err := os.ReadFile(sourcePath)
if err != nil {
return errors.WithMessage(err, "failed reading file")
}
err = os.WriteFile(destinationPath, input, si.Mode())
if err != nil {
return errors.WithMessage(err, "failed writing file")
}
return nil
}
// Move sourcePath to destinationPath
func Move(sourcePath, destinationPath string) error {
if err := Copy(sourcePath, destinationPath); err != nil {
return err
}
if err := os.Remove(sourcePath); err != nil {
return err
}
return nil
}