|
|
- package Package
-
- import (
- "errors"
- "fmt"
- "strconv"
- "strings"
-
- "PackageManager/Client/Filesystem"
- "PackageManager/Color"
- "PackageManager/Helper"
- )
-
- func CreatePackage() error {
- var (
- dirtyFiles map[int]string
- newFiles map[int]string
- pkgFiles map[int]string = make(map[int]string)
- choices string
- choicesSplit []string
- filePath string
- pkgName string
- pkgVersion string
- index int
- ok bool
- e error
- )
-
- fmt.Println("Initialising package creation...")
-
- dirtyFiles, newFiles, e = Filesystem.GetFilesystemDiff()
- if e != nil {
- return e
- }
-
- fmt.Println("\nModified files...")
- for i, file := range dirtyFiles {
- fmt.Printf(
- "\t%d - %s\n",
- i,
- Color.Red(file),
- )
- }
-
- fmt.Println("\nNew files...")
- for i, file := range newFiles {
- fmt.Printf(
- "\t%d - %s\n",
- i,
- Color.Red(file),
- )
- }
-
- fmt.Println("Please select the files you would like to use to create the package. Leave empty for all.")
- choices = Helper.Input()
-
- if choices == "" {
- for i, file := range dirtyFiles {
- pkgFiles[i] = file
- }
- for i, file := range newFiles {
- pkgFiles[i] = file
- }
- } else {
-
- choicesSplit = strings.Split(choices, ",")
-
- for _, i := range choicesSplit {
- index, e = strconv.Atoi(i)
- if e != nil {
- // TODO: Handle this error
- panic(e)
- }
- filePath, ok = dirtyFiles[index]
- if !ok {
- filePath, ok = dirtyFiles[index]
- if !ok {
- return errors.New("Invalid package selection")
- }
- }
- pkgFiles[index] = filePath
- }
- }
-
- fmt.Println("Please enter the package name:")
- pkgName = Helper.Input()
- if pkgName == "" {
- return errors.New("Invalid package name")
- }
-
- fmt.Println("Please enter the package version:")
- pkgVersion = Helper.Input()
- if pkgVersion == "" {
- return errors.New("Invalid package name")
- }
-
- fmt.Printf("Package Name: %s\n", pkgName)
- fmt.Printf("Package Version: %s\n", pkgVersion)
-
- fmt.Println("Files to be added")
- for i, file := range pkgFiles {
- fmt.Printf(
- "\t%d - %s\n",
- i,
- Color.Green(file),
- )
- }
-
- fmt.Println("Is this correct? [y/N]")
- if strings.ToLower(Helper.Input()) != "y" {
- return errors.New("User aborted")
- }
-
- return nil
- }
|