PackageManager just because
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
2.2 KiB

  1. package Package
  2. import (
  3. "errors"
  4. "fmt"
  5. "strconv"
  6. "strings"
  7. "PackageManager/Client/Filesystem"
  8. "PackageManager/Color"
  9. "PackageManager/Helper"
  10. )
  11. func CreatePackage() error {
  12. var (
  13. dirtyFiles map[int]string
  14. newFiles map[int]string
  15. pkgFiles map[int]string = make(map[int]string)
  16. choices string
  17. choicesSplit []string
  18. filePath string
  19. pkgName string
  20. pkgVersion string
  21. index int
  22. ok bool
  23. e error
  24. )
  25. fmt.Println("Initialising package creation...")
  26. dirtyFiles, newFiles, e = Filesystem.GetFilesystemDiff()
  27. if e != nil {
  28. return e
  29. }
  30. fmt.Println("\nModified files...")
  31. for i, file := range dirtyFiles {
  32. fmt.Printf(
  33. "\t%d - %s\n",
  34. i,
  35. Color.Red(file),
  36. )
  37. }
  38. fmt.Println("\nNew files...")
  39. for i, file := range newFiles {
  40. fmt.Printf(
  41. "\t%d - %s\n",
  42. i,
  43. Color.Red(file),
  44. )
  45. }
  46. fmt.Println("Please select the files you would like to use to create the package. Leave empty for all.")
  47. choices = Helper.Input()
  48. if choices == "" {
  49. for i, file := range dirtyFiles {
  50. pkgFiles[i] = file
  51. }
  52. for i, file := range newFiles {
  53. pkgFiles[i] = file
  54. }
  55. } else {
  56. choicesSplit = strings.Split(choices, ",")
  57. for _, i := range choicesSplit {
  58. index, e = strconv.Atoi(i)
  59. if e != nil {
  60. // TODO: Handle this error
  61. panic(e)
  62. }
  63. filePath, ok = dirtyFiles[index]
  64. if !ok {
  65. filePath, ok = dirtyFiles[index]
  66. if !ok {
  67. return errors.New("Invalid package selection")
  68. }
  69. }
  70. pkgFiles[index] = filePath
  71. }
  72. }
  73. fmt.Println("Please enter the package name:")
  74. pkgName = Helper.Input()
  75. if pkgName == "" {
  76. return errors.New("Invalid package name")
  77. }
  78. fmt.Println("Please enter the package version:")
  79. pkgVersion = Helper.Input()
  80. if pkgVersion == "" {
  81. return errors.New("Invalid package name")
  82. }
  83. fmt.Printf("Package Name: %s\n", pkgName)
  84. fmt.Printf("Package Version: %s\n", pkgVersion)
  85. fmt.Println("Files to be added")
  86. for i, file := range pkgFiles {
  87. fmt.Printf(
  88. "\t%d - %s\n",
  89. i,
  90. Color.Green(file),
  91. )
  92. }
  93. fmt.Println("Is this correct? [y/N]")
  94. if strings.ToLower(Helper.Input()) != "y" {
  95. return errors.New("User aborted")
  96. }
  97. return nil
  98. }