#!/usr/bin/env python3

import argparse
import pycman.config
import urllib.error
import sys
import XCPF


SECONDS_PER_DAY = 60 * 60 * 24

parser = argparse.ArgumentParser(
  description='Get the ABS path of selected packages.'
)
parser.add_argument(
  'pkgname', nargs='+',
)
parser.add_argument(
  '--config', metavar='<filepath>', default='/etc/pacman.conf',
  help='Pacman configuration file. Default: %(default)s.'
)
parser.add_argument(
  '--ttl', default=1, type=float,
  help='Time-to-live of the cached data in days. For ABS paths this should be at least a day. Default: %(default)s.'
)

def get_abs_path(opi, pkgname):
  pkginfo = opi.pkginfo_by_pkgname_or_pyalpm_package(pkgname)
  try:
    return '/var/abs/{}/{}'.format(pkginfo['repo'], pkginfo['pkgbase'])
  except (TypeError, KeyError) as e:
    return ''


def main(args=None):
  pargs = parser.parse_args(args)

  opi = XCPF.OfficialPkgInfo(
    config=pargs.config,
    ttl=int(pargs.ttl*SECONDS_PER_DAY),
  )

  for pkgname in pargs.pkgname:
    print(get_abs_path(opi, pkgname))


if __name__ == '__main__':
  try:
    main()
  except (KeyboardInterrupt, BrokenPipeError):
    pass
