平衡点
2007/10/02
_ .* の管理
CVS から Subversion へ移行. Subversion はディレクトリの移動が簡単で, もう CVS へ戻れない感じがする...
.emacs.d とか, .vimrc とか, とりあえず .dotfiles 以下に置いて, ~/. にsymlink することにした.
ものっそ適当に作成 ↓
#!/usr/bin/env ruby $KCODE = 'u' require 'fileutils' # mkdir -p class Dir def Dir.mkdir_p(arg) path = String.new arg.each("/") do |x| path = path + x Dir.mkdir(path) unless FileTest.exist?(path) end end end # ディレクトリ内のファイルリスト. .svn と ., .. は無視 dir = Dir.glob('.*').reject{|ign| ign =~ /((^\.svn)|(^\.*$))/ } # 既存ファイルのバックアップを dotfiles/backup 以下に作成する backupdir = Dir.pwd + '/backup' Dir.mkdir_p(backupdir) # メイン dir.each do |file| # ソースファイル dotfile = Dir.pwd + '/' + file # symlink の位置 symlink = ENV['HOME'] + '/' + file # バックアップの位置 backup = backupdir + '/' + file # ファイルが存在する場合 if FileTest.exist?(symlink) # バックアップへの退避 File.rename(symlink, backup) if FileTest.file?(symlink) FileUtils.move(symlink, backup) if FileTest.directory?(symlink) # backup が symlink の場合は削除 File.delete(backup) if FileTest.symlink?(backup) # symlink 作成 File.symlink(dotfile, symlink) else # symlink 作成 File.symlink(dotfile, symlink) end end # backup direcotry が空なら削除 if Dir.entries(backupdir).reject{|i| i=~ /^\.*$/}.size == 0 Dir.delete(backupdir) end