404 motivation not found | t_ishidaのブログ

5月/11

30

[誰得]svnクライアントのラッパ

また、svnクライアントのラッパ。
ブランチ操作に特化したもの。
ブランチ作ってチェックアウトしてくる奴とか、
マージする奴とかと統合したい。

#!/usr/bin/perl

## 環境設定
sub say { print @_ , "\n" }
my $SVN   = 'svn';
my %HOSTS = (
  user  => {
    host    => 'http://hoge.fuga',
    default => 1,
  },
  admin => {
    host    => 'http://hoge.fuga',
    default => 0,
  },
);

## ここからロジック
my $HOST = '';
my %COMMANDS =  (
  ls        => sub {
    `$SVN list '$HOST/branches'`
  },
  base_rev  => sub {
    `$SVN log '$HOST/branches/$_[0]' --stop-on-copy --quiet`
  },
  del       => sub {
    `$SVN del -m 'del $_[0]' '$HOST/branches/$_[0]'`
  },
  mv        => sub {
    `$SVN mv -m 'mv $_[0]' '$HOST/branches/$_[0]' '$HOST/branches/$_[1]'`
  }
);

## パラメータ処理(一個目はいつでもコマンド)
my $cmd    = shift @ARGV;
$COMMANDS{$cmd} or die '指定のコマンド無いっす';

## 対象ホストの解析とか
my %params = @ARGV;
if ( $params{-h} && $HOSTS{$params{-h}} ) {
  $HOST = $HOSTS{$params{-h}}->{host};
}
else {
  ( $HOST ) =
    map { $HOSTS{$_}->{host} }
      grep { $HOSTS{$_}->{default} }
        keys %HOSTS;
}
/^-/ and delete $params{$_} for keys %params;

## 実行
say $COMMANDS{$cmd}->( %params );

1;
Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

RSS Feed

コメントはまだありません。

Leave a comment!

<< [誰得]SVNクライアントのラッパが大きくなりました

[誰得]SVNのブランチを切ってチェックアウトするスクリプト >>

Find it!

Theme Design by devolux.org

Tag Cloud