2008年02月15日(金)

mhc2gcal 0.2.0 リリース

mhc2gcalに関するりばにしの記事

リリースしてからすっかり放置プレイ状態の 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

結構満足.

2008年02月15日02時27分 | Permalink