#!/usr/bin/python -O
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

from __future__ import print_function

import errno
import sys

def usage(status):
	print("Usage: env-update [--no-ldconfig]")
	print("")
	print("See the env-update(1) man page for more info")
	sys.exit(status)

if "-h" in sys.argv or "--help" in sys.argv:
	usage(0)

makelinks=1
if "--no-ldconfig" in sys.argv:
	makelinks=0
	sys.argv.pop(sys.argv.index("--no-ldconfig"))

if len(sys.argv) > 1:
	print("!!! Invalid command line options!\n")
	usage(1)

from os import path as osp
pym_path = osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")
sys.path.insert(0, pym_path)
import portage

try:
	portage.env_update(makelinks)
except IOError as e:
	if e.errno == errno.EACCES:
		print("env-update: Need superuser access")
		sys.exit(1)
	else:
		raise
