# along with this program. If not, see <http://www.gnu.org/licenses/>.
from argparse import ArgumentParser
-import sys
+import os
import logging
import StringIO
common.setup_global_opts(parser)
parser.add_argument("-l", "--list", action="store_true", default=False,
help="List files that would be reformatted")
- parser.add_argument("-t", "--to", default='txt',
+ parser.add_argument("-t", "--to", default=None,
help="Rewrite to a specific format")
parser.add_argument("appid", nargs='*', help="app-id in the form APPID")
options = parser.parse_args()
allapps = metadata.read_metadata(xref=True)
apps = common.read_app_args(options.appid, allapps, False)
- if options.list and options.to:
+ if options.list and options.to is not None:
parser.error("Cannot use --list and --to at the same time")
+ supported = ['txt', 'yaml']
+
+ if options.to is not None and options.to not in supported:
+ parser.error("Must give a valid format to --to")
+
for appid, app in apps.iteritems():
metadatapath = app['metadatapath']
base, ext = common.get_extension(metadatapath)
- if not options.to and ext not in ['txt', 'yaml']:
+ if not options.to and ext not in supported:
logging.info("Ignoring %s file at '%s'" % (ext, metadatapath))
continue
- logging.debug("Rewriting " + metadatapath)
+
+ to_ext = ext
+ if options.to is not None:
+ to_ext = options.to
+
if options.list:
s = StringIO.StringIO()
# TODO: currently reading entire file again, should reuse first
print(metadatapath)
continue
- if options.to == 'txt':
- with open(base+'.txt', 'w') as f:
- metadata.write_txt_metadata(f, app)
- elif options.to == 'yaml':
- # with open(base+'.yaml', 'w') as f:
- # metadata.write_yaml_metadata(f, app)
- metadata.write_yaml_metadata(sys.stdout, app)
- break
+ with open(base + '.' + to_ext, 'w') as f:
+ metadata.write_metadata(to_ext, f, app)
+
+ if ext != to_ext:
+ os.remove(metadatapath)
logging.debug("Finished.")