aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@outlook.com>2017-02-15 09:41:41 +0800
committerAaron LI <aaronly.me@outlook.com>2017-02-17 01:16:46 +0800
commit5ff4ae0264ec7da2653f7ca375c3ec9521520b93 (patch)
tree656b60d4f117e42fabd2870e1914149fff4e928d
parentdcc755d679a70fb2dfd16140cd35961109a127fc (diff)
downloadchandra-acis-analysis-5ff4ae0264ec7da2653f7ca375c3ec9521520b93.tar.bz2
manifest.py: Add setpath() method and setpath sub-command
-rwxr-xr-xscripts/manifest.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/manifest.py b/scripts/manifest.py
index 37bcda4..bf05dac 100755
--- a/scripts/manifest.py
+++ b/scripts/manifest.py
@@ -126,6 +126,22 @@ class Manifest:
self.manifest[key] = self.parse_value(value)
self.save()
+ def setpath(self, key, path):
+ """
+ Get the relative path of the given file w.r.t. this manifest file,
+ and set it to be the value of the specified item.
+ (Will add a new item or update an existing item.)
+ """
+ dirname = os.path.dirname(self.filepath)
+ if isinstance(path, list):
+ abspath = [os.path.abspath(p) for p in path]
+ relpath = [os.path.relpath(p, start=dirname) for p in abspath]
+ else:
+ abspath = os.path.abspath(path)
+ relpath = os.path.relpath(abspath, start=dirname)
+ self.manifest[key] = relpath
+ self.save()
+
def add(self, key, value):
"""
Add the specified new item in the manifest.
@@ -283,6 +299,17 @@ def cmd_set(args, manifest):
print("Set item '{0}': {1}".format(args.key, manifest.get(args.key)))
+def cmd_setpath(args, manifest):
+ """
+ Sub-command "setpath": Set the specified file item in the manifest
+ to be the relative path of the given file w.r.t. the manifest file.
+ """
+ manifest.setpath(args.key, args.value)
+ if not args.brief:
+ print("Set file item '{0}': {1}".format(args.key,
+ manifest.get(args.key)))
+
+
def cmd_add(args, manifest):
"""
Sub-command "add": Add a new item to the manifest.
@@ -349,6 +376,13 @@ def main(description="Manage the observation manifest (YAML format)",
parser_set.add_argument("value", nargs="+",
help="value of the item")
parser_set.set_defaults(func=cmd_set)
+ # sub-command: setpath
+ parser_setpath = subparsers.add_parser(
+ "setpath", help="Set a file item using relative path of given files")
+ parser_setpath.add_argument("key", help="key of the file item")
+ parser_setpath.add_argument("value", nargs="+",
+ help="paths to the files")
+ parser_setpath.set_defaults(func=cmd_setpath)
# sub-command: add
parser_add = subparsers.add_parser(
"add", help="Add a new item to manifest")