import os
import sys

assert('XIA2_ROOT' in os.environ)

if not os.environ['XIA2_ROOT'] in sys.path:
  sys.path.append(os.environ['XIA2_ROOT'])

def xia2hdr(filename, image_range):

  # diamantle the filename into template, directory, image numbers

  from Experts.FindImages import image2template_directory, image2image

  template, directory = image2template_directory(filename)
  image_number = image2image(filename)

  assert(image_number == image_range[0])

  # read the first image header to get the starting point

  from Wrappers.XIA.Diffdump import Diffdump

  d = Diffdump()

  d.set_image(filename)
  header = d.readheader()

  # now regenerate the rest of the image headers for image range...

  from Experts.FindImages import template_directory_number2image
  import copy
  import datetime
  import time

  fake_header_cache = { }

  for j in range(image_range[0], image_range[1] + 1):
    offset = j - image_range[0]
    fake_header = copy.deepcopy(header)
    fake_header['epoch'] = (header['epoch'] +
                            offset * header['exposure_time'])
    fake_header['date'] = time.asctime(datetime.datetime.fromtimestamp(
        fake_header['epoch']).timetuple())
    fake_header['phi_start'] = (header['phi_start'] +
                                offset * header['phi_width'])
    fake_header['phi_end'] = (header['phi_end'] +
                              offset * header['phi_width'])

    fake_header_cache[template_directory_number2image(
        template, directory, j)] = fake_header

  import json
  return json.dumps(fake_header_cache)

if __name__ == '__main__':
  print xia2hdr(os.path.abspath(sys.argv[1]),
      (int(sys.argv[2]), int(sys.argv[3])))
