Install command

This commit is contained in:
2024-08-23 17:45:09 +02:00
parent 448728061c
commit a84628e426
6 changed files with 163 additions and 39 deletions

View File

@@ -1,44 +1,75 @@
package helpers
import (
"alma/models"
"errors"
"os"
"path"
"path/filepath"
"strings"
"github.com/samber/lo"
)
func GetRepositoryAndModuleName(args []string) (*string, *string) {
func GetModuleInfo(args []string) (moduleInfo models.ModuleInfo, error error) {
repoName, moduleName := GetRepositoryAndModuleName(args)
if moduleName == "" {
return models.ModuleInfo{}, errors.New("module name is required")
}
sourceDirectory, targetDirectory := GetRepositorySourceAndTargetDirectory(repoName)
if sourceDirectory == "" {
return models.ModuleInfo{}, errors.New("source directory not exists")
}
sourceDirectoryFolderInfo, err := os.Stat(sourceDirectory)
if err != nil || !sourceDirectoryFolderInfo.IsDir() {
return models.ModuleInfo{}, errors.New("source directory not exists")
}
moduleNameAsPath := strings.ReplaceAll(moduleName, "/", string(filepath.Separator))
moduleDirectory := filepath.Join(sourceDirectory, moduleNameAsPath)
return models.ModuleInfo{
RepositoryName: repoName,
ModuleName: moduleName,
SourceDirectory: sourceDirectory,
TargetDirectory: targetDirectory,
ModuleDirectory: moduleDirectory}, nil
}
func GetRepositoryAndModuleName(args []string) (string, string) {
return getRepositoryAndModuleName(args, false)
}
func getRepositoryAndModuleName(args []string, singleParamIsRepository bool) (*string, *string) {
var repositoryName, moduleName *string = nil, nil
func getRepositoryAndModuleName(args []string, singleParamIsRepository bool) (string, string) {
var repositoryName, moduleName string = "", ""
usefulArgs := lo.Filter(args, func(arg string, index int) bool { return !strings.HasPrefix(arg, "-") })
if len(usefulArgs) == 1 {
if singleParamIsRepository {
repositoryName = &usefulArgs[0]
repositoryName = usefulArgs[0]
} else {
moduleName = &usefulArgs[0]
moduleName = usefulArgs[0]
}
} else if len(usefulArgs) >= 1 {
repositoryName = &usefulArgs[0]
moduleName = &usefulArgs[1]
repositoryName = usefulArgs[0]
moduleName = usefulArgs[1]
}
return repositoryName, moduleName
}
func GetRepositorySourceAndTargetDirectory(repoName *string) (*string, *string) {
func GetRepositorySourceAndTargetDirectory(repoName string) (string, string) {
repoSourceDirectory, _ := os.Getwd()
repoTargetDirectory, _ := os.Getwd()
repoTargetDirectory = path.Join(repoTargetDirectory, "..")
return GetRepositorySourceAndTargetDirectoryWithFallback(repoName, &repoSourceDirectory, &repoTargetDirectory)
return GetRepositorySourceAndTargetDirectoryWithFallback(repoName, repoSourceDirectory, repoTargetDirectory)
}
func GetRepositorySourceAndTargetDirectoryWithFallback(repoName *string, sourceFallback *string, targetFallback *string) (*string, *string) {
func GetRepositorySourceAndTargetDirectoryWithFallback(repoName string, sourceFallback string, targetFallback string) (string, string) {
//TODO: Use repository configuration
return sourceFallback, targetFallback
}