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.

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