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
|