ufo: roswell script installer

20
UFO UFO Roswell Script Installer by ta2gch

Upload: ta2gch

Post on 26-Jan-2017

7.181 views

Category:

Engineering


1 download

TRANSCRIPT

UFOUFO

Roswell Script Installer

by ta2gch

自己紹介

● ta2gch● 都内にある某大学の数学科2年● Twitter (@ta2gch)● Github (ta2gch)● 自己紹介ページ(https://ta2gch.github.io)

● CommonLispを嗜んでいます。

● clfreaksのリスナーです。

UFOって何?

● 飛べません。● 食べられません。● 踊りません。

● でもRoswellスクリプトを簡単にイントールできます。

Roswellスクリプトとは

● CommonLispのインストーラー兼ランチャーである

Roswellが用意している簡易的なスクリプト

● 実態は CommonLisp

● main関数にスクリプトの引数を

文字列のリストで渡され、実行される。

● ros init <filename>でひな形が生成できる。

Roswellスクリプトとは

例(自分がよく使うRoswellスクリプト)

● fukamachi/clhs.ros● fukamachi/prove/run-prove.ros● fukamachi/clackup.ros● ta2gch/render.ros

UFOを作った理由

● ezoe コマンドが go で書かれてる。

● roswell スクリプトで ezoe コマンドを作った。

● 本家ezoeコマンドは go get で簡単にイントールできる。

● 一方 roswell スクリプトだと

“git clone→ ros build → mv”

● Go いいよね。← CommonLisp でも go get 欲しい。

質問ではない。

なぜUFO

● ロズウェル事件● Lispエイリアン

● RoswellスクリプトがUFOで飛んでくるから。

やぁ。

UFOで解決したいこと

問題点1問題点1Roswellスクリプトはローカルで実行するには便利だが、公開しようとするとインストール方法が煩雑になる。

例例$ git clone git://github.com/ta2gch/cl-ezoe

$ cd cl-ezoe

$ ros build cl-ezoe.ros

$ mv cl-ezoe ~/.roswell/bin

UFOで解決したいこと

問題点2問題点2Roswell の機能を使ってインストールしするときは *build-hook* を利用し~/.roswell/bin 配下にインストールするという工夫が必要。

例例#+ros.installing

(eval-when (:compile-toplevel :load-toplevel :execute)

(setq ros.install:*build-hook* (lambda () ...)))

UFOで解決したいこと

問題点3問題点3Roswell スクリプトの公開場所として最適である gist の url が直感的でないので go get をそのまま真似するのは厳しい。

例例https://gist.githubusercontent.com/ta2gch/737882bae1e7d86c99eb/raw/a57f6f0c183b2d32bcc813628cc30277bf5a4b51/test.ros

UFOでの解決案

● 問題点1→ufoコマンドで自動化する。

● 問題点2→*build-hook* を使わずにros build する。

● 問題点3→Mercurialのようにurlをいじる。

使い方

$ ufo install gist://fukamachi/clhs.ros

$ ufo install https://example.com/sample.ros

$ ufo install file:///home/username/sample.ros

$ ufo remove clhs

$ ufo update gist://fukamachi/clhs.ros

インストール方法

READMEに書いてあります。

①git clone git://github.com/ta2gch/UFO

②cd UFO

③ros -l ufo.asd install ufo

③でやっていること

● Roswell側でシステムをロードするとソースコード中 にある#+ros.installingが実行される。

● #+ros.installingでは*build-hook*にlambda式がsetqされている。

● どうやら*build-hook*が実行されることでソースツリーの中にroswellフォルダが作られ、その中にプロダクトの実行ファイルがdumpされるようになっている。

● roswellフォルダ内の実行ファイルを ~/.roswell/binに

コピー

実際のソースコード

(UFOのソースコードから取ってきました。)

使っている技術とか

● dexador● quri(使う予定)

● cl-gists● cl-fad● cl-ppcre(使わなくなる予定)

● roswell

使ってみた感想

● gistに公開されているものを気軽にインストール出来るようになるのは、やっぱり便利。

● file://はちょっと邪魔に思うときがある。

● ufo自体のインストールはちょっと面倒。

git clone → cd ufo → ros -l ufo.asd install ufo

今後の課題

● Quicklispに登録

● TravisCIでテストする。(どなたか教えてください。)

● Roswellスクリプトをもりもり書いて、ufoの出番を

増やす。

例例cl-projectやlemを呼び出すRoswellスクリプトとか。

宣伝● CL-POVというPOV-Rayのバインディングを作りま

した。● もちろんRoswellスクリプトでコマンドラインのイン

ターフェースの充実を図っています。

ありがとうございました。

Thank you!

https://github.com/ta2gch/UFO

Special Thanks@nitro_idiot @snmsts