dir walk demo

說明

介紹如何巡迴資料夾,可以參考閱讀「ooc / The io package」和「原始碼」來查詢「API」。

範例連結」。

操作步驟

建立「dir-walk」這個「專案資料夾」和「dir-walk/source」這個資料夾

執行

$ mkdir dir-walk/source -p

切換到「dir-walk」這個資料夾

執行

$ cd dir-walk

產生「dir-walk.use」這個檔

執行

$ cat > dir-walk.use << EOF
Name: DirWalk
Description: Demo Dir Walk
Version: 0.1.0
SourcePath: source
Main: dir-walk
EOF

產生「source/dir-walk.ooc」這個檔

執行

$ cat > source/dir-walk.ooc << EOF
import io/File
import os/Env

/*
    ## File
    * https://ooc-lang.org/docs/sdk/io/
    * https://ooc-lang.org/docs/sdk/lang/exceptions/
    * https://github.com/ooc-lang/rock/blob/master/sdk/io/File.ooc
    * https://github.com/ooc-lang/rock/blob/master/sdk/io/native/FileUnix.ooc

    ## Env
    * https://ooc-lang.org/docs/sdk/os/env/
    * https://github.com/ooc-lang/rock/blob/master/sdk/os/Env.ooc
 */

DirWalk: class {

    init: func () {

    }


    run: func (path := ".") {
        try {
            node := File new(path)
            this runDir(node)
        } catch (e: Exception) {
            "Error: %s" printfln(e message)
        }
    }

    run: func ~file_instance (node: File) {
        try {
            this runDir(node)
        } catch (e: Exception) {
            "Error: %s" printfln(e message)
        }
    }



    runDir: func (dir: File) {
        for (node in dir getChildren()) {
            if (node dir?()) {
                this runDir(node)
            } else {
                this runFile(node)
            }
        }

    }

    runFile: func (file: File) {
        file path println()
    }

} // End Class

walk := DirWalk new()

// ## string argument
walk run(".")
//walk run("/tmp")
//walk run(Env get("HOME"))

// ## file argument
//walk run(File new("."))
//walk run(File new("/tmp"))
//walk run(File new(Env get("HOME")))
//walk run(File new(Env get("HOME"), ".config"))
//walk run(File new(Env get("HOME", "/home/user"), ".config"))
EOF

觀看目前資料夾檔案結構

執行

$ tree .

顯示

.
├── dir-walk.use
└── source
    └── dir-walk.ooc

1 directory, 2 files

編譯

執行

$ rock

或是執行

$ rock -v

就會產生一個執行檔「dir-walk」。

執行「dir-walk」

執行

$ ./dir-walk

額外產生的檔案

上面編譯除了為產生「dir-walk」這個執行檔,還會產生「.libs」和「rock_tmp」這兩個資料夾,這裡面有很多檔案,可以深入研究。

有一個「rock_tmp/ooc/dir-walk/dir-walk.c」,就是編譯成c的主要檔案,裡面有「main」,也就是程式的進入點。

執行下面的指令,則是可以把這些額外產生的檔案刪除。

$ rock -x

顯示

Cleaning up outpath and .libs

然後「.libs」和「rock_tmp」這兩個資料夾和裡面的檔案,就會被刪除了。

編譯並且執行

也可以直接執行

$ rock -r

就會進行編譯,若編譯成功,就會馬上執行「dir-walk」。

不需要use檔,直接編譯ooc檔

也可以直接執行

$ rock source/dir-walk.ooc

或是執行

$ rock source/dir-walk.ooc -v

就會進行編譯

更多參考

File

Env