Zaurus用ミニスクリプト
http://websvn.nyaxtstep.com/viewvc.cgi/zaurus以下にいろいろ作った。
powersaver.sh
screenrcのblankerprg設定用。AC電源つながってたらスクリーンセーバ起動。つながってないとサスペンドする。
initkmap
/etc/rc.d/rc2.d以下にシンボリックリンクつくって使う。キーマップの自動ロード。
ローカル変数隔離してeval
ローカル変数が"cpp"(と"_erbout")だけの新規スコープを作ってそこでevalしたかった。
現在の実装ではメソッド内メソッドを定義してやってそこのbindingでevalしてます。
もっといい書き方があれば教えてください。
続きを読むConfigPP: preprocessor for configuration files
DL:
- http://websvn.nyaxtstep.com/viewvc.cgi/configpp/configpp.rb
- svn://home.nyaxtstep.com/configpp/configpp.rb
概要
設定ファイル管理用プリプロセッサです。複数の異なる環境で設定ファイルを共有したい場合に使います。
目的
全く同じ設定ファイルを複数の異なる環境で使用することは一般的に困難です。
vim, emacs等は高度な設定ファイルパーサを備えている*1ため条件分岐等を利用し、環境依存の設定を行うことが可能ですが、ほとんどのソフトウェアはそのような機能を持っていません。
ConfigPPを利用することで、簡易パーサのみ搭載しているようなソフトウェアでも簡単に環境依存の設定を管理することが可能になります。
使用方法
まず、configpp用のソースファイルを書きます。基本的にerubyで書けばいいのですが、いくつか注意点があります。
configpp用識別行を入れる
書式:
# configpp: 出力ファイル名, バージョン
コメントprefixの"# "は変更可能です。
他になにかあったかな?
ConfigPPUtilの使用
ConfigPPは、設定ファイルで使用される典型的な処理をまとめたクラスConfigPPUtilを持っています。
ConfigPPUtilのインスタンスはクラス変数@cppに代入されているので、自由にスクリプト中で使うことができます。
ヘッダーの出力
<%= @cpp.header %>
OS判定
使用例
<% if @cpp.os == 'linux' %> linux環境依存処理 <% end %>
ディストリビューション判定
<% case @cpp.dist %> <% when 'debian' %> Debian Linux依存 <% when 'zaurus' %> Sharp Linux依存 <% else %> 他環境 <% end %>
ユーザ拡張オプション
./configpp.rb --ext オプション名=値
として渡す
./configpp.rb --ext custom=value
<% if @cpp.custom == 'value' %> asdffdsa <% end %>
使用例:
screenrc.configpp
# configpp: .screenrc, $Id$ <%= @cpp.header %> escape ^Pp vbell off autodetach on bind w windowlist -b defscrollback 300 defhstatus l^En:^Etl shell -$SHELL caption always "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%y/%m/%d %{=b wb}%c" startup_message off encoding utf8 <% if @cpp.dist == 'zaurus' %> acladd zaurus <% end %> # launcher settings <% if @cpp.dist == 'zaurus' %> bind ^b exec sudo /home/zaurus/bin/backlightutil.sh bind -c app d screen sudo chroot /mnt/card/debroot/ su - zaurus <% else %> bind -c app t screen top bind -c app v screen vim <% end %> bind ^t command -c app # screen blanker <% if @cpp.dist == 'zaurus' %> idle 120 blanker blankerprg powersaver.sh <% end %>
bashでスクリーンセーバ書いた
tssコンパイルするのが面倒だったので。Zaurusで使用する予定。
エスケープシーケンス認識するターミナルとbashがあれば動くはず。
http://websvn.nyaxtstep.com/viewvc.cgi/zaurus/miscscripts/screensaver.sh?revision=507&view=markup