#!/usr/bin/python -O
# Copyright 1999-2006 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)

try:
	import portage
except ImportError:
	from os import path as osp
	sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
	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
