import sys
import argparse
import keyword
-from asn1ate import parser
+from asn1ate import parser, __version__
from asn1ate.support import pygen
from asn1ate.sema import *
# Simplistic command-line driver
def main():
arg_parser = argparse.ArgumentParser(description='Generate Python classes from an ASN.1 definition file. Output to stdout by default.')
- arg_parser.add_argument('file', metavar='file', type=argparse.FileType('r'),
- help='the ASN.1 file to process')
+ arg_parser.add_argument('file', help='the ASN.1 file to process')
arg_parser.add_argument('--split', action='store_true',
help='output multiple modules to separate files')
args = arg_parser.parse_args()
- asn1def = args.file.read()
+
+ with open(args.file, 'r') as input:
+ asn1def = input.read()
parse_tree = parser.parse_asn1(asn1def)
try:
if args.split:
output_file = open(_sanitize_module(module.name) + '.py', 'w')
- print(pygen.auto_generated_header(), file=output_file)
+ print(pygen.auto_generated_header(args.file, __version__),
+ file=output_file)
generate_pyasn1(module, output_file, modules)
finally:
if output_file != sys.stdout:
# Python 3\r
from io import StringIO\r
\r
+import os.path\r
from datetime import datetime\r
\r
\r
-def auto_generated_header(source_filename=None):\r
- prefix = '# Auto-generated'\r
- if source_filename:\r
- prefix += ' from %s' % source_filename\r
+def auto_generated_header(source_filename, version):\r
+ lastmod = datetime.fromtimestamp(os.path.getmtime(source_filename))\r
+ source_filename = os.path.basename(source_filename)\r
\r
- return '%s by asn1ate on %s' % (prefix, datetime.now())\r
+ lines = []\r
+ lines.append('# Auto-generated by asn1ate v.%s from %s' %\r
+ (version, source_filename))\r
+ lines.append('# (last modified on %s)' % lastmod)\r
+ lines.append('')\r
+ return os.linesep.join(lines)\r
\r
\r
class NullBackend(object):\r
import sys
import argparse # Requires Python 2.7 or later, but that's OK for a test driver
-from asn1ate import parser, sema, pyasn1gen
+from asn1ate import parser, sema, pyasn1gen, __version__
from asn1ate.support import pygen
def parse_args():
if args.gen:
for module in modules:
- print(pygen.auto_generated_header(args.file))
+ print(pygen.auto_generated_header(args.file, __version__))
pyasn1gen.generate_pyasn1(module, sys.stdout, modules)
return 0