#!/usr/bin/env ruby
=begin
=  make-dcchart-dir.rb
== USAGE:

 $ make-dcchart-dir.rb  --phys UWND --src NCEP --time daily --sigen hoge.SIGEN --mkfile ../Makafile --range 1990..2001 ./

== Description:
$B%G%#%l%/%H%jBgNL$K:n@.$9$k%9%/%j%W%H(B.
dcchart $B$G<}=8$9$k%G!<%?$r3JG<$9$k%G%#%l%/%H%j$r:n@.$9$k:]$KMQ$$$k$HJXMx(B.
$B<g$J5!G=$O(B

 (1) $B%*%W%7%g%s$G;XDj$7$?%Q%i%a!<%?$r85$K%G%#%l%/%H$r:n@.(B
 (2) --sigen $B$G;XDj$7$?(B SIGEN $B%U%!%$%k$d(B Makefile $B$r?w7?$K:n@.(B. $BJQ99ItJ,$OG/$NItJ,$N$_(B.

==COPYRIGHT 
created by daktu32 @ 2003-10-08
=end

require 'getopts'

# $B%*%W%7%g%s2r@O(B
unless getopts("hH", "phys:", "src:", "time:", "sigen:", "mkfile:", "range:")
  print "jgrep.rb: illegal option.\n"
  exit 1
end

unless ($OPT_phys) || ($OPT_src) || ($OPT_time) || ($OPT_sigen) || ($OPT_mkfile) || ($OPT_range) then
  print "please give value\n"
  exit
end

##-------------------------------------------------------------

# $B%Q%i%a!<%?;XDj(B 

p path = ARGV[0]
p range = ($OPT_range).to_s.split(":")

# mkfile, sigen $B$N@k8@(B
mkfile = ""
sigen = ""

Dir::foreach('.'){ |f|
  if f =~ /^\S*Makefile.hinagata/
    mkfile = f
  elsif f =~ /^\S*SIGEN.hinagata/
    sigen = f
  end
}


dir_ary = File.basename(Dir::pwd).split('.')

if dir_ary.size == 3
  phys = dir_ary[0]
  time = dir_ary[1]
  src = dir_ary[2]  
elsif dir_ary.size == 2
  phys = dir_ary[0]
  time = ""
  src = dir_ary[1]  
end

#p phys = ($OPT_phys)
#p src = ($OPT_src)
#p time = ($OPT_time)
#sigen = ($OPT_sigen)
#mkfile = ($OPT_mkfile)

unless time == ""
  time = time+"."
end

(range[0].to_i).upto(range[-1].to_i) do |year|
  newdir = path+phys+"."+year.to_s+"."+time+src
  print newdir+"\n"

  # $B%G%#%l%/%H%j:n@.(B
  if File.exist?(newdir)
    print "#{newdir} is already exists.\n"
  else 
    Dir::mkdir(newdir)
  end

  # SIGEN $B%U%!%$%k:n@.(B
  if File.exist?(newdir+".SIGEN")
    print "#{newdir}.SIGEN is already exists.\n"
  else
    output = File::open(newdir+".SIGEN", "w")
    IO.foreach(sigen) do |line|
      output.print(line.gsub(/\{year\}/, year.to_s))
    end
    output.close
  end

  # Makefile $B:n@.(B
  if File.exist?(newdir+"/Makefile")
    print "#{newdir}/Makefile is already exists.\n"
  else
    output = File::open(newdir+"/Makefile", "w")
    IO.foreach(mkfile) do |line|
      output.print(line.gsub(/\{year\}/, year.to_s).gsub(/\{year-1\}/, (year-1).to_s))
    end
    output.close
  end
end
