The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- fix(scenario): qgis-installation-finder accept if_not_found value warning and not warn. by @florentfgrs in #566
- feat(pypac): add tldextract cache directory in pyinstaller by @jmkerloch in #564
- feat(pac): add file for tests by @jmkerloch in #562
- feat(proxies): use pypac to use PAC file by @jmkerloch in #560
- fix(profile sync): force copy if sync_mode is overwirte by @jmkerloch in #555
- Feature: support
search_paths
option in QGIS finder job by @Guts in #535
- update(docs): add how to use autogenerated release notes from GitHub by @Guts in #557
- fix(downloader): stream option was not propagated to get args by @Guts in #550
- fix(downloader):
qdt_plugins_to_copy
was not created in force mode by @Guts in #551
- add(tooling): helper script to convert png to ico by @Guts in #548
- improve(downloader): use a custom HTTP transport adapter instead of rough injection by @Guts in #549
- improve(tests): add scenario to test against plugins downloader in monothread and forced by @Guts in #552
- feature(downloader): add option to disable SSL verification by @Guts in #544
- refacto(cleanup): fix some type hints and relative imports by @Guts in #540
- feature(downloader): add option to control over stream mode by @Guts in #541
- Enhancement: rename shortcut module and improve docstring/type hints consistency by @Guts in #543
- update(packaging): use Python 3.12 to build packages by @Guts in #542
- fix(docs): value must be quoted in PowerShell command to set env vars by @Guts in #536
- fix(io): explicitly declare UTF-8 encoding in IO operations by @Guts in #520
- improve(docs): restore linkify (MyST parser extension) by @Guts in #516
- Improve: qdt files reliability by @Guts in #514
- Fix: rules context crash on certain Windows configuration by @Guts in #507
- improve(user_groups): enforces user domain groups retrieval using user guid by @Guts in #508
- CI: test export rules context in different supported environments by @Guts in #512
- fix(profiles): profiles listing was returning the unfiltered list by @Guts in #497
- Documentation: improve download section by @Guts in #496
- feature(rules): on Windows, retrieve user extended data using win32 API by @Guts in #494
Killer feature introduced: rules engine. Funded by Métropole du Grand Lyon.
- fix(logs): unreachable profile-attributes in logs by @Guts in #486
- Feature: add rules engine by @Guts in #481
- Feature: add datetime to rules context by @Guts in #484
- Feature: retrieve win32 user groups by @Guts in #393
- feature(rules): add user name and groups to rules context by @Guts in #489
- tests(usergroups): add unit tests against user groups module and update tests by @Guts in #490
- Refacto: move profiles rules filter to generic class and use it systematically in jobs by @Guts in #487
- Refacto: move rules context into a structured object by @Guts in #491
- feature(cli): add command to export rules context in current environment by @Guts in #492
- enhancement: improve reliability of version templater making sure that a SemVer compliant version number is passed by @Guts in #483
- feat(installed qgis): add qgis-installation-finder job by @jmkerloch in #464
- fix(env variable): update local environment by @jmkerloch in #455
- Tooling: add config for markdown files in VS Code by @Guts in #461
- docs: fix autobuild command by @Guts in #462
- docs: minor fixes by @Guts in #467
- docs: complete validation tooling by @Guts in #463
- docs: add quickstart by @Guts in #468
- docs: remove pattern from JSON schemas by @Guts in #456
- docs: add how to check using git hooks by @Guts in #457
- docs: add robots.txt for SEO engines by @Guts in #458
- docs: enable zoom in mermaid diagrams by @Guts in #459
- docs: autodoc init functions by @Guts in #460
- docs: add a page referencing QDT projects by @Guts in #465
- docs: move how to publish to an HTTP server in a specific guide page by @Guts in #466
- fix: remove deprecated job and fix minor confusing refs in JSON schemas by @Guts in #449
- feat(env variable): add write of environnement variable in .ini files from QDT profile by @jmkerloch in #452
- packaging: set Python min/max versions by @Guts in #447
- demo: renew shortcuts profiles icons and add versions compatible with QGIS profiles list by @sylvainbeo and @Guts in #453
- deps: bump minimal versions for git sync by @Guts in #443
- @jmkerloch and @sylvainbeo made their first contribution
- Fix: shortcut template was bundled to the wrong path by @Guts in #442
- refacto: rm typing_extensions from deps replacing by future.annotations by @Guts in #441
- Feature: network use native system stores by @Guts in #444
- fix: restore refresh_environment by @Guts in #438
- refacto: remove unused methods and improve doctsrings by @Guts in #429
- Refacto: split profiles sync job by @Guts in #432
- Feature: job environment variables support linux by @Guts in #435
- ci: use codecov upload token by @Guts in #430
- ci: tag codecov uploads with CI matrix vars by @Guts in #431
- tooling: ignore dev scripts and fixtures from Sonar analisis by @Guts in #433
- ci: disable matrix fail fast by @Guts in #434
- tooling: make sonar ignore tests for duplication by @Guts in #436
- Improve: cleanup OSConfig and refacto CLI's tests to run outside real QGIS profiles folder by @Guts in #427
- fix: undefined variable on Windows if scope != user by @Guts in #392
- fix: change refs to menu_from_projects to match new versioning scheme by @Guts in #424
- Refacto: factorize logs folders retrieval by @Guts in #398
- fix: tests were failing because of upstream URL change by @Guts in #409
- Feature: log details about Certificates Authority bundle by @Guts in #397
- tests: improve downloader testing by @Guts in #412
- Improve: testing ini files against untracked files by @Guts in #416
- Improve: refacto operating system constants retrieval by @Guts in #421
- CI: update autolabeler to v5 by @Guts in #411
- tooling: enable import autocompletion in VSCode by @Guts in #422
- docs: clean up and fix some syntax errors by @Guts in #420
- docs: add custom qgis profiles folderpath with QGIS_CUSTOM_CONFIG_PATH by @Guts in #423
- docs: add example on run QDT behind a proxy with PowerShell by @Guts in #394
- docs: fix typo spotted by @sylvainbeo by @Guts in #395
- docs: release upper pins of dependencies to reduce dependabot noise by @Guts in #417
- docs: enable social cards by @Guts in #418
- docs: add sitemap by @Guts in #419
- docs: add new plugin's id retrieval method and reorganize the table of contents by @Guts in #425
- security: bump pillow to 10.2 to fix CVE-2022-22817 by @Guts in #400
- Fix: splash screen removal by @Guts in #381
- Security: increase security scans and improve related documentation by @Guts in #352
- Feature: download from http (part 1) by @Guts in #351
- feature: add util to get ProxyHandler and cache some recurring functions by @Guts in #358
- feature: use proxy handler in file downloader by @Guts in #359
- feature: add simple http client by @Guts in #360
- improvement: use proxy handle in upgrade sub-command by @Guts in #362
- log: on Linux, add distribution name and version by @Guts in #363
- log: add details about how QDT working folder is determined by @Guts in #364
- Change: move QDT subfolders to generic job by @Guts in #347
- Refacto: use requests to download files by @Guts in #367
- Refacto: remove dead code by @Guts in #368
- Feature: add file size to downloader log by @Guts in #369
- Feature: add log filepath on exit error by @Guts in #370
- feature: HTTP downloader refacto part 2 by @Guts in #372
- feature: add function name to log by @Guts in #380
- tests: add more scenarii and factorize test by @Guts in #382
- feature: QdtProfile has now shortcuts to access to ini files and its installed alter-ego by @Guts in #383
- Feature: improve splash screen manager logic by using ini helper intensively by @Guts in #384
- tooling: add SonarCloud configuration file by @Guts in #378
- docs: improve development guide by @Guts in #357
- docs: update qprofiles-manager with deprecated 'git' value by @Guts in #361
- tooling: add SonarCloud badge by @Guts in #371
- Refacto: use requests to download files by @Guts in #367
- Refacto: remove dead code by @Guts in #368
- Feature: add file size to downloader log by @Guts in #369
- Feature: add log filepath on exit error by @Guts in #370
- feature: HTTP downloader refacto part 2 by @Guts in #372
- tooling: add SonarCloud configuration file by @Guts in #378
- tooling: add SonarCloud badge by @Guts in #371
- Security: increase security scans and improve related documentation by @Guts in #352
- Feature: download from http (part 1) by @Guts in #351
- feature: add util to get ProxyHandler and cache some recurring functions by @Guts in #358
- feature: add simple http client by @Guts in #360
- improvement: use proxy handle in upgrade sub-command by @Guts in #362
- log: on Linux, add distribution name and version by @Guts in #363
- log: add details about how QDT working folder is determined by @Guts in #364
- Change: move QDT subfolders to generic job by @Guts in #347
- feature: use proxy handler in file downloader by @Guts in #359
- docs: improve development guide by @Guts in #357
- docs: update qprofiles-manager with deprecated 'git' value by @Guts in #361
- Fix: local Git repository were not recognized anymore as valid git repository #344
- Fix: surround profile name with quotes to prevent space by @Guts in #348 (#320)
- Git synchronization: global improvements by @Guts in #346
- CI: fix packages-dir path for PyPi upload by @Guts in #339
- Packaging: add operating system name to build report by @Guts in #340
- CI: avoid uploading build reports by @Guts in #341
- Docs: how to manually deploy to PyPi by @Guts in #342
- Disable ConfigParser strict mode to better handling of heterogeneity of QGIS config files by @Guts in #334
- Add util to format octets size into human-readable format by @Guts in #331
- Refacto: add a Git handler base class to inherit from and avoid duplicate code by @Guts in #333
- Jobs: make downloaded and installed profiles listing more generic by @Guts in #336
- Enhancement: add a module to read and write QGIS ini files by @Guts in #337
- Packaging: renamed license to match Pypi classifier by @Guts in #326
- Publishing to PyPi: switch to trusted publisher by @Guts in #327
- Add python 3.12 to tests and supported versions by @Guts in #328
- Packaging: restore operating system name in final executables by @Guts in #329
- CI: add discussion category name to link to a GitHub Release by @Guts in #330
- Add demonstration profile viewer mode by @Guts in #332
- Fix missing shortcut template in packaging by @Guts in #319
- Support custom HTTP proxy setting: QDT_PROXY_HTTP by @Guts in #293
- Refacto: move shortcuts related code into specific subpkg by @Guts in #324
- Quality: global project improvements and clean up by @Guts in #325
- Improve setup: add extras and factorize requirements loading by @Guts in #302
- Switch license from LGPL3 to Apache License 2 by @Guts in #314
- Packaging: improve output name and PyInstaller options by @Guts in #321
- Tooling: update VS Code config by @Guts in #323
- Mise à jour documentation by @sigeal in #315
- Update Pillow to fix CVE related to libwebp by @Guts in #313
- @sigeal made their first contribution in #315
Full Changelog: https://github.com/Guts/qgis-deployment-cli/compare/0.26.0...0.27.0
- Fix: accept different types (URLs or str) as environment variables values by @Guts in #291
- Set download as default action by @Guts in #281
- Improve: if icon not found, use default QGIS icon (only Linux Free Desktop) by @Guts in #282
- Packaging: add icon to exe by @Guts in #285
- Add demo profile by @Guts in #276
- Documentation: add typical project structure section by @Guts in #280
- Upgrade: download new release binary only in frozen mode by @Guts in #266
- Docs: deploy only on tags or main by @Guts in #265
- Add feature request issue form by @Guts in #272
- Packaging: publish QDT as Docker image in GHCR by @Guts in #274
- Set dulwich minimal version to prevent upstream bug (jelmer/dulwich#1164) by @Guts in #263
- Improve log message during plugin version comparison by @Guts in #257
- Quality: extends tests against file downloader util by @florentfgrs in #245
- Feature: handle local Git repository by @Guts in #255
- Feature: handle "local" plugins by @Guts in #253
- Docs: use glob to automatically include jobs docs in toctree by @Guts in #254
- @florentfgrs made their first contribution in #245
- Use QGIS LTR 3.28.4 path as default by @Guts in #243
- Refacto: jobs splash screen and some mutualized methods by @Guts in #242
- Fix: env var obfuscated by lru cache by @Guts in #236
- Fix missing return profile object in shortcut job by @Guts in #239
- Fix and refactoring get_qgis_path which was failing because of bad type passed to ast.literal_eval by @Guts in #241
- Improvement: make remote scenario downloaded a separate func by @Guts in #238
- Feature: check path now try to expand user vars by @Guts in #240
- Refacto: job shortcuts now use mutualized objects and tools by @Guts in #230
- Feature: add line number to log to make debug easier by @Guts in #231
- Feature: better logging by @Guts in #233
- Improve how invalid YAML files are handled by @Guts in #234
- Improvement: extract name and path from URL of remote scenario and store it properly in QDT work dir by @Guts in #235
- Add default subparser to allow direct run of deployment by @Guts in #229
- Fix unexpected keyword argument 'profiles_folder_to_copy' by @Guts in #227
- Improve reliability of profiles sync with only_missing by @Guts in #228
- Hotfix crash when some profiles have a lesser version by @Guts in #226
- Fix: outdated profiles should also be copied when sync_mode=only_different by @Guts in #225
- Improve upgrade subcommand by handling GitHub Token by @Guts in #219
- Tooling: complete JSON schemas and job documentation by @Guts in #224
- Add bug report issue form by @Guts in #222
- Documentation: improve download page by @Guts in #220
- Tooling: add pyupgrade as git hook by @Guts in #218
- Profiles synchronization: add sync_mode option by @Guts in #97
- Add funding page by @Guts in #217
- Refacto: remove unused modules (dead code) by @Guts in #207
- Improve: test coverage bouncer by @Guts in #209
- Switch to a generic Job object with inheritance by @Guts in #208
- Clean up: rm former validations methods by @Guts in #210
- Tooling: add ruff to git hooks by @Guts in #211
- Feature: use environment variables to set arguments values by @Guts in #215
- Feature: support remote scenario path by @Guts in #216
- Documentation: add how to grab a plugin_id by @Guts in #214
- Fix message when there is no newer version by @Guts in #205
- Add helper to handle common error on exe name by @Guts in #206
- Feature: job to manage environment variables now handles
remove
action by @Guts in #199
- Add doc page about environment variable job by @Guts in #198
A version focused on refacto to reduce external dependencies.
- Refacto: clean up rm unused subcmd by @Guts in #192
- Refacto: replace click by argparse by @Guts in #194
- Refacto: remove dependency to py-setenv by @Guts in #196
- Refacto: remove rich dependency by @Guts in #197
- Packaging: build and package for MacOS (experimental) by @Guts in #195
- Fix QGIS bin path retriever by @Guts in #191
- Tooling and documentation: JSON schema for profile editing by @Guts in #187
- Documentation: fix build and switch to Furo theme by @Guts in #188
- Embed shortcut template into packages by @Guts in #181
- Dependencies: replace semver by packaging to compare versions by @Guts in #177
- Feature: improve shortcut manager to create shortcuts on Linux (FreeDesktop) by @Guts in #178
- Feature: plugins synchronization part 3 - Upgrade older plugins by @Guts in #176
- Fix: download URL should use folder_name when exists instead of name by @Guts in #175
- Feature: add a subcommand to upgrade the CLI by @Guts in #169
- Feature: plugins downloader by @Guts in #168
- Feature: plugins synchronization - part 1 by @Guts in #172
- Feature: plugins synchronization part 2 by @Guts in #174
- CI: build Python wheel using build package by @Guts in #170
- Use GE to deploy to GH Pages instead of branch gh-pages by @Guts in #171
- Set minimal Python to 3.10 by @Guts in #173
- Add module to check image size by @Guts in #151
- Add test for utils.slugifier by @Guts in #165
- Improve test coverage on check image by @Guts in #166
- Increase test coverage by @vicente23 in #157
- Feature: add option to check splash screen dimensions by @Guts in #167
- Replace the variable scenario by scenario_filepath by @vicente23 in #148
- Check the validity of the scenario file by @vicente23 in #149
- Make the remote git handler much more robust to by @Guts in #154
- Allow to specify branch to clone/pull by @Guts in #152
- Make logging binary : warning or debug by @Guts in #155
- Add utils module to check paths in a centralized way by @Guts in #156
- Fix documentation build on CI by @Guts in #144
- Packaging: Add Python 3.11 to supported versions by @Guts in #153
- Add new job to manage custom splash screen
- Fix: job shortcut-manager was failing when icon is not defined
- Bump dependencies
- Minor bug fixes
- Extends unit tests (65%)
- handle
~
char in scenario files to represent the end-user home folder - add
utils.str2bool
to convertstr
tobool
. Useful to process environment variables which are always stored/retrieved as strings. - add
utils.win32utils.get_environment_variable
to retrieve environment variable directly from Windows registry, becauseos.getenv
uses the configuration at the run moment - Documentation: add an auto-generated table of dependencies and their license within the Credits page
- Fix a bug when the icon path was not set for a shortcut
- Extend unit tests to reach 60% of coverage
- Pin dulwich version to avoid recurring connection errors
- Add support for environment variable
QGIS_CUSTOM_CONFIG_PATH
- Make clone/pull more robust
- Extend unit tests
- Add module to create and delete application shortcuts
- Add job to use the new module to automatically create shortcuts for QGIS profiles
- Promote constants module to a dataclass (Python 3.7+)
- Remove subcommand to set environment variables
- Rename
environment_variables
section tosettings
in scenario files - Handle situation where the QGIS profiles folder doesn't exist
- Fix the default QGIS profiles path on Windows
- Fix environment variables manager
- Fix and improve clean command
- Run unit tests on multiple operating systems: MacOS, Ubuntu LTS and Windows 10
- Profiles synchronization now handle the mixed case where some of downloaded profiles are already installed, and some are not.
- Extend unit tests
- Minor clean up
- Improve profiles synchronization logic by filtering on folders which are (or seem to be) QGIS profiles
- Minor changes
- Deploy: install downloaded profiles into a fresh QGIS install
- Check: operaing system compatibility
- Improve isort and codecov configurations
- Add Python Wheel as packaging option
- Deploy release to Python Package Index
- Complete and improve documentation
- Real start of development!
- Implement pseudo-CI behavior
- Add job to set persistent environment variables on Windows
- Add job to download profiles from a public remote git repository
- Complete CI to automatically build and publish executable for Ubuntu LTS and Windows
- Upgrade every dependencies
- First version, really minimalist