Utils.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package Utils
  2. import (
  3. "os"
  4. "path/filepath"
  5. "strings"
  6. "io"
  7. "fmt"
  8. )
  9. func GetCurrentDirectory() (string,error) {
  10. dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
  11. return strings.Replace(dir, "\\", "/", -1),err
  12. }
  13. func PathExists(path string) (bool, error) {
  14. _, err := os.Stat(path)
  15. if err == nil {
  16. return true, nil
  17. }
  18. if os.IsNotExist(err) {
  19. return false, nil
  20. }
  21. return false, err
  22. }
  23. func CopyFile(dstName, srcName string) (written int64, err error) {
  24. src, err := os.Open(srcName)
  25. if err != nil {
  26. return
  27. }
  28. defer src.Close()
  29. dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, 0644)
  30. if err != nil {
  31. return
  32. }
  33. defer dst.Close()
  34. return io.Copy(dst, src)
  35. }
  36. func MkDirIfNotExist(path string) error{
  37. if r,err := PathExists(path); ((!r) || (err != nil)) {
  38. fmt.Printf("[StdOutLog][WARNING] Dir '%v' Not Exist! Will Create One.\r\n",path)
  39. if err := os.MkdirAll(path,0777);err != nil {
  40. fmt.Println("[StdOutLog][Fatal Error] Failed Create Dir '",path,"' : ",err)
  41. return err
  42. }
  43. }
  44. return nil
  45. }
  46. func StripSpaceAndQuote(path string) string{
  47. s := strings.TrimSpace(path)
  48. s = strings.Trim(s,`"`)
  49. return s
  50. }
  51. func RestrictQuotedArgs(input []string) []string{
  52. ostr := make([]string,0)
  53. inqstr := ""
  54. inQuoteFlag := false
  55. for i := 0; i < len(input); i++ {
  56. if inQuoteFlag{
  57. if input[i][len(input[i])-1] == '"'{
  58. inqstr += input[i][:(len(input[i])-1)]
  59. ostr = append(ostr,StripSpaceAndQuote(inqstr))
  60. inqstr = ""
  61. inQuoteFlag = false
  62. }else{
  63. inqstr += input[i] + " "
  64. }
  65. }else{
  66. if input[i][0] == '"'{
  67. if input[i][len(input[i])-1] == '"'{
  68. ostr = append(ostr,StripSpaceAndQuote(input[i]))
  69. }else{
  70. inQuoteFlag = true
  71. inqstr += input[i][1:] + " "
  72. }
  73. }else{
  74. ostr = append(ostr,StripSpaceAndQuote(input[i]))
  75. }
  76. }
  77. }
  78. return ostr
  79. }