Skip to content

Commit 93eb418

Browse files
committed
lesson #32
1 parent 1ea8506 commit 93eb418

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

Diff for: otus-32/README.org

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#+TITLE: Скрипты на Clojure, Babashka runtime
2+
3+
#+begin_quote
4+
Познакомимся с проектом babashka для написания скриптов на Clojure;
5+
Научимся создавать command line interface для своих скриптов,
6+
автоматизировать рутинные задачи с использованием babashka tasks.
7+
#+end_quote
8+
9+
* [[https://babashka.org/][Babashka]]
10+
11+
Диалект Clojure, имеющий [[https://github.com/babashka/babashka#differences-with-clojure][некоторые отличия]] от оригинала.
12+
13+
** Основы
14+
15+
#+BEGIN_SRC shell :results verbatim
16+
17+
echo "Hello" | bb -e '(str *input* ", World!")'
18+
19+
bb '(+ 1 2 3)'
20+
21+
#+END_SRC
22+
23+
#+BEGIN_SRC shell :results verbatim
24+
25+
echo "{:a 42 :b 100}" | \
26+
bb -IO -e '(let [[{:keys [a b]} & _] *input*] {:result (+ a b)})'
27+
28+
#+END_SRC
29+
30+
** Вызов внешних команд
31+
32+
#+BEGIN_SRC clojure
33+
34+
(println (:out (shell/sh "echo" "123")))
35+
36+
#+END_SRC
37+
38+
#+BEGIN_SRC clojure
39+
40+
(prn (shell/sh "echo" "123"))
41+
42+
#+END_SRC
43+
44+
#+BEGIN_SRC clojure :backend babashka
45+
46+
(println '((1 2 3) (4 5 6)))
47+
48+
#+END_SRC
49+
50+
** CLI args ([[https://github.com/babashka/cli][babashka.cli]])
51+
52+
#+BEGIN_SRC clojure
53+
54+
(require '[babashka.cli :as cli])
55+
56+
(cli/parse-args ["--output" "foo.txt" "--" "bar"])
57+
58+
(cli/parse-opts ["--port=8080"] {:coerce {:port :int}})
59+
60+
(cli/parse-args ["--verbose"])
61+
62+
#+END_SRC
63+
64+
** Задачи и [[file:bb.edn][bb.edn]]
65+
66+
Список задач:
67+
68+
#+BEGIN_SRC shell :results verbatim
69+
70+
bb tasks
71+
72+
#+END_SRC
73+
74+
Выполнение задачи:
75+
76+
#+BEGIN_SRC shell
77+
78+
bb run grep-me
79+
80+
#+END_SRC

Diff for: otus-32/bb.edn

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{:tasks
2+
{hi
3+
{:doc "Greets you"
4+
:task (shell "echo 123")}
5+
6+
hihi
7+
(do (run 'hi)
8+
(run 'hi))
9+
10+
grep-me
11+
(-> (shell {:out :string} "echo -n '123\n456\n")
12+
(shell "grep 5"))}}

Diff for: otus-32/script.clj

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env bb -I
2+
3+
(defn sum-a-and-b []
4+
(let [[{:keys [a b]} & _] *input*]
5+
{:result (+ a b)}))
6+
7+
(prn (sum-a-and-b))

0 commit comments

Comments
 (0)