Coverage for lib/lottie/utils/script.py: 0%
39 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-20 16:17 +0100
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-20 16:17 +0100
1import os
2import sys
3import argparse
4import inspect
5from ..exporters import exporters
6from .stripper import float_strip
9def _get_caller():
10 return inspect.getmodule(inspect.currentframe().f_back.f_back)
13def _get_parser(caller, basename, path, formats, verbosity):
14 if basename is None:
15 basename = os.path.splitext(os.path.basename(caller.__file__))[0]
17 parser = argparse.ArgumentParser(
18 conflict_handler='resolve'
19 )
21 parser.add_argument(
22 "--name",
23 "-n",
24 default=basename,
25 help="Output basename",
26 )
27 parser.add_argument(
28 "--path",
29 default=path,
30 help="Output path",
31 )
32 parser.add_argument(
33 "--formats", "-f",
34 nargs="+",
35 choices=list(sum((e.extensions for e in exporters), [])),
36 default=formats,
37 help="Formats to render",
38 metavar="format"
39 )
40 parser.add_argument(
41 "--verbosity",
42 type=int,
43 default=int(verbosity)
44 )
45 from .. import __version__
46 parser.add_argument(
47 "--version", "-v",
48 action="version",
49 version="%(prog)s - python-lottie script " + __version__
50 )
51 exporters.set_options(parser)
53 return parser
56def get_parser(basename=None, path="/tmp", formats=["html"], verbosity=1):
57 caller = _get_caller()
58 return _get_parser(caller, basename, path, formats, verbosity)
61def run(animation, ns):
62 for fmt in ns.formats:
63 if ns.path == "" and ns.name == "-":
64 outfile = sys.stdout
65 else:
66 absname = os.path.abspath(os.path.join(ns.path, ns.name + "." + fmt))
67 if ns.verbosity:
68 sys.stderr.write("file://%s\n" % absname)
69 outfile = absname
70 exporter = exporters.get_from_extension(fmt)
71 exporter.process(animation, outfile, **exporter.argparse_options(ns))
74def script_main(animation, basename=None, path="/tmp", formats=["html"], verbosity=1, strip=float_strip):
75 """
76 Sets up a script to output an animation into various formats
77 """
78 caller = _get_caller()
79 if caller and caller.__name__ == "__main__":
80 parser = _get_parser(caller, basename, path, formats, verbosity)
81 strip(animation)
82 run(animation, parser.parse_args())