#!/usr/bin/ruby # usage: change-default-flavor emacs-21.0.104 ? # usage: reverse-default-flavor # usage: change-temporary-flavor emacs-21.0.104 ? require "ftools" prefix="/" # prefix="/" case $0 when /change-default/ action = "change" when /~reverse/ action = "reverse" when /change-temporary/ action = "temporary" end flavor = ARGV[0] if ARGV[0] != nil lib_dir = prefix+"/usr/lib/emacsen-common" var_dir = prefix+"/var/lib/emacsen-common" def getCurrentFlavor(var_dir = "/") array = open(var_dir+"/installed-flavors").readlines return array.pop end def removeFlavor(flavor,var_dir = "/") array = open(var_dir+"/installed-flavors").readlines array.delete(flavor) return array end # synlink の変更 def changeLink(emacs,dir="/usr/bin/") Dir.open(dir).each{ |name| fullpath = dir+name if fullpath =~/\.#{emacs}$/ then srcname = fullpath distname = fullpath.dup distname.sub!(/\.#{emacs}$/,"") File.unlink(distname) if File.symlink?(distname) File.symlink(srcname,distname) end } end def writeFlavor(var_dir,flavors) a = open(prefix+var_dir+"/installed-flavors","w") flavors.each{ |flavor| a.write(flavor+"\n") } end case action when /change/ # デフォルト flavor の変更 current_flavor = getCurrentFlavor(var_dir) flavors = removeFlavor(var_dir,current_flavor) flavors.push(flavor+"\n") changeLink(flavor) writeFlavor(flavors) when /temporary/ # 一時的なflavor の変更 changeLink(flavor) when /reverse/ current_flavor = getCurrentFlavor(var_dir) changeLink(current_flavor) end