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.

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