summaryrefslogtreecommitdiff
path: root/Master/tlpkg/doc/JSON-formats.txt
blob: 6f8a8bf8967edf98749643bbffdeeba9c3d07aff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
JSON formats for the various outputs of tlmgr
=============================================

Guaranteed to be present fields are marked with a *

TLPOBJ
------
JSON object with key/values according to the underlying structure with a few
exception (docfiles and docfiledata are merged). Details:

* String type:
  *name, shortdesc, longdesc, *category, catalogue, containerchecksum,
  srccontainerchecksum, doccontainerchecksum
  Example: "name": "12many"

* Number type:
  *revision, runsize, docsize, srcsize, containersize, srccontainersize, doccontainersize
  Example: "revision": 12345

* Boolean type:
  available, installed, relocated
  Example: "relocated": false

* Array type (with the sub-type in parenthesis):
  - of String type: runfiles, srcfiles, executes, depends, postactions
    Example: "runfiles": [ "texmf-dist/...", "texmf-dist/...file2" ]
  - of Object type:
    . docfiles: keys: *file, language, details (all Strings)
      Example:
        [ { "file": "docfile1", "lang": "en" }, { "file": "docfile2", "detail": "readme file" } ]

* Object type:
  - binfiles: keys are architecture names, values are arrays of strings (list of binfiles)
    Example: { "x86_64-linux": [ "binfile1", "binfile2", ... ], "win32": [ "binfile3" ] }
  - binsize: keys are architecture names, values are numbers
    Example: { "x86_64-linux": 1233, "win32": 333 }
  - cataloguedata: keys are topics, version, license, ctan, date, values are all strings
    Example: { "topics": "graphic", "version": "1.23" }


Note: A minimal TLPOBJ might look like
{
  "name": "minimal",
  "category": "Package",
  "revision": 12345
}



TLPOBJINFO
----------
This JSON format is dumped on tlmgr info --data json and is slightly different
format compared to TLPOBJ above:

Removed fields: revision
Added fields:
- Number type: lrev, rrev -- local and remote revision of the package
- Boolean type: available (available at repository), installed


TLPDBSINGLE
-----------
JSON object with the following fields:
* Object type:
  - options: keys are the tlmgr names of %TLConfig::TLPDBOptions, that is
    . Number type: autobackup, fileassocs
    . Boolean type: formats, desktop_integration, generate_updmap, docfiles, 
                    srcfiles, postcode, w32_multi_user
    . String type: backupdir, location, sys_bin, sys_info, sys_man
    . Object type: repository: keys are tags, values are Strings
       if there is only one location then the tag is "main"
    Example:
      "options": {
        "autobackup": 2,
        "formats": false,
        "postcode": true,
        "backupdir": "/backup/tl",
        "repository": {
          "main": "http://mirror.ctan.org/systems/texlive/tlnet",
          "tlcontrib": "..."
        }
      }

  - settings: keys are the names of %TLConfig::TLPDBSettings, that is
    . Boolean type: usertree
    . String type: platform
    . Array type: available_architectures (Strings)

  - configs: keys are the names of %TLConfig::TLPDBConfigs, that is
    . Boolean type: container_split_src_files, container_split_doc_files
    . String type: container_format, minrelease, release

* Array type:
  - tlpkgs: JSON array of TLPOBJs in JSON format


TLPDB
-----
This format is used when dumping tlpdb, local or remote
JSON object with the following fields:
keys are tags, values are tlpdb in TLPDBSINGLE format
Example:
{
  "main": {
    "options": {...},
    "tlpkgs": [...]
  },
  "tlcontrib": {
    "option": {...},
    "tlpkgs": [...]
  }
}


TODO
  UPDATE JSON format