|
|
@@ -0,0 +1,63 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "os"
|
|
|
+)
|
|
|
+
|
|
|
+func main() {
|
|
|
+ out := os.Stdout
|
|
|
+
|
|
|
+ // Первый аргумент - путь, второй - опция
|
|
|
+ if !(len(os.Args) == 2 || len(os.Args) == 3) {
|
|
|
+ panic("usage go run main.go . [-f]")
|
|
|
+ }
|
|
|
+
|
|
|
+ path := os.Args[1]
|
|
|
+ printFiles := len(os.Args) == 3 && os.Args[2] == "-f"
|
|
|
+ err := dirTree(out, path, printFiles)
|
|
|
+ if err != nil {
|
|
|
+ panic(err.Error())
|
|
|
+ }
|
|
|
+
|
|
|
+ // fmt.Println(path, printFiles, len(os.Args))
|
|
|
+ // fmt.Printf("%T\n", out, err)
|
|
|
+}
|
|
|
+
|
|
|
+func dirTree(file *os.File, path string, printFiles bool) error {
|
|
|
+ var staticFile = file
|
|
|
+ fmt.Println("Function tree")
|
|
|
+ fmt.Println(file, path, printFiles)
|
|
|
+
|
|
|
+ // Открыть текущую директорию
|
|
|
+ dir, err := os.Open(path)
|
|
|
+ if err != nil {
|
|
|
+ // return err.Error()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ defer dir.Close()
|
|
|
+
|
|
|
+ // Получаем список файлов и папок
|
|
|
+ files, err := dir.Readdir(-1)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // Выводим имена файлов и папок
|
|
|
+ for _, file := range files {
|
|
|
+ if file.IsDir() {
|
|
|
+ fmt.Println("Directory: ", file.Name())
|
|
|
+ dirTree(staticFile, path, printFiles)
|
|
|
+ } else {
|
|
|
+ fmt.Println(file.Name())
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ file, err := os.Open("file.go") // For read access.
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ */
|
|
|
+ return nil
|
|
|
+}
|