0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

作業用スクリプトファイルをClojureで書く

Last updated at Posted at 2024-01-19

作業用スクリプトファイルをClojrueで書く

スクリプトファイルとして実行させられることはできたのですが、Clojure自体の立ち上がりが遅いので実用性はあんまりありません...

2024/05/19 追記
jokerというツールを使えば、高速に起動できることが分かったので、別記事でまとめました

はじめに

手元の環境はMacなので、Macベースで記述していきます。

インストール

Clojureの公式サイトから最新版の以下の3ファイルをDLします。

  • clojure-1.11.1.jar
  • core.specs.alpha-0.2.62.jar
  • spec.alpha-0.3.218.jar

この3ファイルをどこでもいいので場所を決めて配置します。
私の環境では以下のように/opt下にディレクトリを作成して置きました。

sudo mkdir /opt/clojure
sudo chown -R ユーザ名 /opt/clojure
mv clojure-1.11.1.jar /opt/clojure/
mv core.specs.alpha-0.2.62.jar /opt/clojure
mv spec.alpha-0.3.218.jar /opt/clojure

スクリプトファイル作成

Haskellの拡張子は.cljなので、sample.cljというファイルを作成する。

#^:shebang '[
  CLOJURE_HOME=/opt/clojure
  CP1=$CLOJURE_HOME/clojure.jar
  CP2=$CLOJURE_HOME/core.specs.alpha-0.2.62.jar
  CP3=$CLOJURE_HOME/spec.alpha-0.3.218.jar
  exec java -cp $CP1:$CP2:$CP3 clojure.main "$0" "$@"
]

(use '[clojure.java.shell :only (sh)])

;; 引数の取得(文字列の配列)
(let [args *command-line-args*]
  (println args))

;; OSコマンド実行
(defn run-cmd [cmd]
  (let [res (sh cmd)]
    (println "[Exit code]")
    (println (:exit res))
    (println "[Output]")
    (println (:out res))
    (println "[Error]")
    (println (:err res))))

(run-cmd "ls")

;; 実行が完了しないので明示的に終了させる
(shutdown-agents)

この状態で以下のコマンドを実行してファイルに実行権限を与える

chmod +x sample.clj

あとは以下のように実行すればOK

sample.clj

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?