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.

203 lines
4.4 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. "PackageManager/Client/Database"
  7. "PackageManager/Client/Filesystem"
  8. "PackageManager/Client/Package"
  9. "PackageManager/Color"
  10. "PackageManager/Helper"
  11. "PackageManager/Variables"
  12. )
  13. func HelpMsg() {
  14. var helpMsg string
  15. helpMsg = `Usage of %s:
  16. General:
  17. -V | -verbose
  18. Verbose output
  19. Filesystem diff:
  20. -Af | -add-files
  21. Add files
  22. -Cf | -commit
  23. Add files
  24. -Fd | -fs-diff
  25. Filesystem diff
  26. -Rf | -reset
  27. Reset added files
  28. -Cp | -create-pkg
  29. Create package from fs diff
  30. -Il | -install-local
  31. Install package from local tarball
  32. -Rl | -remove-local
  33. Remove package from local tarball
  34. -ignore-deps-check
  35. Skip dependancies check
  36. `
  37. helpMsg = fmt.Sprintf(helpMsg, os.Args[0])
  38. fmt.Println(helpMsg)
  39. }
  40. func main() {
  41. var (
  42. getFilesystemDiffFlag bool
  43. getFilesystemDiffFlagLong bool
  44. addFileDiffFlag bool
  45. addFileDiffFlagLong bool
  46. commitAddedFilesFlag bool
  47. commitAddedFilesFlagLong bool
  48. resetAddedFilesFlag bool
  49. resetAddedFilesFlagLong bool
  50. createPackageFlag bool
  51. createPackageFlagLong bool
  52. installLocalPackageFlag bool
  53. installLocalPackageFlagLong bool
  54. uninstallPackageFlag bool
  55. uninstallPackageFlagLong bool
  56. ignoreDepsCheckFlag bool
  57. verboseOutputFlag bool
  58. verboseOutputFlagLong bool
  59. e error
  60. )
  61. flag.Usage = HelpMsg
  62. e = Helper.CheckRoot()
  63. if e != nil {
  64. fmt.Println(Color.Fatal(e))
  65. return
  66. }
  67. e = Database.InitDB()
  68. if e != nil {
  69. panic(e)
  70. }
  71. defer Database.DB.Close()
  72. defer Database.FsDB.Close()
  73. // TODO: Rework usage function
  74. // Initialise flags
  75. flag.BoolVar(&verboseOutputFlag, "V", false, "Verbose output")
  76. flag.BoolVar(&verboseOutputFlagLong, "verbose", false, "Verbose output")
  77. flag.BoolVar(&getFilesystemDiffFlag, "Fd", false, "Filesystem diff")
  78. flag.BoolVar(&getFilesystemDiffFlagLong, "fs-diff", false, "Filesystem diff")
  79. flag.BoolVar(&addFileDiffFlag, "Af", false, "Add files")
  80. flag.BoolVar(&addFileDiffFlagLong, "add-files", false, "Add files")
  81. flag.BoolVar(&commitAddedFilesFlag, "Cf", false, "Commit files")
  82. flag.BoolVar(&commitAddedFilesFlagLong, "commit", false, "Commit files")
  83. flag.BoolVar(&resetAddedFilesFlag, "Rf", false, "Reset added files")
  84. flag.BoolVar(&resetAddedFilesFlagLong, "reset", false, "Reset added files")
  85. flag.BoolVar(&createPackageFlag, "Cp", false, "Create package from fs diff")
  86. flag.BoolVar(&createPackageFlagLong, "create-pkg", false, "Create package from fs diff")
  87. flag.BoolVar(&installLocalPackageFlag, "Il", false, "Install package from local tarball")
  88. flag.BoolVar(&installLocalPackageFlagLong, "install-local", false, "Install package from local tarball")
  89. flag.BoolVar(&uninstallPackageFlag, "Rl", false, "Uninstall local package")
  90. flag.BoolVar(&uninstallPackageFlagLong, "remove-local", false, "Uninstall local package")
  91. flag.BoolVar(&ignoreDepsCheckFlag, "ignore-deps-check", false, "Ignore dependancies check")
  92. flag.Parse()
  93. Variables.VerboseOutput = verboseOutputFlag || verboseOutputFlagLong
  94. Variables.IgnoreDepsCheck = ignoreDepsCheckFlag
  95. if getFilesystemDiffFlag || getFilesystemDiffFlagLong {
  96. var rootPath string = Variables.RootDir
  97. if len(flag.Args()) > 1 {
  98. flag.Usage()
  99. fmt.Println(Color.Fatal("Option takes one optional argument"))
  100. return
  101. }
  102. if len(flag.Args()) == 1 {
  103. rootPath = flag.Arg(0)
  104. }
  105. e = Filesystem.ShowFilesystemDiff(rootPath)
  106. if e != nil {
  107. panic(e)
  108. }
  109. return
  110. }
  111. if addFileDiffFlag || addFileDiffFlagLong {
  112. if len(flag.Args()) > 1 || len(flag.Args()) < 1 {
  113. fmt.Println(Color.Fatal("Must supply one argument"))
  114. flag.Usage()
  115. return
  116. }
  117. e = Filesystem.PickFiles(flag.Arg(0))
  118. if e != nil {
  119. panic(e)
  120. }
  121. return
  122. }
  123. if commitAddedFilesFlag || commitAddedFilesFlagLong {
  124. e = Filesystem.CommitFiles()
  125. if e != nil {
  126. panic(e)
  127. }
  128. return
  129. }
  130. if resetAddedFilesFlag || resetAddedFilesFlagLong {
  131. e = Filesystem.ResetAllPickedFiles()
  132. if e != nil {
  133. panic(e)
  134. }
  135. return
  136. }
  137. if createPackageFlag || createPackageFlagLong {
  138. e = Package.CreatePackage()
  139. if e != nil {
  140. panic(e)
  141. }
  142. return
  143. }
  144. if installLocalPackageFlag || installLocalPackageFlagLong {
  145. e = Package.InstallPackage(flag.Args())
  146. if e != nil {
  147. panic(e)
  148. }
  149. return
  150. }
  151. if uninstallPackageFlag || uninstallPackageFlagLong {
  152. e = Package.UninstallPackage(flag.Args())
  153. if e != nil {
  154. panic(e)
  155. }
  156. return
  157. }
  158. flag.Usage()
  159. fmt.Println(Color.Fatal("Nothing to do"))
  160. }