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
結構満足.
いつも重宝させていただいております。
これはmhc2gcalのせいではないとおもっていますが、
このところ削除がうまくいかないでスクリプトが止まってしまっています。
$ ruby mhc2gcal-0.2.0.rb –verbose –date=20080201-20080301
Connect to Google Calendar directly
Connect as XXXX@gmail.com
Delete events from Google Calendar
/usr/lib/ruby/gems/1.8/gems/gcalapi-0.1.0/lib/googlecalendar/event.rb:152:in `destroy!’: Not Deleted (GoogleCalendar::EventDeleteFailed)
from mhc2gcal-0.2.0.rb:219
from mhc2gcal-0.2.0.rb:215:in `each’
from mhc2gcal-0.2.0.rb:215
でも、keepで試すと登録はできているのですよね…。
なにかご存知でしたら、ご教授願えればと。
kuboakiさん
コメントありがとうございます.
こちらでも慌てて動かしてみたところ,エラーが出ました.
いろいろ調べて,自分なりの対応策を以下のエントリに記載しました.
http://nao.river24.net/blog/entry/20080219002630
これで解決すれば幸いです.
こんにちは、白井です。
あれ? mhc2gcal で Google calendar の delete が出来ないなぁ、と悩んで調べたところ mhc2gcal.rb ver.0.2.0 を発見しました。いろいろと改良ありがとうございます。
# delete の解析も大変助かりました。感謝、感謝です。
さて、早速新しい mhc2gcal を使ってみたのですが YAML file の扱いで二点ほど気になった点があります。
・スクリプトと同じディレクトリの .gcal を参照となっていますが、ぼくの環境ではすべて、mhc2gcal を起動したカレントディレクトリを見に行っているようです。
・YAML file にメールアドレスなどを書きますが、複数の設定を使い分けるときが面倒です。オプションで指定できた方が便利かと思います。
ともに、一皮 shell script をかぶせれば解決できる問題ですが、折角なのでパッチにしてみました。
コメントでパッチを書くとどうなるのかわからないので、
http://www.meadowy.org/~shirai/tmp/mhc2gcal.diff
に置いておきました。検討していただけると幸いです。
白井さん
YAMLファイルの扱いについて,ご指摘・ご提案ありがとうございます.
是非このパッチを適用させていただきたいと思います.
自分で書いたスクリプトにパッチをいただいた場合って,
それを適用したものを公開するときに,
パッチの作者の情報などをどうすればいいのか,
全然わかっていないのですが,どんなもんかご存知でしょうか?
# 前回ご提案いただいたDescriptionについては,
# そのまま入れてしまいましたが・・・.
>> 是非このパッチを適用させていただきたいと思います.
ありがとうございます。
>> パッチの作者の情報などをどうすればいいのか,ご存知でしょうか?
うーむ、
(1) ChangeLog があるようならそこに書く。
(2) script 中にコメントで “thank you” って書く。
(3) 気にしない。
というパターンがあると思いますが、この程度のパッチだったら (3) の気にしない、でよいんじゃないかと思います。パッチ書いた人間にとっては、採用していただけた!ということが一番うれしいことですからね 🙂
白井さん
コメントありがとうございます.
とりあえずは (3) の気にしないで進めさせていただきます:)
今後,ChangeLogやgcalapiへのパッチなども含めた形で
公開できるように整備したいと思います.