soraなりの日々 - fc2 -

こころにひっかかったもの

[asp.net, ruby]自動でチカンよ!置換なのよ。

人によって、いろんな"シガラミ"があるように
ソースにも"シガラミ"があるんですな。

さもありなん。

このエントリーをはてなブックマークに追加
で、今やってるプロジェクトにもいろんな"シガラミ"がありまして、
同じソースで

「アソコにはバイナリだけリリースだけど、ココはメンテするんでソースごと。
 だから、アソコの分向けのコメントとか書かないでね。」

とか言われちゃったり。。。

コメント書かないとかありえませんから!
(メンテできないじゃん!)

て、ことで、前回対応したビルドの自動化にいらないコメントを
削除するプログラムを ruby で作ってみた。

#!/usr/bin/ruby -Ku
#
# del_comments.rb -
#
# The source code packaged with this file is Free Software
#
# Copyright (C) 2008 by Takafumi Kawano <sora dot hs at gmail dot com>.
#
require 'tempfile'
require 'kconv'
require 'find'
require 'Win32API'

Find.find(File.expand_path('./work_dir')) do |path|

  next unless File.file?(path)

  next unless File.basename(path) != 'vssver2.scc'

  next unless File.extname(path) == '.vb'

  next unless /.aspx.vb/ =~ path

  File.chmod(0777, path)

  temp = Tempfile::new('tmp_file', './tmp')

  File.open(path, "r") { |f|
    f.each { |line|
      if /'*(○○)/ =~ line.toutf8
        str = line.toutf8
puts "before " + str.tosjis
        str.gsub!(/○○/, " ")
        line = str
puts " -> after " + line.tosjis
puts " -> file " + File.basename(path).tosjis
      end
      temp.puts(line)
    }
  }

  temp.close
  temp.open

  File::open(path, 'w'){ |f|
    temp.each{|line|
      f.puts(line)
    }
  }

  temp.close(true)

end

(今見返してみても、やっぱしもちっと賢い方法ありそう。。)

コメント中の "○○" の文字列がある "work_dir" の中の全ソースを置換する。
ビルドの自動化のプロセスとして、
 1.vss からプロジェクトのソースを全取得
 2.落としてきたソースをすべてを置換
 3.プロジェクトのソリューションビルド
という流れ。

これで"いつでも"、"どこにでも"リリースができますがな!
(こういうのはプロジェクト開始の直後の時に作っといてくれっっ)

ps:
 ビルドの自動化を運用してみて、、、だけど、
 やっぱ複数人で開発してるんで、リリース用でも
 ビルドエラーとなってることもしばしば。。
 ビルドエラーが起きるとメールが飛ぶようにしたい今日この頃。
 それも ruby で作るか。
このエントリーをはてなブックマークに追加

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://sora2hs.blog70.fc2.com/tb.php/312-4231804b
この記事にトラックバックする(FC2ブログユーザー)