* Use the profile pointed to by ~/.nix-profile if no --profile

argument is specified.
This commit is contained in:
Eelco Dolstra 2004-02-06 10:59:06 +00:00
parent 66e94d3275
commit 49bafe1faf
2 changed files with 12 additions and 7 deletions

View file

@ -101,7 +101,7 @@ bool pathExists(const Path & path)
{ {
int res; int res;
struct stat st; struct stat st;
res = stat(path.c_str(), &st); res = lstat(path.c_str(), &st);
if (!res) return true; if (!res) return true;
if (errno != ENOENT) if (errno != ENOENT)
throw SysError(format("getting status of %1%") % path); throw SysError(format("getting status of %1%") % path);

View file

@ -645,12 +645,11 @@ static void opSwitchProfile(Globals & globals,
{ {
if (opFlags.size() > 0) if (opFlags.size() > 0)
throw UsageError(format("unknown flags `%1%'") % opFlags.front()); throw UsageError(format("unknown flags `%1%'") % opFlags.front());
if (opArgs.size() > 1) if (opArgs.size() != 1)
throw UsageError(format("`--profile' takes at most one argument")); throw UsageError(format("`--profile' takes exactly one argument"));
Path profile = Path profile = opArgs.front();
absPath(opArgs.size() == 0 ? globals.profile : opArgs.front()); Path profileLink = getHomeDir() + "/.nix-profile";
Path profileLink = getHomeDir() + "/.nix-userenv";
switchLink(profileLink, profile); switchLink(profileLink, profile);
} }
@ -680,7 +679,6 @@ void run(Strings args)
Operation op = 0; Operation op = 0;
Globals globals; Globals globals;
globals.profile = canonPath(nixStateDir + "/profiles/default");
globals.nixExprPath = getDefNixExprPath(); globals.nixExprPath = getDefNixExprPath();
for (Strings::iterator i = args.begin(); i != args.end(); ++i) { for (Strings::iterator i = args.begin(); i != args.end(); ++i) {
@ -723,6 +721,13 @@ void run(Strings args)
if (!op) throw UsageError("no operation specified"); if (!op) throw UsageError("no operation specified");
if (globals.profile == "") {
Path profileLink = getHomeDir() + "/.nix-profile";
globals.profile = pathExists(profileLink)
? absPath(readLink(profileLink), dirOf(profileLink))
: canonPath(nixStateDir + "/profiles/default");
}
openDB(); openDB();
op(globals, opFlags, opArgs); op(globals, opFlags, opArgs);