#!/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
