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

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
