| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
- """A license reporting CLI
- Mostly ready-to-use, the downstream must provide the location of the application's
- static resources. Licenses from an app's federated_extensions will also be discovered
- as configured in `labextensions_path` and `extra_labextensions_path`.
- from traitlets import default
- from jupyterlab_server import LicensesApp
- class MyLicensesApp(LicensesApp):
- version = "0.1.0"
- @default("static_dir")
- def _default_static_dir(self):
- return "my-static/"
- class MyApp(JupyterApp, LabConfig):
- ...
- subcommands = dict(
- licenses=(MyLicensesApp, MyLicensesApp.description.splitlines()[0])
- )
- """
- from typing import Any
- from jupyter_core.application import JupyterApp, base_aliases, base_flags
- from traitlets import Bool, Enum, Instance, Unicode
- from ._version import __version__
- from .config import LabConfig
- from .licenses_handler import LicensesManager
- class LicensesApp(JupyterApp, LabConfig):
- """A license management app."""
- version = __version__
- description = """
- Report frontend licenses
- """
- static_dir = Unicode("", config=True, help="The static directory from which to show licenses")
- full_text = Bool(False, config=True, help="Also print out full license text (if available)")
- report_format = Enum(
- ["markdown", "json", "csv"], "markdown", config=True, help="Reporter format"
- )
- bundles_pattern = Unicode(".*", config=True, help="A regular expression of bundles to print")
- licenses_manager = Instance(LicensesManager)
- aliases = {
- **base_aliases,
- "bundles": "LicensesApp.bundles_pattern",
- "report-format": "LicensesApp.report_format",
- }
- flags = {
- **base_flags,
- "full-text": (
- {"LicensesApp": {"full_text": True}},
- "Print out full license text (if available)",
- ),
- "json": (
- {"LicensesApp": {"report_format": "json"}},
- "Print out report as JSON (implies --full-text)",
- ),
- "csv": (
- {"LicensesApp": {"report_format": "csv"}},
- "Print out report as CSV (implies --full-text)",
- ),
- }
- def initialize(self, *args: Any, **kwargs: Any) -> None:
- """Initialize the app."""
- super().initialize(*args, **kwargs)
- self.init_licenses_manager()
- def init_licenses_manager(self) -> None:
- """Initialize the license manager."""
- self.licenses_manager = LicensesManager(
- parent=self,
- )
- def start(self) -> None:
- """Start the app."""
- report = self.licenses_manager.report(
- report_format=self.report_format,
- full_text=self.full_text,
- bundles_pattern=self.bundles_pattern,
- )[0]
- print(report)
- self.exit(0)
|