From d1328a5938123676351c280083bf860ede4ac97e Mon Sep 17 00:00:00 2001 From: Tiago Katcipis Date: Tue, 31 Jul 2018 23:20:19 -0300 Subject: [PATCH] add putf --- acme/acme.sh | 26 ++++++++++++++++++++++++-- bin/fmt | 2 +- bin/putf | 18 ++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100755 bin/putf diff --git a/acme/acme.sh b/acme/acme.sh index be87d6a..acbacaf 100644 --- a/acme/acme.sh +++ b/acme/acme.sh @@ -2,7 +2,9 @@ fn acme_read(rpath) { var fpath = "acme/"+$winid+"/"+$rpath + var content, status <= 9p read $fpath + if $status != "0" { return "", format("failed to read 9p path: %s", $fpath) } @@ -12,21 +14,27 @@ fn acme_read(rpath) { fn acme_write(rpath, data) { var fpath = "acme/"+$winid+"/"+$rpath + var _, errmsg, status <= echo -n $data | 9p write $fpath + if $status != "0" { return format("failed to write to: (%s): %s", $fpath, $errmsg) } + return "" } fn acme_fname() { var path = "acme/"+$winid+"/tag" + var tag, status <= 9p read $path + if $status != "0" { return "", format("Failed to read tag: %s", $path) } var fname, status <= echo -n $tag | cut -d " " -f1 + if $status != "0" { return "", format("failed to get tag filename: %s", $tag) } @@ -36,11 +44,13 @@ fn acme_fname() { fn acme_savefile(path, data) { var _, status <= test -f $path + if $status != "0" { return format("file exists: %s", $path) } _, status <= echo -n $data > $path + if $status != "0" { return format("failed to write content: %s", $path) } @@ -52,6 +62,7 @@ fn acme_savefile(path, data) { # and an error (if any) fn acme_mktmpfile() { var tmp, status <= mktemp /tmp/acme-XXXX + if $status != "0" { return "", format("failed to create tmp file") } @@ -67,6 +78,7 @@ fn acme_mktmpfile() { # and return the modified body or an error. fn acme_simplefmt(fmtfn) { var tmpsrc, err <= acme_mktmpfile() + if $err != "" { return $err } @@ -76,23 +88,28 @@ fn acme_simplefmt(fmtfn) { } var body, err <= acme_read("body") + if $err != "" { - clean() + clean() + return $err } var err <= acme_savefile($tmpsrc, $body) + if $err != "" { clean() + return $err } var newbody, err <= $fmtfn($tmpsrc) + clean() + if $err != "" { return $err } - if $body != $newbody { # code changed, we need to update buffer var operations = ( @@ -108,6 +125,7 @@ fn acme_simplefmt(fmtfn) { for op in $operations { var err <= acme_write($op[0], $op[1]) + if $err != "" { return $err } @@ -115,4 +133,8 @@ fn acme_simplefmt(fmtfn) { } return "" +} + +fn acme_put() { + return acme_write("ctl", "put") } \ No newline at end of file diff --git a/bin/fmt b/bin/fmt index 71cefe4..f2da87c 100755 --- a/bin/fmt +++ b/bin/fmt @@ -3,7 +3,7 @@ # universal formatter import "io" -import "acme/acme.sh" +import "acme/acme" fn abortonerr(status, msg) { if $status != "0" { diff --git a/bin/putf b/bin/putf new file mode 100755 index 0000000..e4cb287 --- /dev/null +++ b/bin/putf @@ -0,0 +1,18 @@ +#!/usr/bin/env nash + +import "io" +import "acme/acme" + +var out, status <= fmt + +if $status != "0" { + io_println("error formatting code: %s", $out) + io_println("file will be saved anyway") +} + +var err <= acme_put() + +if $err != "" { + io_println("error saving file: %s", $err) + exit("1") +} \ No newline at end of file