# HG changeset patch # User Gregory Szorc # Date 1427951043 25200 # Node ID 30a737ae9b7d5f7ad2bef526100e9d028538c26b # Parent 0bf54479a9eb600521939f39b31188a52be8f850 json: implement {manifest} template Property naming was borrowed from `hg files -Tjson`. We omit branch because, again, representation of branches in this template is wonky. diff -r 0bf54479a9eb -r 30a737ae9b7d mercurial/templates/json/map --- a/mercurial/templates/json/map Tue Mar 31 22:53:48 2015 -0700 +++ b/mercurial/templates/json/map Wed Apr 01 22:04:03 2015 -0700 @@ -29,7 +29,27 @@ changesetbookmark = '{bookmark|json}' changesettag = '{tag|json}' changesetparent = '{node|json}' -manifest = '"not yet implemented"' +manifest = '\{ + "node": {node|json}, + "abspath": {path|json}, + "directories": [{join(dentries%direntry, ", ")}], + "files": [{join(fentries%fileentry, ", ")}], + "bookmarks": [{join(bookmarks%name, ", ")}], + "tags": [{join(tags%name, ", ")}] + }' +name = '{name|json}' +direntry = '\{ + "abspath": {path|json}, + "basename": {basename|json}, + "emptydirs": {emptydirs|json} + }' +fileentry = '\{ + "abspath": {file|json}, + "basename": {basename|json}, + "date": {date|json}, + "size": {size|json}, + "flags": {permissions|json} + }' tags = '\{ "node": {node|json}, "tags": [{join(entriesnotip%tagentry, ", ")}] diff -r 0bf54479a9eb -r 30a737ae9b7d tests/test-hgweb-json.t --- a/tests/test-hgweb-json.t Tue Mar 31 22:53:48 2015 -0700 +++ b/tests/test-hgweb-json.t Wed Apr 01 22:04:03 2015 -0700 @@ -119,10 +119,46 @@ file/{revision} shows root directory info - $ request json-file/06e557f3edf6 + $ request json-file/cc725e08502a 200 Script output follows - "not yet implemented" + { + "abspath": "/", + "bookmarks": [], + "directories": [ + { + "abspath": "/da", + "basename": "da", + "emptydirs": "" + } + ], + "files": [ + { + "abspath": ".hgtags", + "basename": ".hgtags", + "date": [ + 0.0, + 0 + ], + "flags": "", + "size": 92 + }, + { + "abspath": "foo-new", + "basename": "foo-new", + "date": [ + 0.0, + 0 + ], + "flags": "", + "size": 4 + } + ], + "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7", + "tags": [ + "tip" + ] + } changelog/ shows information about several changesets @@ -522,7 +558,31 @@ $ request json-manifest/06e557f3edf6/ 200 Script output follows - "not yet implemented" + { + "abspath": "/", + "bookmarks": [], + "directories": [ + { + "abspath": "/da", + "basename": "da", + "emptydirs": "" + } + ], + "files": [ + { + "abspath": "foo", + "basename": "foo", + "date": [ + 0.0, + 0 + ], + "flags": "", + "size": 4 + } + ], + "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e", + "tags": [] + } tags/ shows tags info