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>
This commit is contained in:
Shawn O. Pearce 2009-03-04 14:26:50 -08:00
parent 4259b8a2ac
commit 43c3d9ea17
3 changed files with 99 additions and 46 deletions

View File

@ -19,7 +19,7 @@ XML File Format
A manifest XML file (e.g. 'default.xml') roughly conforms to the
following DTD:
<!DOCTYPE manifest [
<!DOCTYPE manifest [
<!ELEMENT manifest (remote*,
default?,
remove-project*,
@ -51,7 +51,7 @@ following DTD:
<!ELEMENT remove-project (EMPTY)>
<!ATTLIST remove-project name CDATA #REQUIRED>
]>
]>
A description of the elements and their attributes follows.
@ -179,7 +179,6 @@ manifest, stored in `$TOP_DIR/.repo/local_manifest.xml`.
For example:
----
$ cat .repo/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
@ -188,7 +187,6 @@ For example:
<project path="platform-manifest"
name="platform/manifest" />
</manifest>
----
Users may add projects to the local manifest prior to a `repo sync`
invocation, instructing repo to automatically download and manage

View File

@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import re
import sys
from formatter import AbstractFormatter, DumbWriter
@ -106,12 +107,22 @@ See 'repo help --all' for a complete list of recognized commands.
body = body.strip()
body = body.replace('%prog', me)
asciidoc_hdr = re.compile(r'^\n?([^\n]{1,})\n(={2,}|-{2,})$')
for para in body.split("\n\n"):
if para.startswith(' '):
self.write('%s', para)
self.nl()
self.nl()
else:
continue
m = asciidoc_hdr.match(para)
if m:
self.heading('%s', m.group(1))
self.nl()
self.heading('%s', ''.ljust(len(m.group(1)),'-'))
self.nl()
continue
self.wrap.add_flowing_data(para)
self.wrap.end_paragraph(1)
self.wrap.end_paragraph(0)

44
subcmds/manifest.py Normal file
View File

@ -0,0 +1,44 @@
#
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
from command import Command
class Manifest(Command):
common = False
helpSummary = "Manifest file"
helpUsage = """
%prog
"""
_helpDescription = """
The repo manifest file describes the projects mapped into the client.
"""
@property
def helpDescription(self):
help = self._helpDescription + '\n'
r = os.path.dirname(__file__)
r = os.path.dirname(r)
fd = open(os.path.join(r, 'docs', 'manifest-format.txt'))
for line in fd:
help += line
fd.close()
return help
def Execute(self, opt, args):
print >>sys.stderr, 'error: see repo help manifest'
sys.exit(1)