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
- 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