about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nix.cc68
1 files changed, 17 insertions, 51 deletions
diff --git a/src/nix.cc b/src/nix.cc
index 0cdce2adc5ec..0e515457243b 100644
--- a/src/nix.cc
+++ b/src/nix.cc
@@ -10,7 +10,7 @@
 typedef void (* Operation) (Strings opFlags, Strings opArgs);
 
 
-typedef enum { atpHash, atpName, atpPath, atpUnknown } ArgType;
+typedef enum { atpHash, atpPath, atpUnknown } ArgType;
 
 static ArgType argType = atpUnknown;
 
@@ -21,13 +21,12 @@ static ArgType argType = atpUnknown;
 
    Operations:
 
-     --install / -i: install (or `realise') values
-     --delete / -d: delete values
-     --query / -q: query stored values
-     --add: add values
+     --install / -i: realise a Nix expression
+     --delete / -d: delete paths from the Nix store
+     --add / -A: copy a path to the Nix store
 
-     --dump: dump a value as a Nix archive
-     --restore: restore a value from a Nix archive
+     --dump: dump a path as a Nix archive
+     --restore: restore a path from a Nix archive
 
      --init: initialise the Nix database
      --verify: verify Nix structures
@@ -35,21 +34,10 @@ static ArgType argType = atpUnknown;
      --version: output version information
      --help: display help
 
-   Source selection for operations that work on values:
+   Source selection for --install, --dump:
 
      --file / -f: by file name
      --hash / -h: by hash
-     --name / -n: by symbolic name
-
-   Query suboptions:
-
-     Selection:
-
-     --all / -a: query all stored values, otherwise given values
-
-     Information:
-
-     --info / -i: general value information
 
    Options:
 
@@ -57,8 +45,8 @@ static ArgType argType = atpUnknown;
 */
 
 
-/* Parse the `-f' / `-h' / `-n' flags, i.e., the type of value
-   arguments.  These flags are deleted from the referenced vector. */
+/* Parse the `-f' / `-h' / flags, i.e., the type of arguments.  These
+   flags are deleted from the referenced vector. */
 static void getArgType(Strings & flags)
 {
     for (Strings::iterator it = flags.begin();
@@ -68,14 +56,9 @@ static void getArgType(Strings & flags)
         ArgType tp;
         if (arg == "--hash" || arg == "-h")
             tp = atpHash;
-        else if (arg == "--name" || arg == "-n")
-            tp = atpName;
         else if (arg == "--file" || arg == "-f")
             tp = atpPath;
-        else {
-            it++;
-            continue;
-        }
+        else { it++; continue; }
         if (argType != atpUnknown)
             throw UsageError("only one argument type specified may be specified");
         argType = tp;
@@ -86,7 +69,8 @@ static void getArgType(Strings & flags)
 }
 
 
-/* Install values. */
+/* Realise (or install) paths from the given Nix fstate
+   expressions. */
 static void opInstall(Strings opFlags, Strings opArgs)
 {
     getArgType(opFlags);
@@ -98,8 +82,6 @@ static void opInstall(Strings opFlags, Strings opArgs)
         Hash hash;
         if (argType == atpHash)
             hash = parseHash(*it);
-        else if (argType == atpName)
-            throw Error("not implemented");
         else if (argType == atpPath) {
             string path;
             addToStore(*it, path, hash);
@@ -112,28 +94,16 @@ static void opInstall(Strings opFlags, Strings opArgs)
 
 static void opDelete(Strings opFlags, Strings opArgs)
 {
-#if 0
-    getArgType(opFlags);
     if (!opFlags.empty()) throw UsageError("unknown flag");
 
     for (Strings::iterator it = opArgs.begin();
          it != opArgs.end(); it++)
-    {
-        Hash hash;
-        if (argType == atpHash)
-            hash = parseHash(*it);
-        else if (argType == atpName)
-            throw Error("not implemented");
-        else
-            throw Error("invalid argument type");
-        deleteValue(hash);
-    }
-#endif
+        deleteFromStore(absPath(*it));
 }
 
 
-/* Add values to the Nix values directory and print the hashes of
-   those values. */
+/* Add paths to the Nix values directory and print the hashes of those
+   paths. */
 static void opAdd(Strings opFlags, Strings opArgs)
 {
     getArgType(opFlags);
@@ -162,11 +132,10 @@ struct StdoutSink : DumpSink
 };
 
 
-/* Dump a value as a Nix archive.  The archive is written to standard
+/* Dump a path as a Nix archive.  The archive is written to standard
    output. */
 static void opDump(Strings opFlags, Strings opArgs)
 {
-#if 0
     getArgType(opFlags);
     if (!opFlags.empty()) throw UsageError("unknown flag");
     if (opArgs.size() != 1) throw UsageError("only one argument allowed");
@@ -176,14 +145,11 @@ static void opDump(Strings opFlags, Strings opArgs)
     string path;
     
     if (argType == atpHash)
-        path = queryValuePath(parseHash(arg));
-    else if (argType == atpName)
-        throw Error("not implemented");
+        path = queryPathByHash(parseHash(arg));
     else if (argType == atpPath)
         path = arg;
 
     dumpPath(path, sink);
-#endif
 }