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) | ||
