upd emojis
This commit is contained in:
parent
bd5c28e76a
commit
7f632f4188
@ -26,6 +26,16 @@ var (
|
|||||||
buildInstallDir = filepath.Join(paths.BaseDir(), "installed_packages")
|
buildInstallDir = filepath.Join(paths.BaseDir(), "installed_packages")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func logInfo(format string, args ...interface{}) {
|
||||||
|
msg := fmt.Sprintf(format, args...)
|
||||||
|
fmt.Printf("\033[32m==>\033[0m %s\n", msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
func logTrain(format string, args ...interface{}) {
|
||||||
|
msg := fmt.Sprintf(format, args...)
|
||||||
|
fmt.Printf("\U0001F682 %s\n", msg)
|
||||||
|
}
|
||||||
|
|
||||||
func computeChecksum(filePath string) (string, error) {
|
func computeChecksum(filePath string) (string, error) {
|
||||||
data, err := ioutil.ReadFile(filePath)
|
data, err := ioutil.ReadFile(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -36,6 +46,7 @@ func computeChecksum(filePath string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func downloadFile(url string) (string, error) {
|
func downloadFile(url string) (string, error) {
|
||||||
|
logInfo("Downloading %s", url)
|
||||||
resp, err := http.Get(url)
|
resp, err := http.Get(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@ -51,10 +62,12 @@ func downloadFile(url string) (string, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
tmpFile.Close()
|
tmpFile.Close()
|
||||||
|
logInfo("File downloaded to temporary location")
|
||||||
return tmpFile.Name(), nil
|
return tmpFile.Name(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unpackPackage(filePath, packageName string) error {
|
func unpackPackage(filePath, packageName string) error {
|
||||||
|
logInfo("Unpacking package into %s", filepath.Join(buildInstallDir, packageName))
|
||||||
destDir := filepath.Join(buildInstallDir, packageName)
|
destDir := filepath.Join(buildInstallDir, packageName)
|
||||||
if err := os.MkdirAll(destDir, os.ModePerm); err != nil {
|
if err := os.MkdirAll(destDir, os.ModePerm); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -96,12 +109,14 @@ func unpackPackage(filePath, packageName string) error {
|
|||||||
outFile.Close()
|
outFile.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
logInfo("Unpacking completed")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func executeBuildCommands(commands []string, packageName string) error {
|
func executeBuildCommands(commands []string, packageName string) error {
|
||||||
packagePath := filepath.Join(buildInstallDir, packageName)
|
packagePath := filepath.Join(buildInstallDir, packageName)
|
||||||
for _, commandStr := range commands {
|
for _, commandStr := range commands {
|
||||||
|
logInfo("Executing build command: %s", commandStr)
|
||||||
cmd := exec.Command("sh", "-c", commandStr)
|
cmd := exec.Command("sh", "-c", commandStr)
|
||||||
cmd.Dir = packagePath
|
cmd.Dir = packagePath
|
||||||
output, err := cmd.CombinedOutput()
|
output, err := cmd.CombinedOutput()
|
||||||
@ -113,6 +128,7 @@ func executeBuildCommands(commands []string, packageName string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func saveInstalledPackage(name string, m *manifest.Manifest) error {
|
func saveInstalledPackage(name string, m *manifest.Manifest) error {
|
||||||
|
logInfo("Saving manifest to %s", filepath.Join(buildInstallDir, name))
|
||||||
packagePath := filepath.Join(buildInstallDir, name)
|
packagePath := filepath.Join(buildInstallDir, name)
|
||||||
if err := os.MkdirAll(packagePath, os.ModePerm); err != nil {
|
if err := os.MkdirAll(packagePath, os.ModePerm); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -125,11 +141,13 @@ func saveInstalledPackage(name string, m *manifest.Manifest) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func InstallPackage(name string) error {
|
func InstallPackage(name string) error {
|
||||||
|
logTrain("Installing package: %s", name)
|
||||||
m, err := manifest.FetchManifest(name)
|
m, err := manifest.FetchManifest(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to fetch manifest: %w", err)
|
return fmt.Errorf("failed to fetch manifest: %w", err)
|
||||||
}
|
}
|
||||||
if strings.ToLower(m.Mode) == "bin" {
|
if strings.ToLower(m.Mode) == "bin" {
|
||||||
|
logInfo("Installing in binary mode")
|
||||||
platformKey := runtime.GOOS + "_" + runtime.GOARCH
|
platformKey := runtime.GOOS + "_" + runtime.GOARCH
|
||||||
binaryInfo, ok := m.Binaries[platformKey]
|
binaryInfo, ok := m.Binaries[platformKey]
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -158,9 +176,11 @@ func InstallPackage(name string) error {
|
|||||||
if err := ioutil.WriteFile(destPath, data, 0755); err != nil {
|
if err := ioutil.WriteFile(destPath, data, 0755); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fmt.Printf("Binary package %s installed in %s\n", m.Name, destPath)
|
logInfo("Binary package %s installed in %s", m.Name, destPath)
|
||||||
|
logTrain("Package %s successfully installed.", m.Name)
|
||||||
return nil
|
return nil
|
||||||
} else if strings.ToLower(m.Mode) == "build" {
|
} else if strings.ToLower(m.Mode) == "build" {
|
||||||
|
logInfo("Installing in build mode")
|
||||||
packageFile, err := downloadFile(m.Source)
|
packageFile, err := downloadFile(m.Source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to download package: %w", err)
|
return fmt.Errorf("failed to download package: %w", err)
|
||||||
@ -184,13 +204,14 @@ func InstallPackage(name string) error {
|
|||||||
if err := saveInstalledPackage(name, m); err != nil {
|
if err := saveInstalledPackage(name, m); err != nil {
|
||||||
return fmt.Errorf("failed to save manifest: %w", err)
|
return fmt.Errorf("failed to save manifest: %w", err)
|
||||||
}
|
}
|
||||||
fmt.Printf("Build package %s installed successfully\n", m.Name)
|
logTrain("Build package %s installed successfully.", m.Name)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return errors.New("unknown package mode")
|
return errors.New("unknown package mode")
|
||||||
}
|
}
|
||||||
|
|
||||||
func RemovePackage(name string) error {
|
func RemovePackage(name string) error {
|
||||||
|
logTrain("Removing package: %s", name)
|
||||||
packagePath := filepath.Join(buildInstallDir, name)
|
packagePath := filepath.Join(buildInstallDir, name)
|
||||||
if _, err := os.Stat(packagePath); os.IsNotExist(err) {
|
if _, err := os.Stat(packagePath); os.IsNotExist(err) {
|
||||||
return errors.New("package not found")
|
return errors.New("package not found")
|
||||||
@ -202,6 +223,7 @@ func RemovePackage(name string) error {
|
|||||||
if err := json.Unmarshal(data, &m); err == nil {
|
if err := json.Unmarshal(data, &m); err == nil {
|
||||||
if len(m.Uninstall) > 0 {
|
if len(m.Uninstall) > 0 {
|
||||||
for _, cmdStr := range m.Uninstall {
|
for _, cmdStr := range m.Uninstall {
|
||||||
|
logInfo("Executing uninstall command: %s", cmdStr)
|
||||||
cmd := exec.Command("sh", "-c", cmdStr)
|
cmd := exec.Command("sh", "-c", cmdStr)
|
||||||
cmd.Dir = packagePath
|
cmd.Dir = packagePath
|
||||||
output, err := cmd.CombinedOutput()
|
output, err := cmd.CombinedOutput()
|
||||||
@ -212,19 +234,23 @@ func RemovePackage(name string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
logInfo("Removing directory %s", packagePath)
|
||||||
if err := os.RemoveAll(packagePath); err != nil {
|
if err := os.RemoveAll(packagePath); err != nil {
|
||||||
return fmt.Errorf("failed to remove package: %w", err)
|
return fmt.Errorf("failed to remove package: %w", err)
|
||||||
}
|
}
|
||||||
|
logTrain("Package %s removed.", name)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdatePackage(name string) error {
|
func UpdatePackage(name string) error {
|
||||||
|
logTrain("Updating package: %s", name)
|
||||||
if err := RemovePackage(name); err != nil {
|
if err := RemovePackage(name); err != nil {
|
||||||
return fmt.Errorf("failed to remove package for update: %w", err)
|
return fmt.Errorf("failed to remove package for update: %w", err)
|
||||||
}
|
}
|
||||||
if err := InstallPackage(name); err != nil {
|
if err := InstallPackage(name); err != nil {
|
||||||
return fmt.Errorf("failed to install package: %w", err)
|
return fmt.Errorf("failed to install package: %w", err)
|
||||||
}
|
}
|
||||||
|
logTrain("Package %s updated successfully.", name)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user