[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r17385: {updater} Document Thandy controller interface better. (in updater/trunk: doc lib/thandy)



Author: nickm
Date: 2008-11-24 15:39:52 -0500 (Mon, 24 Nov 2008)
New Revision: 17385

Modified:
   updater/trunk/doc/interface.txt
   updater/trunk/lib/thandy/ClientCLI.py
Log:
Document Thandy controller interface better.

Modified: updater/trunk/doc/interface.txt
===================================================================
--- updater/trunk/doc/interface.txt	2008-11-24 16:19:25 UTC (rev 17384)
+++ updater/trunk/doc/interface.txt	2008-11-24 20:39:52 UTC (rev 17385)
@@ -1,14 +1,13 @@
 
 
+THANDY CLIENT INTERFACE:
 
+   thandy-client update [options] [bundlename...]
 
+   thandy-client json2xml filename
 
-Thandy client interface:
+Recognized options for thandy-client update are:
 
-   thandy-client update [options] [bundlename...]
-
-Recognized options are:
-
    --repo=<dir>    Store downloaded, finished information under <dir>.
                    Defaults to ~/.thandy/cache
 
@@ -36,10 +35,69 @@
                    Download a fresh version of the timestamp file, whether
                    we need it or not.
 
+   --controller-log-format
+                   Output log messages in a format designed to be easy
+                   for controllers to read.  (See below.)
 
-02:55 < nickm> Right now, for a quick-and-dirty thing, vidalia can notice the 
-               specific form of the "Ready to install files:" message.  It can 
-               turn into something more formal later.
-02:56 < nickm> The only 'suggestions' thandy-client understands now are ones 
-               from command-line options, all of which are documented.
-02:56 < armadev> ok
+
+THE CONTROLLER LOG FORMAT:
+
+  All lines are of the form:
+    Keyword SP (Keyword=QuotedString SP)* NL
+
+    Keyword=[A-Za-z0-9_]+
+    QuotedString=DQ Quoted* DQ
+    Quoted =   (Any character except for \, ", or newline)
+             | (\\)
+             | (\")
+             | (\n)
+
+    SP = A single space character.
+    NL = A newline character
+    DQ = A double-quote character.
+
+  Current message types are:
+
+    INFO, WARN, DEBUG
+       These correspond to regular user-visible log messages.
+
+    WANTFILE FILENAME="a relative path in the repository"
+       Thandy wants to download the listed file from some mirror.
+
+    CAN_INSTALL PKG="a relative path in the repository" ITEM="another one"
+       Thandy has enough information to install something.  The 'item' is
+       an installable item (exe, rpm, msi, etc); the PKG is the json package
+       descriptor it belongs to.
+
+THANDY'S JSON2XML FORMAT:
+
+  Some people use libraries whose XML parsers are way better than their JSON
+  parsers, so Thandy includes a quick-and-dirty json2xml converter.  It is a
+  one-way converter that's good enough for Thandy documents, but little else.
+
+  Here's the specification for it.  CONV.x. indicates the conversion of a
+  JSON object x into XML.
+
+     ESC(x) == x, with the characters &, <, and > escaped.
+
+     CONV."x". == ESC(x) if x is a string.
+     CONV.x. == x if x is an integer, a boolean, or none.
+     CONV.[a,b,c,...]. ==
+            <list><item>CONV.a.</item>
+                  <item>CONV.b.</item>
+                  <item>CONV.c.</item>
+            </list>
+
+     CONV.{k1:v1, k2:v2, k3:v3, ...}. ==
+            <dict>CONV.k1:v1.
+                  CONV.k2:v2.
+                  CONV.k3:v3.</dict>
+
+     CONV.k:v. == <k>CONV.v.</k>   if k is a valid XML tag name made up of
+                                   nothing but ascii characters.
+
+               == <dict-entry><key>CONV.k.</key>
+                              <val>CONV.v.</val>
+                  </dict-entry>                     otherwise
+
+

Modified: updater/trunk/lib/thandy/ClientCLI.py
===================================================================
--- updater/trunk/lib/thandy/ClientCLI.py	2008-11-24 16:19:25 UTC (rev 17384)
+++ updater/trunk/lib/thandy/ClientCLI.py	2008-11-24 20:39:52 UTC (rev 17385)
@@ -224,6 +224,7 @@
     print "  update [--repo=repository] [--no-download] [--loop]"
     print "         [--no-packagesys] [--install] [--socks-port=port]"
     print "         [--debug|--info|--warn] [--force-check]"
+    print "         [--controller-log-format]"
     print "  json2xml file"
     sys.exit(1)