#!/usr/bin/python

import warnings
warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning)
import apt

from UpdateManagerCore.MetaRelease import MetaReleaseCore
from UpdateManagerCore.DistUpgradeFetcherCore import DistUpgradeFetcherCore
from optparse import OptionParser
import gettext
from gettext import gettext as _
import time
import sys

if __name__ == "__main__":
  gettext.bindtextdomain("update-manager-core")
  gettext.textdomain("update-manager-core")
 
  parser = OptionParser()
  parser.add_option ("-d", "--devel-release", action="store_true",
                     dest="devel_release", default=False,
                     help=_("Check if upgrading to the latest devel release "
                          "is possible"))
  parser.add_option ("-p", "--proposed", action="store_true",
                     dest="proposed_release", default=False,
                     help=_("Try upgrading to the latest release using "
                            "the upgrader from $distro-proposed"))
  parser.add_option ("-m", "--mode", default="server",
                     dest="mode", 
                     help=_("Run in a special upgrade mode.\n"
                            "Currently 'desktop' for regular upgrades of "
                            "a desktop system and 'server' for server "
                            "systems are supported."))
  parser.add_option ("-f", "--frontend", default="DistUpgradeViewText",
                     dest="frontend", 
                     help=_("Run the specified frontend"))

  (options, args) = parser.parse_args()

  print _("Checking for a new ubuntu release")
  m = MetaReleaseCore(useDevelopmentRelease=options.devel_release,
                      useProposed=options.proposed_release)
  # this will timeout eventually
  while m.downloading:
	  time.sleep(0.5)
  if m.new_dist is None:
	  print _("No new release found")
	  sys.exit(1)
  # we have a new dist
  progress = apt.progress.TextFetchProgress()
  fetcher = DistUpgradeFetcherCore(new_dist=m.new_dist,
				   progress=progress)
  fetcher.run_options += ["--mode=%s" % options.mode,
                          "--frontend=%s" % options.frontend,
                          ]
  fetcher.run()
