99 "path"
1010 "path/filepath"
1111 "strings"
12+ "github.com/disiqueira/gotree"
1213)
1314
1415const (
@@ -19,6 +20,36 @@ var cfg *ini.File
1920var cfgFile string
2021var language string
2122
23+ func addToTree (folder , file string , tree gotree.GTStructure ) gotree.GTStructure {
24+
25+ found := false
26+
27+ for i , item := range tree .Items {
28+ if item .Name == folder {
29+
30+ var newFile gotree.GTStructure
31+ newFile .Name = file
32+
33+ item .Items = append (item .Items , newFile )
34+ tree .Items [i ] = item
35+ }
36+ }
37+
38+ if ! found {
39+ var newFolder gotree.GTStructure
40+ var newFile gotree.GTStructure
41+
42+ newFolder .Name = folder
43+ newFile .Name = file
44+
45+ newFolder .Items = append (newFolder .Items , newFile )
46+
47+ tree .Items = append (tree .Items , newFolder )
48+ }
49+
50+ return tree
51+ }
52+
2253func main () {
2354 outputFolder := flag .String ("output" , "." , "Main directory to put organized folders" )
2455 inputFolder := flag .String ("directory" , "." , "The directory whose files to classify" )
@@ -64,6 +95,10 @@ func main() {
6495 files , _ := ioutil .ReadDir (* inputFolder )
6596 fmt .Println ("GOrganizing your Files" )
6697
98+ var tree gotree.GTStructure
99+
100+ tree .Name = "Files"
101+
67102 for _ , f := range files {
68103 if f .IsDir () {
69104 continue
@@ -76,18 +111,23 @@ func main() {
76111
77112 if len (newFolder ) > 0 {
78113
79- folder := filepath .Join (* outputFolder , iniGet ( ext ) )
114+ folder := filepath .Join (* outputFolder , newFolder )
80115 newFile := filepath .Join (folder , f .Name ())
81116
82- fmt .Println (file + " --> " + newFile )
83-
84117 if ! * preview {
85118 _ = os .Mkdir (folder , os .ModePerm )
86119 os .Rename (file , newFile )
87120 }
121+ } else {
122+ newFolder = "Unknown extension (will not be moved)"
88123 }
124+
125+ tree = addToTree (newFolder , f .Name (), tree )
126+
89127 }
90128
129+ gotree .PrintTree (tree )
130+
91131 fmt .Println ("All files have been gorganized!" )
92132
93133}
0 commit comments