| 123456789101112131415161718192021222324 |
- #!/usr/bin/env python3
- """Standalone launcher for the chattolib protoc plugin.
- Loaded by file path (not via `import chattolib`) so running it never triggers
- ``chattolib/__init__.py`` — which eagerly imports the client and its generated
- stubs. That matters for bootstrap: this plugin *generates* those stubs, so it
- must run before they exist. ``protoc`` finds it on PATH and invokes it with
- ``--chattolib_out``.
- The plugin path is resolved from the launcher's *real* location (this file may
- be reached through a symlink), so it works from any PATH entry.
- """
- import importlib.util
- import os
- import sys
- _here = os.path.dirname(os.path.realpath(__file__)) # .../scripts
- _plugin = os.path.join(_here, os.pardir, "src", "chattolib", "_protoc_plugin.py")
- _plugin = os.path.abspath(_plugin)
- spec = importlib.util.spec_from_file_location("_chattolib_protoc_plugin", _plugin)
- mod = importlib.util.module_from_spec(spec)
- spec.loader.exec_module(mod) # type: ignore[union-attr]
- sys.exit(mod.main())
|