2008年02月15日(金)
mhc2gcal 0.2.0 リリース
リリースしてからすっかり放置プレイ状態の mhc2gcal ですが,ご要望いただいていた proxy 対応と verbose モード,およびご提案いただいていた description の有無を選択できるようにしたものを,バージョン 0.2.0 として作成しました.
2008年08月19日追記:最新版の使い方はこちらをご参照ください.
2009年10月26日追記:最新版の使い方はこちらをご参照ください.
というわけで mhc2gcal.rb はこちら.
前のバージョン(以前のものには番号が振られていなかった・・・)からの変更点について.
まず,ユーザ設定についてはスクリプトファイルに含めずに,外部の yaml ファイルに書き込む形式に変更しました.デフォルトではスクリプトと同じディレクトリの「.gcal」というファイルを参照するようになっていますので,以下の内容で「.gcal」というファイルを作成してください.
# google calendar Feed URL gcal_feed: http://www.google.com/calendar/feeds/XXXXXXXXXXXXXXXX@group.calendar.google.com/private/full # email address gcal_mail: XXXXXXXXXX@gmail.com # password gcal_pass: XXXXXXX # sync mode (delete or keep) gcal_mode: keep
「gcal_feed」「gcal_mail」「gcal_pass」については,小文字になった以外は前回と同様.
変更点かつ注意点は「gcal_mode」で,これを「delete」とすると Google Calendar のデータを削除する,「keep」とすると削除せずにキープする,という仕組みになっています.どちらでもないと設定エラーになります.このような仕様になっている理由はこちらのエントリをご参照ください.
次に,コマンドラインオプションについて.
--help show this message. --category=CATEGORY pick only in CATEGORY. '!' and space separated multiple values are allowed. --secret=CATEGORY change the title of the event to 'SECRET' space separated multiple values are allowed. --date={string[+n],string-string} set a period of date. string is one of these: today, tomorrow, sun ... sat, yyyymmdd, yyyymm, yyyy yyyymm lists all days in the month and yyyy lists all days in the year. list n+1 days of schedules if +n is given. default value is 'today+0' --description add description. --verbose verbose mode. --proxy-addr=addr set the address of http proxy. --proxy-port=port set the port number of http proxy. --proxy-user=user set the username of http proxy. --proxy-pass=pass set the password of http proxy. --version display the version of mhc2gcal and exit.
まず proxy 対応について.オプションで --proxy-addr=addr と --proxy-port=port が指定されていると,そのIPアドレス(あるいはホスト)とポート番号をプロキシとして使用します.どちらかが欠けてたら使用しません.次に --proxy-user=user と --proxy-pass=pass が指定されていると,それらをユーザ名およびパスワード名としてプロキシの認証に使います.これもどちらかが欠けていると認証は有効になりません.
ちなみに実行時には,プロキシおよびプロキシ認証の有無に応じて以下のような表示があります.ご確認ください.
プロキシ未使用時 Connect to Google Calendar directly プロキシ使用時(認証なし) Connect to Google Calendar through proxy(addr:port) プロキシ使用時(認証あり) Connect to Google Calendar through proxy(user:pass@addr:port)
次に description について.オプションとして --description を指定すると,イベントに詳細が追加されます.詳細の書式などに関しては,白井さんが追加してくださったものをそのまま採用させていただきました.
そして verbose について.オプションとして --verbose を指定すると,どのイベントを削除したのか,どのイベントを登録したのか,という情報が表示されます.動作の確認などにご活用ください.
最後に個人的な使い方の例.当方は MacOSX (Leopard) 環境下でこのスクリプトを使っているのですが,プロキシの設定が zsh の環境変数には引き継がれません.なんとか反映させたいと思い,以下のようなスクリプトで動作させています.
#!/bin/sh SCUTIL=/usr/sbin/scutil GREP=/usr/bin/grep PERL=/usr/bin/perl RUBY=/usr/bin/ruby MHC2GCAL_DIR=/path/to/mhc2gcal/dir PROXY_ENABLE=`$SCUTIL --proxy | $GREP "HTTPEnable" | $PERL -pe 's/^.*HTTPEnable : (.*)$/$1/'` if [ $PROXY_ENABLE -eq 1 ] then PROXY_ADDR=`$SCUTIL --proxy | $GREP "HTTPProxy" | $PERL -pe 's/^.*HTTPProxy : (.*)$/$1/'` PROXY_PORT=`$SCUTIL --proxy | $GREP "HTTPPort" | $PERL -pe 's/^.*HTTPPort : (.*)$/$1/'` fi cd $MHC2GCAL_DIR if [ $PROXY_ENABLE -eq 1 ] then $RUBY ./mhc2gcal.rb --date=today+60 --category="!todo !done !holiday !birthday" --secret="private" --verbose --proxy-addr="$PROXY_ADDR" --proxy-port="$PROXY_PORT" else $RUBY ./mhc2gcal.rb --date=today+60 --category="!todo !done !holiday !birthday" --secret="private" --verbose fi
結構満足.