Files
stepanalyser/.venv/lib/python3.12/site-packages/ezdxf/__main__.py
Christian Anetzberger a197de9456 initial
2026-01-22 20:23:51 +01:00

121 lines
3.1 KiB
Python

# Copyright (c) 2021-2023, Manfred Moitzi
# License: MIT License
import sys
import argparse
from pathlib import Path
from ezdxf import options, print_config
from ezdxf import commands
from ezdxf.fonts import fonts
YES_NO = {True: "yes", False: "no"}
options.set(options.CORE, "LOAD_PROXY_GRAPHICS", "true")
def add_common_arguments(parser):
parser.add_argument(
"-V",
"--version",
action="store_true",
help="show version and exit",
)
parser.add_argument(
"-f",
"--fonts",
action="store_true",
help="rebuild system font cache and print all fonts found",
)
parser.add_argument(
"-v",
"--verbose",
action="store_true",
help="give more output",
)
parser.add_argument(
"--config",
action="store",
help="path to a config file",
)
parser.add_argument(
"--log",
action="store",
help='path to a verbose appending log, "stderr" logs to the '
"standard error stream",
)
def print_version(verbose=False):
print_config(verbose=verbose, stream=sys.stdout)
def print_available_fonts(verbose=False):
from ezdxf.fonts import fonts
print("Rebuilding system font cache.")
fonts.build_system_font_cache()
fonts.font_manager.print_available_fonts(verbose)
def setup_log(args):
import logging
from datetime import datetime
from io import StringIO
level = "DEBUG" if args.verbose else "INFO"
if args.log.lower() == "stderr":
logging.basicConfig(stream=sys.stderr, level=level)
else:
logging.basicConfig(filename=args.log, level=level)
print(f'Appending logs to file "{args.log}", logging level: {level}\n')
logger = logging.getLogger("ezdxf")
logger.info("***** Launch time: " + datetime.now().isoformat() + " *****")
if args.verbose:
s = StringIO()
print_config(verbose=True, stream=s)
logger.info("configuration\n" + s.getvalue())
DESCRIPTION = """
Command launcher for the Python package "ezdxf": https://pypi.org/project/ezdxf/
"""
def main():
parser = argparse.ArgumentParser(
"ezdxf",
description=DESCRIPTION,
)
add_common_arguments(parser)
subparsers = parser.add_subparsers(dest="command")
commands.add_parsers(subparsers)
args = parser.parse_args(sys.argv[1:])
help_ = True
if args.config:
config = Path(args.config)
if config.exists():
options.read_file(args.config)
if args.verbose:
print(f'using config file: "{config}"')
else:
print(f'config file "{config}" not found')
if args.log:
setup_log(args)
if args.version:
print_version(verbose=args.verbose)
help_ = False
if args.fonts:
print_available_fonts(args.verbose)
help_ = False
run = commands.get(args.command)
if run:
# For the case automatic font loading is disabled:
fonts.load()
run(args)
elif help_:
parser.print_help()
if __name__ == "__main__":
main()