summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-03-04 14:26:50 -0800
committerShawn O. Pearce <sop@google.com>2009-03-04 14:26:50 -0800
commit43c3d9ea17f1436a6b3b2e7e7827da6f48a21da9 (patch)
tree9bfa77f57095fcd04901ee7783c78d49afdb1e9d
parent4259b8a2ac0dddb54e98e00afc454bf966d4f058 (diff)
downloadgit-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.txt84
-rw-r--r--subcmds/help.py17
-rw-r--r--subcmds/manifest.py44
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
19A manifest XML file (e.g. 'default.xml') roughly conforms to the 19A manifest XML file (e.g. 'default.xml') roughly conforms to the
20following DTD: 20following 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
56A description of the elements and their attributes follows. 56A 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
180For example: 180For 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
193Users may add projects to the local manifest prior to a `repo sync` 191Users may add projects to the local manifest prior to a `repo sync`
194invocation, instructing repo to automatically download and manage 192invocation, 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
16import re
16import sys 17import sys
17from formatter import AbstractFormatter, DumbWriter 18from 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
16import os
17import sys
18
19from command import Command
20
21class Manifest(Command):
22 common = False
23 helpSummary = "Manifest file"
24 helpUsage = """
25%prog
26"""
27 _helpDescription = """
28The 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)