平衡点
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
[ツッコミを入れる]