diff options
Diffstat (limited to 'examples/tomo-install/tomo-install.tm')
| -rw-r--r-- | examples/tomo-install/tomo-install.tm | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/examples/tomo-install/tomo-install.tm b/examples/tomo-install/tomo-install.tm index 0a255987..fd8b3c40 100644 --- a/examples/tomo-install/tomo-install.tm +++ b/examples/tomo-install/tomo-install.tm @@ -10,19 +10,19 @@ _HELP := " Usage: $_USAGE " -func find_urls(path:Path -> [Text]): +func find_urls(path:Path -> [Text]) urls : @[Text] = @[] - if path.is_directory(): - for f in path.children(): + if path.is_directory() + for f in path.children() urls.insert_all(find_urls(f)) - else if path.is_file() and path.extension() == ".tm": - for line in path.by_line()!: - if captures := line.pattern_captures($Pat/use{space}{url}/) or line.pattern_captures($Pat/{id}{space}:={space}use{space}{url}/): + else if path.is_file() and path.extension() == ".tm" + for line in path.by_line()! + if captures := line.pattern_captures($Pat/use{space}{url}/) or line.pattern_captures($Pat/{id}{space}:={space}use{space}{url}/) urls.insert(captures[-1]) return urls -func main(paths:[Path]): - if paths.length == 0: +func main(paths:[Path]) + if paths.length == 0 paths = [(./)] urls := (++: find_urls(p) for p in paths) or [] @@ -32,23 +32,23 @@ func main(paths:[Path]): (~/.local/share/tomo/installed).create_directory() (~/.local/share/tomo/lib).create_directory() - for url in urls: + for url in urls original_url := url url_without_protocol := url.trim_pattern($Pat"http{0-1 s}://", right=no) hash := $Shell@(echo -n @url_without_protocol | sha256sum).get_output()!.slice(to=32) - if (~/.local/share/tomo/installed/$hash).is_directory(): + if (~/.local/share/tomo/installed/$hash).is_directory() say("Already installed: $url") skip alias : Text? = none curl_flags := ["-L"] - if github := url_without_protocol.pattern_captures($Pat"github.com/{!/}/{!/}#{..}"): + if github := url_without_protocol.pattern_captures($Pat"github.com/{!/}/{!/}#{..}") user := github[1] repo := github[2] tag := github[3] url = "https://api.github.com/repos/$user/$repo/tarball/$tag" alias = "$(repo.without_prefix("tomo-")).$(tag).$(user)" - if github_token: + if github_token curl_flags ++= ["-H", "Authorization: Bearer $github_token"] curl_flags ++= [ "-H", "Accept: application/vnd.github+json", @@ -69,7 +69,7 @@ func main(paths:[Path]): fi `.get_output()!) - if alias: + if alias say($Shell( set -exuo pipefail ln -f -s @hash ~/.local/share/tomo/installed/@alias |
