THANDY CLIENT INTERFACE: thandy-client update [options] [bundlename...] thandy-client json2xml filename Recognized options for thandy-client update are: --repo= Store downloaded, finished information under . Defaults to ~/.thandy/cache --no-download Only decide what to download; don't actually download anything. --loop Do not exit after we have nothing more to download; keep waiting until there's something to do. --no-packagesys Do not ask any underlying package system about what versions of things are installed. Assume we need to fetch all packages not in the cache. --install Try to install packages after downloading them. --socks-port= Run all network operations over the SOCKS4a server at localhost: --debug|--info|--warn Set logging severity. --force-check 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.) --download-method= Choose this download method. Can be used in conjunction with the socks-port option. Supported methods are: - direct: downloads the file directly - bittorrent: use bittorrent for downloading 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. NO_INSTALL PKG="a relative path in the repository" ITEM="another one" As CAN_INSTALL, but Thandy has gotten something that it doesn't have a way to install. Can you help? 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,...]. == CONV.a. CONV.b. CONV.c. CONV.{k1:v1, k2:v2, k3:v3, ...}. == CONV.k1:v1. CONV.k2:v2. CONV.k3:v3. CONV.k:v. == CONV.v. if k is a valid XML tag name made up of nothing but ascii characters. == CONV.k. CONV.v. otherwise