-
Notifications
You must be signed in to change notification settings - Fork 10
/
Lakefile
79 lines (57 loc) · 1.54 KB
/
Lakefile
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#|-*- mode:lisp -*-|#
(in-package :cl-user)
(defpackage :lake.user
(:use :cl :lake :cl-syntax)
(:shadowing-import-from :lake
:directory))
(in-package :lake.user)
(use-syntax :interpol)
(task "default" ("hello" "hello.o" "dir" "name:foo"))
(task "hello" ()
"A task that print hello."
(echo "do task hello!"))
(task "call-hello" ()
;; Call a task from another.
(execute "hello"))
(defparameter cc "gcc")
(file "hello.o" ("hello.c")
"A file task that compiles a C source file."
(sh #?"${cc} -c hello.c"))
(directory "dir" "Create a directory.")
(directory "foo") ; superseded by the next task.
(task "foo" ("bar")
(echo "foo"))
(task "bar" ("foo")
(echo "bar"))
;; namespace
(namespace "name"
(task "foo" ("bar")
"A task in \"name\" namespace."
(echo "name.foo"))
(task "bar" ()
(echo "name.bar"))
(file "hello.o" ("hello.c")
(sh "gcc -c hello.c"))
(task "call-foo" ()
(execute "foo")))
(task "home" ()
;; Use environment variable via roswell.
(echo (uiop:getenv "HOME")))
;; For simultaneous execution.
(task "multi" ("a" "b" "c")
(echo "multi"))
(task "a" ()
(sleep 1)
(echo "a"))
(task "b" ()
(sleep 1)
(echo "b"))
(task "c" ()
(sleep 1)
(echo "c"))
(task "build" ()
(sh "rm -f bin/lake")
(sh "qlot exec ros run -L sbcl -e '(ql:quickload :deploy)' -e '(progn (setf deploy:*status-output* nil) (asdf:make :lake))'"))
(task "update-formula" ()
"Updates Homebrew's formula in lake.rb"
(sh "qlot exec cl-brewer lake"))