Advertisement
Guest User

Untitled

a guest
Jul 29th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "flag"
  6. "log"
  7. "os"
  8. "path/filepath"
  9. "strings"
  10. "unicode"
  11. )
  12.  
  13. var Extensions = map[string]bool{
  14. ".txt": true,
  15.  
  16. ".java": true,
  17. ".py": true,
  18. ".rb": true,
  19. ".js": true,
  20. ".m": true,
  21. ".proto": true,
  22.  
  23. ".j2": true,
  24. ".ini": true,
  25. ".conf": true,
  26. ".properties": true,
  27.  
  28. ".css": true,
  29. ".html": true,
  30.  
  31. ".md": true,
  32.  
  33. ".json": true,
  34. ".xml": true,
  35. ".yml": true,
  36.  
  37. ".sql": true,
  38. }
  39.  
  40. var (
  41. Lines []string = make([]string, 0, 10000)
  42. DryF bool
  43. )
  44.  
  45. func processFile(path string, info os.FileInfo) {
  46. f, err := os.Open(path)
  47. if err != nil {
  48. log.Fatal(err)
  49. }
  50.  
  51. Lines = Lines[:0]
  52. scanner := bufio.NewScanner(f)
  53. for scanner.Scan() {
  54. Lines = append(Lines, strings.TrimRightFunc(scanner.Text(), unicode.IsSpace))
  55. }
  56. if err = scanner.Err(); err != nil {
  57. log.Print(err)
  58. // log.Fatal(err)
  59. return
  60. }
  61.  
  62. f.Close()
  63.  
  64. if DryF {
  65. return
  66. }
  67.  
  68. f, err = os.OpenFile(path, os.O_WRONLY|os.O_TRUNC, info.Mode())
  69. if err != nil {
  70. log.Fatal(err)
  71. }
  72. for _, line := range Lines {
  73. _, err = f.WriteString(line + "\n")
  74. if err != nil {
  75. log.Fatal(err)
  76. }
  77. }
  78. f.Close()
  79. }
  80.  
  81. func main() {
  82. flag.BoolVar(&DryF, "dry", false, "dry run")
  83. flag.Parse()
  84.  
  85. err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
  86. if err != nil {
  87. return err
  88. }
  89.  
  90. if info.IsDir() {
  91. if path == ".git" || path == ".env" || path == "_env" {
  92. return filepath.SkipDir
  93. }
  94. return nil
  95. }
  96.  
  97. if Extensions[filepath.Ext(path)] {
  98. processFile(path, info)
  99. log.Print(path)
  100. }
  101.  
  102. return nil
  103. })
  104. if err != nil {
  105. log.Fatal(err)
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement