cgse 2025.0.6__tar.gz → 2025.0.8.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/PKG-INFO +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/getting_started.md +25 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/pyproject.toml +2 -2
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/services.py +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/setup.py +2 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/pyproject.toml +3 -2
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/confman_cs.py +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/storage_cs.py +1 -4
- cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/_start.py +41 -0
- cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/_status.py +81 -0
- cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/_stop.py +41 -0
- cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/cgse.py +98 -0
- cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/services.py +49 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/cgse-tools/pyproject.toml +8 -8
- cgse-2025.0.8.dev1/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +106 -0
- cgse-2025.0.8.dev1/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +28 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-fits/pyproject.toml +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- cgse-2025.0.8.dev1/projects/plato/plato-spw/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/pyproject.toml +1 -1
- cgse-2025.0.6/libs/cgse-core/src/scripts/cgse.py +0 -179
- cgse-2025.0.6/projects/generic/cgse-tools/src/scripts/cgse_plugins.py +0 -9
- cgse-2025.0.6/projects/generic/cgse-tools/src/scripts/cgse_service_plugins.py +0 -10
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/.gitignore +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/NOTES.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/TODO.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/bump.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/conftest.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/custom_theme/main.html +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/dev_guide/coding_style.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/dev_guide/docs.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/dev_guide/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/dev_guide/installation.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/dev_guide/uv.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/help.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-core/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/libs/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/package_list.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/projects/cgse-tools.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/projects/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/stylesheets/custom.css +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/tutorial.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/docs/user_guide/index.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/bits.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/calibration.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/command.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/config.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/control.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/decorators.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/device.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/env.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/exceptions.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/hk.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/metrics.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/mixin.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/monitoring.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/plugin.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/process.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/protocol.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/proxy.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/resource.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/services.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/settings.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/state.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/system.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/version.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/dummy.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_bits.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_command.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_control.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_decorators.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_settings.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_setup.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_system.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/.envrc.disabled +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/fixtures/services.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/test_confman_setups.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/test_logger.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/mkdocs.yml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/cgse-tools/README.md +0 -0
- /cgse-2025.0.6/projects/plato/plato-hdf5/README.md → /cgse-2025.0.8.dev1/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/scripts/cgse_service_plugins.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-fits/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-2025.0.6/projects/plato/plato-spw → cgse-2025.0.8.dev1/projects/plato/plato-hdf5}/README.md +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-2025.0.6 → cgse-2025.0.8.dev1}/ruff.toml +0 -0
|
@@ -89,3 +89,28 @@ use the '--full' flag to get a more detailed report, '--doc' for help on the var
|
|
|
89
89
|
|
|
90
90
|
The folders that do not exist (and are not None) can be created by adding the option `--mkdir` to the above
|
|
91
91
|
command.
|
|
92
|
+
|
|
93
|
+
## Check your Settings
|
|
94
|
+
|
|
95
|
+
Settings contains the static configuration of your system, test setup, equipment, including the System Under Test
|
|
96
|
+
(SUT). You can test your settings with the command below. Let's first also set the `ARIEL_LOCALSETTINGS` environment
|
|
97
|
+
variables:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
$ export ARIEL_LOCAL_SETTINGS=~/cgse/local_settings_ariel_vacuum_lab.yaml
|
|
101
|
+
$ py -m egse.settings
|
|
102
|
+
Settings
|
|
103
|
+
├── PACKAGES
|
|
104
|
+
│ └── CGSE_COMMON: Common classes, functions, decorators, etc. for the CGSE
|
|
105
|
+
├── SITE
|
|
106
|
+
│ ├── ID: VACUUM_LAB
|
|
107
|
+
│ ├── SSH_SERVER: localhost
|
|
108
|
+
│ └── SSH_PORT: 22
|
|
109
|
+
└── PROCESS
|
|
110
|
+
└── METRICS_INTERVAL: 10
|
|
111
|
+
Memoized locations:
|
|
112
|
+
['/Users/rik/tmp/gettings-started/venv/lib/python3.9/site-packages/cgse_common/settings.yaml',
|
|
113
|
+
'/Users/rik/cgse/local_settings_ariel_vacuum_lab.yaml']
|
|
114
|
+
```
|
|
115
|
+
These Settings will grow when you add more packages to your installation or when you define settings yourself in the
|
|
116
|
+
local settings file.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cgse-common"
|
|
3
|
-
version = "2025.0.
|
|
3
|
+
version = "2025.0.8-dev.1"
|
|
4
4
|
description = "Software framework to support hardware testing"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "IVS KU Leuven"}
|
|
@@ -63,7 +63,7 @@ exclude = [
|
|
|
63
63
|
]
|
|
64
64
|
|
|
65
65
|
[tool.hatch.build.targets.wheel]
|
|
66
|
-
packages = ["src/egse", "src/
|
|
66
|
+
packages = ["src/egse", "src/cgse_common"]
|
|
67
67
|
|
|
68
68
|
[tool.ruff]
|
|
69
69
|
line-length = 120
|
|
@@ -25,7 +25,7 @@ LOGGER = logging.getLogger(__name__)
|
|
|
25
25
|
|
|
26
26
|
HERE = Path(__file__).parent
|
|
27
27
|
|
|
28
|
-
SERVICE_SETTINGS = Settings.load(
|
|
28
|
+
SERVICE_SETTINGS = Settings.load(location=HERE, filename="services.yaml")
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class ServiceCommand(ClientServerCommand):
|
|
@@ -266,7 +266,8 @@ def _get_attribute(self, name, default):
|
|
|
266
266
|
def _parse_filename_for_setup_id(filename: str):
|
|
267
267
|
"""Returns the setup_id from the filename, or None when no match was found."""
|
|
268
268
|
|
|
269
|
-
match = re.search(r"SETUP_([^_]+)_(\d+)", filename)
|
|
269
|
+
# match = re.search(r"SETUP_([^_]+)_(\d+)", filename)
|
|
270
|
+
match = re.search(r"SETUP_(\w+)_([\d]{5})_([\d]{6})_([\d]{6})\.yaml", filename)
|
|
270
271
|
|
|
271
272
|
# TypeError when match is None
|
|
272
273
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cgse-core"
|
|
3
|
-
version = "2025.0.
|
|
3
|
+
version = "2025.0.8-dev.1"
|
|
4
4
|
description = "Core services for the CGSE framework"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "IVS KU Leuven"}
|
|
@@ -26,6 +26,7 @@ dependencies = [
|
|
|
26
26
|
"prometheus-client>=0.21.1",
|
|
27
27
|
"pyzmq == 23.2.1",
|
|
28
28
|
"rich>=13.9.4",
|
|
29
|
+
"typer>=0.15.1",
|
|
29
30
|
]
|
|
30
31
|
|
|
31
32
|
[project.scripts]
|
|
@@ -34,7 +35,7 @@ sm_cs = 'egse.storage.storage_cs:cli'
|
|
|
34
35
|
cm_cs = 'egse.confman.confman_cs:cli'
|
|
35
36
|
pm_cs = 'egse.procman.procman_cs:cli'
|
|
36
37
|
|
|
37
|
-
cgse = 'scripts.cgse:
|
|
38
|
+
cgse = 'scripts.cgse:app'
|
|
38
39
|
|
|
39
40
|
[project.entry-points."cgse.version"]
|
|
40
41
|
cgse-core = 'egse'
|
|
@@ -17,7 +17,6 @@ from apscheduler.schedulers.background import BackgroundScheduler
|
|
|
17
17
|
from prometheus_client import start_http_server
|
|
18
18
|
from pytz import utc
|
|
19
19
|
|
|
20
|
-
from egse.bits import humanize_bytes
|
|
21
20
|
from egse.control import ControlServer
|
|
22
21
|
from egse.env import get_data_storage_location
|
|
23
22
|
from egse.env import get_site_id
|
|
@@ -26,8 +25,6 @@ from egse.settings import Settings
|
|
|
26
25
|
from egse.storage import StorageProtocol
|
|
27
26
|
from egse.storage import StorageProxy
|
|
28
27
|
from egse.storage import cycle_daily_files
|
|
29
|
-
from egse.storage import is_storage_manager_active
|
|
30
|
-
from egse.system import replace_environment_variable
|
|
31
28
|
|
|
32
29
|
# Use explicit name here otherwise the logger will probably be called __main__
|
|
33
30
|
|
|
@@ -145,7 +142,7 @@ def status(full):
|
|
|
145
142
|
import rich
|
|
146
143
|
from egse.storage import get_status
|
|
147
144
|
|
|
148
|
-
rich.print(get_status(full=full))
|
|
145
|
+
rich.print(get_status(full=full), end='')
|
|
149
146
|
|
|
150
147
|
|
|
151
148
|
def check_prerequisites():
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import sys
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import rich
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def start_log_cs():
|
|
9
|
+
rich.print("Starting the logging core service...")
|
|
10
|
+
|
|
11
|
+
out = open(Path('~/.log_cs.start.out').expanduser(), 'w')
|
|
12
|
+
|
|
13
|
+
subprocess.Popen(
|
|
14
|
+
[sys.executable, '-m', 'egse.logger.log_cs', 'start'],
|
|
15
|
+
stdout=out, stderr=out, stdin=subprocess.DEVNULL,
|
|
16
|
+
close_fds=True
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def start_sm_cs():
|
|
21
|
+
rich.print("Starting the storage manager core service...")
|
|
22
|
+
|
|
23
|
+
out = open(Path('~/.sm_cs.start.out').expanduser(), 'w')
|
|
24
|
+
|
|
25
|
+
subprocess.Popen(
|
|
26
|
+
[sys.executable, '-m', 'egse.storage.storage_cs', 'start'],
|
|
27
|
+
stdout=out, stderr=out, stdin=subprocess.DEVNULL,
|
|
28
|
+
close_fds=True
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def start_cm_cs():
|
|
33
|
+
rich.print("Starting the configuration manager core service...")
|
|
34
|
+
|
|
35
|
+
out = open(Path('~/.cm_cs.start.out').expanduser(), 'w')
|
|
36
|
+
|
|
37
|
+
subprocess.Popen(
|
|
38
|
+
[sys.executable, '-m', 'egse.confman.confman_cs', 'start'],
|
|
39
|
+
stdout=out, stderr=out, stdin=subprocess.DEVNULL,
|
|
40
|
+
close_fds=True
|
|
41
|
+
)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
# import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
import rich
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
async def run_all_status():
|
|
9
|
+
tasks = [
|
|
10
|
+
status_log_cs(),
|
|
11
|
+
status_sm_cs(),
|
|
12
|
+
status_cm_cs(),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
await asyncio.gather(*tasks)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
async def status_log_cs():
|
|
19
|
+
|
|
20
|
+
proc = await asyncio.create_subprocess_exec(
|
|
21
|
+
sys.executable, '-m', 'egse.logger.log_cs', 'status',
|
|
22
|
+
stdout=asyncio.subprocess.PIPE,
|
|
23
|
+
stderr=asyncio.subprocess.PIPE
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
stdout, stderr = await proc.communicate()
|
|
27
|
+
|
|
28
|
+
# proc = subprocess.Popen(
|
|
29
|
+
# [sys.executable, '-m', 'egse.logger.log_cs', 'status'],
|
|
30
|
+
# stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
|
31
|
+
# )
|
|
32
|
+
#
|
|
33
|
+
# stdout, stderr = proc.communicate()
|
|
34
|
+
|
|
35
|
+
rich.print(stdout.decode(), end='')
|
|
36
|
+
if stderr:
|
|
37
|
+
rich.print(f"[red]{stderr.decode()}[/]")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
async def status_sm_cs():
|
|
41
|
+
|
|
42
|
+
proc = await asyncio.create_subprocess_exec(
|
|
43
|
+
sys.executable, '-m', 'egse.storage.storage_cs', 'status',
|
|
44
|
+
stdout=asyncio.subprocess.PIPE,
|
|
45
|
+
stderr=asyncio.subprocess.PIPE
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
stdout, stderr = await proc.communicate()
|
|
49
|
+
|
|
50
|
+
# proc = subprocess.Popen(
|
|
51
|
+
# [sys.executable, '-m', 'egse.storage.storage_cs', 'status'],
|
|
52
|
+
# stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
|
53
|
+
# )
|
|
54
|
+
#
|
|
55
|
+
# stdout, stderr = proc.communicate()
|
|
56
|
+
|
|
57
|
+
rich.print(stdout.decode(), end='')
|
|
58
|
+
if stderr:
|
|
59
|
+
rich.print(f"[red]{stderr.decode()}[/]")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
async def status_cm_cs():
|
|
63
|
+
|
|
64
|
+
proc = await asyncio.create_subprocess_exec(
|
|
65
|
+
sys.executable, '-m', 'egse.confman.confman_cs', 'status',
|
|
66
|
+
stdout=asyncio.subprocess.PIPE,
|
|
67
|
+
stderr=asyncio.subprocess.PIPE
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
stdout, stderr = await proc.communicate()
|
|
71
|
+
|
|
72
|
+
# proc = subprocess.Popen(
|
|
73
|
+
# [sys.executable, '-m', 'egse.confman.confman_cs', 'status'],
|
|
74
|
+
# stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
|
75
|
+
# )
|
|
76
|
+
#
|
|
77
|
+
# stdout, stderr = proc.communicate()
|
|
78
|
+
|
|
79
|
+
rich.print(stdout.decode(), end='')
|
|
80
|
+
if stderr:
|
|
81
|
+
rich.print(f"[red]{stderr.decode()}[/]")
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import sys
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
import rich
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def stop_log_cs():
|
|
9
|
+
rich.print("Terminating the logging core service...")
|
|
10
|
+
|
|
11
|
+
out = open(Path('~/.log_cs.stop.out').expanduser(), 'w')
|
|
12
|
+
|
|
13
|
+
subprocess.Popen(
|
|
14
|
+
[sys.executable, '-m', 'egse.logger.log_cs', 'stop'],
|
|
15
|
+
stdout=out, stderr=out, stdin=subprocess.DEVNULL,
|
|
16
|
+
close_fds=True
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def stop_sm_cs():
|
|
21
|
+
rich.print("Terminating the storage manager core service...")
|
|
22
|
+
|
|
23
|
+
out = open(Path('~/.sm_cs.stop.out').expanduser(), 'w')
|
|
24
|
+
|
|
25
|
+
subprocess.Popen(
|
|
26
|
+
[sys.executable, '-m', 'egse.storage.storage_cs', 'stop'],
|
|
27
|
+
stdout=out, stderr=out, stdin=subprocess.DEVNULL,
|
|
28
|
+
close_fds=True
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def stop_cm_cs():
|
|
33
|
+
rich.print("Terminating the configuration manager core service...")
|
|
34
|
+
|
|
35
|
+
out = open(Path('~/.cm_cs.stop.out').expanduser(), 'w')
|
|
36
|
+
|
|
37
|
+
subprocess.Popen(
|
|
38
|
+
[sys.executable, '-m', 'egse.confman.confman_cs', 'stop'],
|
|
39
|
+
stdout=out, stderr=out, stdin=subprocess.DEVNULL,
|
|
40
|
+
close_fds=True
|
|
41
|
+
)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This script is as an administration script for the CGSE. The script provides commands to start, stop, and
|
|
3
|
+
get the status of the core services and any other service that is registered as a plugin.
|
|
4
|
+
|
|
5
|
+
The following main commands have been implemented:
|
|
6
|
+
|
|
7
|
+
$ cgse version
|
|
8
|
+
|
|
9
|
+
Prints the installed version of the cgse-core and any other package that is registered under
|
|
10
|
+
the entry points group 'cgse.version'.
|
|
11
|
+
|
|
12
|
+
$ cgse core {start,stop,status}
|
|
13
|
+
|
|
14
|
+
Starts, stops, or prints the status of the core services.
|
|
15
|
+
|
|
16
|
+
Other main commands can be added from external packages when they are provided as entry points with
|
|
17
|
+
the group name 'cgse.command.plugins'.
|
|
18
|
+
|
|
19
|
+
Commands can be added as single commands or as a group containing further sub-commands. To add a group,
|
|
20
|
+
the entry point shall contain 'group' in its extras.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import rich
|
|
24
|
+
import typer
|
|
25
|
+
from rich.console import Console
|
|
26
|
+
from rich.traceback import Traceback
|
|
27
|
+
|
|
28
|
+
from egse.plugin import entry_points
|
|
29
|
+
from scripts import services
|
|
30
|
+
|
|
31
|
+
app = typer.Typer(add_completion=True)
|
|
32
|
+
app.add_typer(services.app, name="core")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@app.command()
|
|
36
|
+
def version():
|
|
37
|
+
"""Prints the version of the cgse-core and other registered packages."""
|
|
38
|
+
from egse.version import get_version_installed
|
|
39
|
+
|
|
40
|
+
# if installed_version := get_version_installed("cgse-core"):
|
|
41
|
+
# rich.print(f"CGSE-CORE installed version = [bold default]{installed_version}[/]")
|
|
42
|
+
|
|
43
|
+
for ep in sorted(entry_points("cgse.version"), key=lambda x: x.name):
|
|
44
|
+
if installed_version := get_version_installed(ep.name):
|
|
45
|
+
rich.print(f"{ep.name.upper()} installed version = [bold default]{installed_version}[/]")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def broken_command(name: str, module: str, exc: Exception):
|
|
49
|
+
"""
|
|
50
|
+
Rather than completely crash the CLI when a broken plugin is loaded, this
|
|
51
|
+
function provides a modified help message informing the user that the plugin is
|
|
52
|
+
broken and could not be loaded. If the user executes the plugin and specifies
|
|
53
|
+
the `--traceback` option a traceback is reported showing the exception the
|
|
54
|
+
plugin loader encountered.
|
|
55
|
+
"""
|
|
56
|
+
def broken_plugin(traceback: bool = False):
|
|
57
|
+
rich.print(f"[red]ERROR: Couldn't load this plugin command: {name} ⟶ reason: {exc}[/]")
|
|
58
|
+
if traceback:
|
|
59
|
+
console = Console(width=100)
|
|
60
|
+
tb = Traceback.from_exception(type(exc), exc, exc.__traceback__)
|
|
61
|
+
console.print(tb)
|
|
62
|
+
|
|
63
|
+
broken_plugin.__doc__ = f"ERROR: Couldn't load plugin '{name}' from {module}"
|
|
64
|
+
broken_plugin.__name__ = name
|
|
65
|
+
return broken_plugin
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
# Load the known plugins for the `cgse` command. Plugins are added as commands to the `cgse`.
|
|
69
|
+
|
|
70
|
+
for ep in entry_points("cgse.command.plugins"):
|
|
71
|
+
try:
|
|
72
|
+
if not ep.extras or 'command' in ep.extras:
|
|
73
|
+
app.command()(ep.load())
|
|
74
|
+
elif 'group' in ep.extras:
|
|
75
|
+
app.add_typer(ep.load(), name=ep.name)
|
|
76
|
+
else:
|
|
77
|
+
rich.print(f"\n[red]ERROR: don't know what to do with {ep.extras} for {ep.name}, command not added.[/]\n")
|
|
78
|
+
except Exception as exc:
|
|
79
|
+
app.command()(broken_command(ep.name, ep.module, exc))
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
for ep in entry_points("cgse.service.plugins"):
|
|
83
|
+
try:
|
|
84
|
+
app.add_typer(ep.load(), name=ep.name)
|
|
85
|
+
except Exception as exc:
|
|
86
|
+
app.command()(broken_command(ep.name, ep.module, exc))
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@app.callback(no_args_is_help=True, invoke_without_command=True)
|
|
90
|
+
def main():
|
|
91
|
+
"""
|
|
92
|
+
The main cgse command to inspect, configure, monitor the core services
|
|
93
|
+
and device control servers.
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
if __name__ == "__main__":
|
|
98
|
+
app()
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
3
|
+
import rich
|
|
4
|
+
import typer
|
|
5
|
+
|
|
6
|
+
app = typer.Typer(
|
|
7
|
+
name="core",
|
|
8
|
+
help="handle core services: start, stop, status",
|
|
9
|
+
no_args_is_help=True
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@app.command(name="start")
|
|
14
|
+
def start_core_services():
|
|
15
|
+
"""Start the core services in the background."""
|
|
16
|
+
from scripts._start import start_log_cs, start_sm_cs, start_cm_cs
|
|
17
|
+
|
|
18
|
+
rich.print("[green]Starting the core services...[/]")
|
|
19
|
+
|
|
20
|
+
start_log_cs()
|
|
21
|
+
start_sm_cs()
|
|
22
|
+
start_cm_cs()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@app.command(name="stop")
|
|
26
|
+
def stop_core_services():
|
|
27
|
+
"""Stop the core services."""
|
|
28
|
+
from scripts._stop import stop_log_cs, stop_sm_cs, stop_cm_cs
|
|
29
|
+
|
|
30
|
+
rich.print("[green]Terminating the core services...[/]")
|
|
31
|
+
|
|
32
|
+
stop_cm_cs()
|
|
33
|
+
stop_sm_cs()
|
|
34
|
+
stop_log_cs()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@app.command(name="status")
|
|
38
|
+
def status_core_services():
|
|
39
|
+
"""Print the status of the core services."""
|
|
40
|
+
# from scripts._status import status_log_cs, status_sm_cs, status_cm_cs
|
|
41
|
+
|
|
42
|
+
rich.print("[green]Status of the core services...[/]")
|
|
43
|
+
|
|
44
|
+
from scripts._status import run_all_status
|
|
45
|
+
asyncio.run(run_all_status())
|
|
46
|
+
|
|
47
|
+
# status_log_cs()
|
|
48
|
+
# status_sm_cs()
|
|
49
|
+
# status_cm_cs()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cgse-tools"
|
|
3
|
-
version = "2025.0.
|
|
3
|
+
version = "2025.0.8-dev.1"
|
|
4
4
|
description = "Tools for CGSE"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "IVS KU Leuven"}
|
|
@@ -33,13 +33,13 @@ cgse-status = "egse.tools.status:main"
|
|
|
33
33
|
[project.entry-points."cgse.version"]
|
|
34
34
|
cgse-tools = 'egse.tools'
|
|
35
35
|
|
|
36
|
-
#
|
|
36
|
+
# plugins for the `cgse` command, add [group] when the command has sub-commands
|
|
37
37
|
|
|
38
|
-
[project.entry-points."cgse.plugins"]
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
[
|
|
42
|
-
|
|
38
|
+
[project.entry-points."cgse.command.plugins"]
|
|
39
|
+
top = 'cgse_tools.cgse_commands:top'
|
|
40
|
+
show = 'cgse_tools.cgse_commands:show[group]'
|
|
41
|
+
check = 'cgse_tools.cgse_commands:check[group]'
|
|
42
|
+
dev-x = 'cgse_tools.cgse_services:dev_x[group]'
|
|
43
43
|
|
|
44
44
|
[tool.hatch.build.targets.sdist]
|
|
45
45
|
exclude = [
|
|
@@ -49,7 +49,7 @@ exclude = [
|
|
|
49
49
|
]
|
|
50
50
|
|
|
51
51
|
[tool.hatch.build.targets.wheel]
|
|
52
|
-
packages = ["src/egse"]
|
|
52
|
+
packages = ["src/egse", "src/scripts"]
|
|
53
53
|
|
|
54
54
|
[tool.ruff]
|
|
55
55
|
line-length = 120
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import re
|
|
2
|
+
import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import Annotated
|
|
6
|
+
|
|
7
|
+
import rich
|
|
8
|
+
import typer
|
|
9
|
+
|
|
10
|
+
app = typer.Typer()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@app.command()
|
|
14
|
+
def top():
|
|
15
|
+
"""
|
|
16
|
+
A top-like interface for core services and device control servers.
|
|
17
|
+
|
|
18
|
+
Not yet implemented.
|
|
19
|
+
"""
|
|
20
|
+
print("This fancy top is not yet implemented.")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
show = typer.Typer(help="Show information about settings, environment, setup, ...", no_args_is_help=True)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@show.command(name="settings")
|
|
27
|
+
def show_settings():
|
|
28
|
+
proc = subprocess.Popen(
|
|
29
|
+
[sys.executable, "-m", "egse.settings"],
|
|
30
|
+
stdout=subprocess.PIPE,
|
|
31
|
+
stderr=subprocess.PIPE
|
|
32
|
+
)
|
|
33
|
+
stdout, stderr = proc.communicate()
|
|
34
|
+
rich.print(stdout.decode(), end='')
|
|
35
|
+
if stderr:
|
|
36
|
+
rich.print(f"[red]{stderr.decode()}[/]")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@show.command(name="env")
|
|
40
|
+
def show_env(
|
|
41
|
+
mkdir: Annotated[bool, typer.Option(help="Create the missing folder")] = None,
|
|
42
|
+
full: Annotated[bool, typer.Option(help="Provide additional info")] = None,
|
|
43
|
+
doc: Annotated[bool, typer.Option(help="Provide documentation on environment variables")] = None,
|
|
44
|
+
):
|
|
45
|
+
options = [opt for opt, flag in [("--mkdir", mkdir), ("--full", full), ("--doc", doc)] if flag]
|
|
46
|
+
|
|
47
|
+
cmd = [sys.executable, "-m", "egse.env"]
|
|
48
|
+
cmd += options if options else []
|
|
49
|
+
|
|
50
|
+
proc = subprocess.Popen(
|
|
51
|
+
cmd,
|
|
52
|
+
stdout=subprocess.PIPE,
|
|
53
|
+
stderr=subprocess.PIPE
|
|
54
|
+
)
|
|
55
|
+
stdout, stderr = proc.communicate()
|
|
56
|
+
rich.print(stdout.decode(), end='')
|
|
57
|
+
if stderr:
|
|
58
|
+
rich.print(f"[red]{stderr.decode()}[/]")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
check = typer.Typer(help="Check installation, settings, required files, etc.", no_args_is_help=True)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@check.command(name="setups")
|
|
65
|
+
def check_setups():
|
|
66
|
+
"""Perform a number of checks on the SETUP files."""
|
|
67
|
+
|
|
68
|
+
# What can we check with respect to the setups?
|
|
69
|
+
#
|
|
70
|
+
# - CONF_DATA_LOCATION
|
|
71
|
+
|
|
72
|
+
from egse.env import get_conf_data_location
|
|
73
|
+
from egse.env import get_site_id
|
|
74
|
+
from egse.config import find_files
|
|
75
|
+
|
|
76
|
+
any_errors = 0
|
|
77
|
+
|
|
78
|
+
conf_data_location = get_conf_data_location()
|
|
79
|
+
site_id = get_site_id()
|
|
80
|
+
|
|
81
|
+
# ---------- check if the <PROJECT>_CONF_DATA_LOCATION is set
|
|
82
|
+
|
|
83
|
+
if not conf_data_location:
|
|
84
|
+
any_errors += 1
|
|
85
|
+
rich.print("[red]The location of the configuration data can not be determined, check your environment.[/]")
|
|
86
|
+
|
|
87
|
+
if not Path(conf_data_location).exists():
|
|
88
|
+
any_errors += 1
|
|
89
|
+
rich.print(f"[red]The location of the configuration data doesn't exist: {conf_data_location!s}[/]")
|
|
90
|
+
|
|
91
|
+
# ---------- check if there is at least one SETUP in the configuration data folder
|
|
92
|
+
|
|
93
|
+
files = list(find_files("SETUP*.yaml", root=conf_data_location))
|
|
94
|
+
|
|
95
|
+
if not files:
|
|
96
|
+
any_errors += 1
|
|
97
|
+
rich.print(f"[red]No SETUP files were found at {conf_data_location}[/]")
|
|
98
|
+
|
|
99
|
+
regex = re.compile(f"SETUP_{site_id}_00000_.*.yaml")
|
|
100
|
+
|
|
101
|
+
if not any(True for file in files if regex.search(str(file))):
|
|
102
|
+
any_errors += 1
|
|
103
|
+
rich.print(f"[red]The is no Zero SETUP for {site_id} in {conf_data_location}[/]")
|
|
104
|
+
|
|
105
|
+
if not any_errors:
|
|
106
|
+
rich.print("[green]everything seems to be ok.[/]")
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# An example plugin for the `cgse {start,stop,status} service` command from `cgse-core`.
|
|
2
|
+
#
|
|
3
|
+
import rich
|
|
4
|
+
import typer
|
|
5
|
+
|
|
6
|
+
dev_x = typer.Typer(
|
|
7
|
+
name="dev-x",
|
|
8
|
+
help="device-x is an imaginary device that serves as an example",
|
|
9
|
+
no_args_is_help=True
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dev_x.command(name="start")
|
|
14
|
+
def start_dev_x():
|
|
15
|
+
"""Start the dev-x service."""
|
|
16
|
+
rich.print("Starting service dev_x")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@dev_x.command(name="stop")
|
|
20
|
+
def stop_dev_x():
|
|
21
|
+
"""Stop the dev-x service."""
|
|
22
|
+
rich.print("Terminating service dev_x")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dev_x.command(name="status")
|
|
26
|
+
def status_dev_x():
|
|
27
|
+
"""Print status information on the dev-x service."""
|
|
28
|
+
rich.print("Printing the status of dev_x")
|
|
File without changes
|