diff options
author | Shawn O. Pearce <sop@google.com> | 2009-03-04 14:26:50 -0800 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-03-04 14:26:50 -0800 |
commit | 43c3d9ea17f1436a6b3b2e7e7827da6f48a21da9 (patch) | |
tree | 9bfa77f57095fcd04901ee7783c78d49afdb1e9d | |
parent | 4259b8a2ac0dddb54e98e00afc454bf966d4f058 (diff) | |
download | git-repo-43c3d9ea17f1436a6b3b2e7e7827da6f48a21da9.tar.gz |
Add a 'repo manifest' command whose help is the manifest file format
This should make it easier for users to discover the file format
on their own, and read about it.
Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r-- | docs/manifest-format.txt | 84 | ||||
-rw-r--r-- | subcmds/help.py | 17 | ||||
-rw-r--r-- | subcmds/manifest.py | 44 |
3 files changed, 99 insertions, 46 deletions
diff --git a/docs/manifest-format.txt b/docs/manifest-format.txt index 562e66e2..89257b8b 100644 --- a/docs/manifest-format.txt +++ b/docs/manifest-format.txt | |||
@@ -19,39 +19,39 @@ XML File Format | |||
19 | A manifest XML file (e.g. 'default.xml') roughly conforms to the | 19 | A manifest XML file (e.g. 'default.xml') roughly conforms to the |
20 | following DTD: | 20 | following DTD: |
21 | 21 | ||
22 | <!DOCTYPE manifest [ | 22 | <!DOCTYPE manifest [ |
23 | <!ELEMENT manifest (remote*, | 23 | <!ELEMENT manifest (remote*, |
24 | default?, | 24 | default?, |
25 | remove-project*, | 25 | remove-project*, |
26 | project*, | 26 | project*, |
27 | add-remote*)> | 27 | add-remote*)> |
28 | 28 | ||
29 | <!ELEMENT remote (EMPTY)> | 29 | <!ELEMENT remote (EMPTY)> |
30 | <!ATTLIST remote name ID #REQUIRED> | 30 | <!ATTLIST remote name ID #REQUIRED> |
31 | <!ATTLIST remote fetch CDATA #REQUIRED> | 31 | <!ATTLIST remote fetch CDATA #REQUIRED> |
32 | <!ATTLIST remote review CDATA #IMPLIED> | 32 | <!ATTLIST remote review CDATA #IMPLIED> |
33 | <!ATTLIST remote project-name CDATA #IMPLIED> | 33 | <!ATTLIST remote project-name CDATA #IMPLIED> |
34 | 34 | ||
35 | <!ELEMENT default (EMPTY)> | 35 | <!ELEMENT default (EMPTY)> |
36 | <!ATTLIST default remote IDREF #IMPLIED> | 36 | <!ATTLIST default remote IDREF #IMPLIED> |
37 | <!ATTLIST default revision CDATA #IMPLIED> | 37 | <!ATTLIST default revision CDATA #IMPLIED> |
38 | 38 | ||
39 | <!ELEMENT project (remote*)> | 39 | <!ELEMENT project (remote*)> |
40 | <!ATTLIST project name CDATA #REQUIRED> | 40 | <!ATTLIST project name CDATA #REQUIRED> |
41 | <!ATTLIST project path CDATA #IMPLIED> | 41 | <!ATTLIST project path CDATA #IMPLIED> |
42 | <!ATTLIST project remote IDREF #IMPLIED> | 42 | <!ATTLIST project remote IDREF #IMPLIED> |
43 | <!ATTLIST project revision CDATA #IMPLIED> | 43 | <!ATTLIST project revision CDATA #IMPLIED> |
44 | 44 | ||
45 | <!ELEMENT add-remote (EMPTY)> | 45 | <!ELEMENT add-remote (EMPTY)> |
46 | <!ATTLIST add-remote to-project ID #REQUIRED> | 46 | <!ATTLIST add-remote to-project ID #REQUIRED> |
47 | <!ATTLIST add-remote name ID #REQUIRED> | 47 | <!ATTLIST add-remote name ID #REQUIRED> |
48 | <!ATTLIST add-remote fetch CDATA #REQUIRED> | 48 | <!ATTLIST add-remote fetch CDATA #REQUIRED> |
49 | <!ATTLIST add-remote review CDATA #IMPLIED> | 49 | <!ATTLIST add-remote review CDATA #IMPLIED> |
50 | <!ATTLIST add-remote project-name CDATA #IMPLIED> | 50 | <!ATTLIST add-remote project-name CDATA #IMPLIED> |
51 | 51 | ||
52 | <!ELEMENT remove-project (EMPTY)> | 52 | <!ELEMENT remove-project (EMPTY)> |
53 | <!ATTLIST remove-project name CDATA #REQUIRED> | 53 | <!ATTLIST remove-project name CDATA #REQUIRED> |
54 | ]> | 54 | ]> |
55 | 55 | ||
56 | A description of the elements and their attributes follows. | 56 | A description of the elements and their attributes follows. |
57 | 57 | ||
@@ -179,16 +179,14 @@ manifest, stored in `$TOP_DIR/.repo/local_manifest.xml`. | |||
179 | 179 | ||
180 | For example: | 180 | For example: |
181 | 181 | ||
182 | ---- | 182 | $ cat .repo/local_manifest.xml |
183 | $ cat .repo/local_manifest.xml | 183 | <?xml version="1.0" encoding="UTF-8"?> |
184 | <?xml version="1.0" encoding="UTF-8"?> | 184 | <manifest> |
185 | <manifest> | 185 | <project path="manifest" |
186 | <project path="manifest" | 186 | name="tools/manifest" /> |
187 | name="tools/manifest" /> | 187 | <project path="platform-manifest" |
188 | <project path="platform-manifest" | 188 | name="platform/manifest" /> |
189 | name="platform/manifest" /> | 189 | </manifest> |
190 | </manifest> | ||
191 | ---- | ||
192 | 190 | ||
193 | Users may add projects to the local manifest prior to a `repo sync` | 191 | Users may add projects to the local manifest prior to a `repo sync` |
194 | invocation, instructing repo to automatically download and manage | 192 | invocation, instructing repo to automatically download and manage |
diff --git a/subcmds/help.py b/subcmds/help.py index a68e37d2..a1425e74 100644 --- a/subcmds/help.py +++ b/subcmds/help.py | |||
@@ -13,6 +13,7 @@ | |||
13 | # See the License for the specific language governing permissions and | 13 | # See the License for the specific language governing permissions and |
14 | # limitations under the License. | 14 | # limitations under the License. |
15 | 15 | ||
16 | import re | ||
16 | import sys | 17 | import sys |
17 | from formatter import AbstractFormatter, DumbWriter | 18 | from formatter import AbstractFormatter, DumbWriter |
18 | 19 | ||
@@ -106,14 +107,24 @@ See 'repo help --all' for a complete list of recognized commands. | |||
106 | body = body.strip() | 107 | body = body.strip() |
107 | body = body.replace('%prog', me) | 108 | body = body.replace('%prog', me) |
108 | 109 | ||
110 | asciidoc_hdr = re.compile(r'^\n?([^\n]{1,})\n(={2,}|-{2,})$') | ||
109 | for para in body.split("\n\n"): | 111 | for para in body.split("\n\n"): |
110 | if para.startswith(' '): | 112 | if para.startswith(' '): |
111 | self.write('%s', para) | 113 | self.write('%s', para) |
112 | self.nl() | 114 | self.nl() |
113 | self.nl() | 115 | self.nl() |
114 | else: | 116 | continue |
115 | self.wrap.add_flowing_data(para) | 117 | |
116 | self.wrap.end_paragraph(1) | 118 | m = asciidoc_hdr.match(para) |
119 | if m: | ||
120 | self.heading('%s', m.group(1)) | ||
121 | self.nl() | ||
122 | self.heading('%s', ''.ljust(len(m.group(1)),'-')) | ||
123 | self.nl() | ||
124 | continue | ||
125 | |||
126 | self.wrap.add_flowing_data(para) | ||
127 | self.wrap.end_paragraph(1) | ||
117 | self.wrap.end_paragraph(0) | 128 | self.wrap.end_paragraph(0) |
118 | 129 | ||
119 | out = _Out(self.manifest.globalConfig) | 130 | out = _Out(self.manifest.globalConfig) |
diff --git a/subcmds/manifest.py b/subcmds/manifest.py new file mode 100644 index 00000000..69906faa --- /dev/null +++ b/subcmds/manifest.py | |||
@@ -0,0 +1,44 @@ | |||
1 | # | ||
2 | # Copyright (C) 2009 The Android Open Source Project | ||
3 | # | ||
4 | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | # you may not use this file except in compliance with the License. | ||
6 | # You may obtain a copy of the License at | ||
7 | # | ||
8 | # http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | # | ||
10 | # Unless required by applicable law or agreed to in writing, software | ||
11 | # distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | # See the License for the specific language governing permissions and | ||
14 | # limitations under the License. | ||
15 | |||
16 | import os | ||
17 | import sys | ||
18 | |||
19 | from command import Command | ||
20 | |||
21 | class Manifest(Command): | ||
22 | common = False | ||
23 | helpSummary = "Manifest file" | ||
24 | helpUsage = """ | ||
25 | %prog | ||
26 | """ | ||
27 | _helpDescription = """ | ||
28 | The repo manifest file describes the projects mapped into the client. | ||
29 | """ | ||
30 | |||
31 | @property | ||
32 | def helpDescription(self): | ||
33 | help = self._helpDescription + '\n' | ||
34 | r = os.path.dirname(__file__) | ||
35 | r = os.path.dirname(r) | ||
36 | fd = open(os.path.join(r, 'docs', 'manifest-format.txt')) | ||
37 | for line in fd: | ||
38 | help += line | ||
39 | fd.close() | ||
40 | return help | ||
41 | |||
42 | def Execute(self, opt, args): | ||
43 | print >>sys.stderr, 'error: see repo help manifest' | ||
44 | sys.exit(1) | ||