-
Notifications
You must be signed in to change notification settings - Fork 9
/
local_file.clj
25 lines (22 loc) · 1.08 KB
/
local_file.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(ns babashka.bbin.scripts.local-file
(:require [babashka.bbin.protocols :as p]
[babashka.bbin.scripts.common :as common]
[babashka.bbin.dirs :as dirs]
[babashka.fs :as fs]))
(defrecord LocalFile [cli-opts coords]
p/Script
(install [_]
(let [file-path (str (fs/canonicalize (:script/lib cli-opts) {:nofollow-links true}))
script-deps {:bbin/url (str "file://" file-path)}
header {:coords script-deps}
script-name (or (:as cli-opts) (common/file-path->script-name file-path))
script-contents (-> (slurp file-path)
(common/insert-script-header header))
script-file (fs/canonicalize (fs/file (dirs/bin-dir cli-opts) script-name)
{:nofollow-links true})]
(common/install-script script-name header script-file script-contents cli-opts)))
(upgrade [_]
(p/install (map->LocalFile {:cli-opts {:script/lib (:bbin/url coords)}
:coords coords})))
(uninstall [_]
(common/delete-files cli-opts)))