SVNとかCVSからチェックアウトしたファイルのうち、javaとjspファイル以外はいらないので、削除するためのスクリプトをRubyで書いてみた。
クラスとか使ってないです。
今回成長したのは、「logger.debug(“checkout #{dirname}”)」のように変数を文字列内に埋め込めることがわかったことかなー(ちっちゃ!)。
ちょっとずつ成長です。
# SVNからチェックアウト。 # INCLUDEで指定した拡張子以外を削除する。 require 'logger' logger = Logger.new(STDOUT) logger.level = Logger::DEBUG $KCODE='UTF-8' SEP="\\" SVN_PATH="http://localhost/svn" SVN_USER="fujihara" SVN_PASSWORD="fujihara" CO_PATH="D:\\Study\\Ruby\\svn" FIND_PATH="D:/Study/Ruby/svn" PATH_FILE="./path.csv" INCLUDE="java,jsp" logger.debug("start") # チェックアウト fr = open(PATH_FILE, "r") while line = fr.gets line = line.chomp if line == "" next end dirname = line.sub("/", "") dirname = dirname.gsub("/", "_") logger.debug("checkout #{dirname}") dist = CO_PATH + SEP + dirname cmd = "mkdir #{dist}" logger.debug("cmd #{cmd}") system(cmd) cmd = "svn co #{SVN_PATH}#{line} #{dist} --username #{SVN_USER} --password #{SVN_PASSWORD}" logger.debug("cmd #{cmd}") system(cmd) end fr.close # 対象となるファイルを調べる includes = INCLUDE.split(/,/) includearray=[] for extension in includes includearray.push(Dir.glob("#{FIND_PATH}/**/*#{extension}")) end # 全ファイルの配列から、対象ファイルのパスを削除 pathes = Dir.glob("#{FIND_PATH}/**/*") for includepaths in includearray for includepath in includepaths pathes.delete(includepath) end end # 対象以外を削除 for delpath in pathes if FileTest::directory?(delpath) else File.delete(delpath) end end logger.debug("end")