@@ -37,11 +37,14 @@ func cut(args []string) int {
37
37
usageNoLinks = "don't use links in '" + doc .FileName + "' files"
38
38
defaultStats = "*"
39
39
usageStats = "write '" + stat .FileName + "' for packages (separated by ','; '' for none)"
40
+ defaultDirTree = false
41
+ usageDirTree = "write a directory tree to the 'dirtree.txt' file"
40
42
)
41
43
var startDir string
42
44
var docPkgs string
43
45
var noLinks bool
44
46
var statPkgs string
47
+ var dirTree bool
45
48
fs := flag .NewFlagSet ("spaghetti-cutter" , flag .ExitOnError )
46
49
fs .StringVar (& startDir , "root" , defaultRoot , usageRoot )
47
50
fs .StringVar (& startDir , "r" , defaultRoot , usageRoot + usageShort )
@@ -51,6 +54,8 @@ func cut(args []string) int {
51
54
fs .BoolVar (& noLinks , "l" , defaultNoLinks , usageNoLinks + usageShort )
52
55
fs .StringVar (& statPkgs , "stats" , defaultStats , usageStats )
53
56
fs .StringVar (& statPkgs , "s" , defaultStats , usageStats + usageShort )
57
+ fs .BoolVar (& dirTree , "dirtree" , defaultDirTree , usageDirTree )
58
+ fs .BoolVar (& dirTree , "t" , defaultDirTree , usageDirTree + usageShort )
54
59
err := fs .Parse (args )
55
60
if err != nil {
56
61
log .Printf ("FATAL - %v" , err )
@@ -123,6 +128,10 @@ func cut(args []string) int {
123
128
log .Print ("INFO - No documentation wanted." )
124
129
}
125
130
131
+ if dirTree {
132
+ writeDirTree (root , "." )
133
+ }
134
+
126
135
return retCode
127
136
}
128
137
@@ -136,7 +145,7 @@ func writeStatistics(stPkgs, root, rootPkg string, depMap data.DependencyMap) {
136
145
continue
137
146
}
138
147
statFile := filepath .Join (statPkg , stat .FileName )
139
- log .Printf ("INFO - Write package statistics to file: %s" , statFile )
148
+ log .Printf ("INFO - Writeing package statistics to file: %s" , statFile )
140
149
statFile = filepath .Join (root , statFile )
141
150
err := ioutil .WriteFile (statFile , []byte (statMD ), 0644 )
142
151
if err != nil {
@@ -156,6 +165,24 @@ func writeDocumentation(docPkgs, root, rootPkg string, noLinks bool, depMap data
156
165
doc .WriteDocs (dtPkgs , depMap , linkDocPkgs , rootPkg , root )
157
166
}
158
167
168
+ var mapEntry = struct {}{}
169
+
170
+ func writeDirTree (root , name string ) error {
171
+ treeFile := filepath .Join (root , dirs .TreeFile )
172
+ log .Printf ("INFO - Writing directory tree to file: %s" , treeFile )
173
+ tree , err := dirs .Tree (root , name , []string {"vendor" , "testdata" , ".*" })
174
+ if err != nil {
175
+ log .Print ("ERROR - Unable to generate directory tree" )
176
+ return err
177
+ }
178
+ err = ioutil .WriteFile (treeFile , []byte (tree ), 0644 )
179
+ if err != nil {
180
+ log .Printf ("ERROR - Unable to write directory tree to file %s: %v" , treeFile , err )
181
+ return err
182
+ }
183
+ return nil
184
+ }
185
+
159
186
func findPackagesWithFileAsSlice (signalFile , pkgNames , root , pkgType string ) []string {
160
187
var pkgs []string
161
188
if pkgNames == "*" { // find all existing files
0 commit comments