Skip to content

Commit 59a8a0e

Browse files
committed
builtin: os: move file/dir creation/reading functions from Os.Path to separate functions
1 parent 1c1308a commit 59a8a0e

File tree

7 files changed

+306
-141
lines changed

7 files changed

+306
-141
lines changed

examples/AdventOfCode/2019/Day1/Day1.par

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
dec FileRead : [String] Result<!, String>
44
def FileRead = [path]
55
catch _ => .err! in
6-
let try reader = Os.Path(path).openFile in
6+
let try reader = path->Os.Path->Os.OpenFile in
77
let parser = String.ParserFromReader(type Os.Error)(reader) in
88
let try contents = parser.remainder in
99
.ok contents

examples/CopyFile.par

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ def Main: ! = chan exit {
1212
exit!
1313
}
1414

15-
let try reader = Os.Path(src).openFile
15+
let try reader = src->Os.Path->Os.OpenFile
1616
catch@w e => { reader.close; throw e }
1717

18-
let try@w writer = Os.Path(dst).createOrReplaceFile
18+
let try@w writer = dst->Os.Path->Os.CreateOrReplaceFile
1919
catch@r e => { writer.close; throw e }
2020

2121

examples/Downloader.par

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ type Event = (Os.Path) either { // destination
77

88
def Main =
99
let rootPath = Os.Path(".").append("Downloads") in
10-
YieldDownloadRequests("127.0.0.1:3000", rootPath) // : List<(Url) Os.Path>
10+
YieldDownloadRequests("127.0.0.1:3000", rootPath) // : List<(Url, Os.Path)!>
1111
->Map1(box DownloadFile) // : List<List<Event>>
1212
->FanIn1 // : List<Event>
1313
->ShowDownloadProgress(rootPath) // : !
1414

15-
def Map1 = Map(type (Url) Os.Path, List<Event>)
15+
def Map1 = Map(type (Url, Os.Path)!, List<Event>)
1616
def FanIn1 = FanIn(type Event)
1717

18-
dec YieldDownloadRequests : [String, Os.Path] List<(Url) Os.Path>
18+
dec YieldDownloadRequests : [String, Os.Path] List<(Url, Os.Path)!>
1919
def YieldDownloadRequests = [listenUrl, rootPath] chan yield {
2020
Debug.Log(Concat(*("Listening on ", listenUrl, "...")))
2121
catch e => {
@@ -44,7 +44,7 @@ def YieldDownloadRequests = [listenUrl, rootPath] chan yield {
4444
->Url.FromString
4545

4646
let destination = rootPath.append(url.path->TrimStart("/"))
47-
yield.item((sourceUrl) destination)
47+
yield.item((sourceUrl, destination)!)
4848
respond((200, *()) Bytes.EmptyReader)
4949
next.loop
5050
}
@@ -57,8 +57,8 @@ def YieldDownloadRequests = [listenUrl, rootPath] chan yield {
5757
}
5858
}
5959

60-
dec DownloadFile : [(Url) Os.Path] List<Event>
61-
def DownloadFile = [(sourceUrl) dest] chan yield {
60+
dec DownloadFile : [(Url, Os.Path)!] List<Event>
61+
def DownloadFile = [(sourceUrl, dest)!] chan yield {
6262
catch err => {
6363
yield.item((dest) .failed err)
6464
yield.end!
@@ -73,7 +73,7 @@ def DownloadFile = [(sourceUrl) dest] chan yield {
7373
.true! => {}
7474
}
7575

76-
let try@clearResp file = dest.createNewFile
76+
let try@clearResp file = Os.CreateNewFile(dest)
7777
catch@clearFile err => { file.close; throw err }
7878

7979
let default(0) totalSize = catch ! => .err! in

examples/MiniGrep.par

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def Program: ! = chan exit {
1717
exit!
1818
}
1919

20-
let try paths: List<Os.Path> = TraverseDirectory(Os.Path(path))
20+
let try paths: List<Os.Path> = path->Os.Path->TraverseDirectory
2121
paths.begin.case {
2222
.end! => {}
2323
.item(path) => {
@@ -26,7 +26,7 @@ def Program: ! = chan exit {
2626
console.print(e)
2727
paths.loop
2828
}
29-
let try reader = path.openFile
29+
let try reader = path->Os.OpenFile
3030
let lines = GrepFile(needle, reader)
3131
3232
.end try! => {}
@@ -52,7 +52,7 @@ def Program: ! = chan exit {
5252
dec TraverseDirectory : [Os.Path] Result<Os.Error, List<Os.Path>>
5353
def TraverseDirectory = [dirPath]
5454
catch e => .err e in
55-
let try tree = dirPath.traverseDir in
55+
let try tree = Os.TraverseDir(dirPath) in
5656
.ok tree.begin.case {
5757
.end! => .end!,
5858
.file(path) rest => .item(path) rest.loop,

examples/WebServer.par

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def Main: ! = chan exit {
3131
}
3232

3333
dec ServePath : [Os.Path, String, [Http.Response] Result<Http.Error, !>] !
34-
def ServePath = [root, path, respond] Os.Path(path).listDir.case {
34+
def ServePath = [root, path, respond] path->Os.Path->Os.ListDir.case {
3535
.err _ => ServeFile(path, respond),
3636
.ok paths => ServeDir(root, paths, respond),
3737
}
@@ -44,7 +44,7 @@ def ServeFile = [path, respond] chan finish {
4444
finish!
4545
}
4646

47-
let try file = Os.Path(path).openFile
47+
let try file = path->Os.Path->Os.OpenFile
4848
respond((200, *(("Content-Type") "text/plain")) file)
4949

5050
finish!

src/par/builtin/Builtin.par

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -285,26 +285,27 @@ type Os.Path = iterative@append recursive@parent box choice {
285285

286286
.parent => Option<self@parent>,
287287
.append(Bytes) => self@append,
288-
289-
.openFile => Result<Os.Error, Os.Reader>,
290-
.createOrReplaceFile => Result<Os.Error, Os.Writer>,
291-
.createNewFile => Result<Os.Error, Os.Writer>,
292-
.appendToFile => Result<Os.Error, Os.Writer>,
293-
.createOrAppendToFile => Result<Os.Error, Os.Writer>,
294-
295-
.listDir => Result<Os.Error, List<self@append>>,
296-
.traverseDir => Result<Os.Error, recursive@tree either {
297-
.end!,
298-
.file(self@append) self@tree,
299-
.dir(self@append, self@tree) self@tree,
300-
}>,
301-
.createDir => Result<Os.Error, !>,
302288
}
303289

304290
dec Os.Path : [Bytes] Os.Path
305291

306292
dec Os.Stdin : Os.Reader
307293
dec Os.Stdout : Os.Writer
294+
dec Os.Stderr : Os.Writer
295+
296+
dec Os.OpenFile : [Os.Path] Result<Os.Error, Os.Reader>
297+
dec Os.CreateOrReplaceFile : [Os.Path] Result<Os.Error, Os.Writer>
298+
dec Os.CreateNewFile : [Os.Path] Result<Os.Error, Os.Writer>
299+
dec Os.AppendToFile : [Os.Path] Result<Os.Error, Os.Writer>
300+
dec Os.CreateOrAppendToFile : [Os.Path] Result<Os.Error, Os.Writer>
301+
302+
dec Os.CreateDir : [Os.Path] Result<Os.Error, !>
303+
dec Os.ListDir : [Os.Path] Result<Os.Error, List<Os.Path>>
304+
dec Os.TraverseDir : [Os.Path] Result<Os.Error, recursive either {
305+
.end!,
306+
.file(Os.Path) self,
307+
.dir(Os.Path, self) self,
308+
}>
308309

309310

310311
/// Url
@@ -346,6 +347,12 @@ dec Http.Listen : [String] recursive either {
346347
.incoming(Http.Request, [Http.Response] Result<Http.Error, !>) self,
347348
}
348349

350+
351+
/// Time
352+
353+
dec Time.Now : [!] Nat
354+
355+
349356
/// Map
350357

351358
type Map<k, v> = iterative choice {
@@ -395,8 +402,3 @@ dec Cell.Share : [type a] [a, dual Cell<a>] a
395402
/// Debug
396403

397404
dec Debug.Log : [String] !
398-
399-
400-
/// Time
401-
402-
dec Time.Now : [!] Nat

0 commit comments

Comments
 (0)