Skip to content

feat(marketplace): add DownloadManager and ExtensionManager interface#8

Merged
pabloinigoblasco merged 5 commits into
pablo/marketplace-data-modelsfrom
feat/download-extension-managers
Mar 10, 2026
Merged

feat(marketplace): add DownloadManager and ExtensionManager interface#8
pabloinigoblasco merged 5 commits into
pablo/marketplace-data-modelsfrom
feat/download-extension-managers

Conversation

@pabloinigoblasco
Copy link
Copy Markdown
Collaborator

Add core infrastructure for extension installation pipeline:

DownloadManager:

  • Async download with progress tracking
  • SHA-256 checksum verification
  • In-memory ZIP extraction to destination directory
  • Cancellation support for in-progress operations

ExtensionManager (interface only):

  • Header defining the orchestration layer for install/uninstall/update
  • Dependency injection ready (DownloadManager, ZipExtractor)
  • Signal-based progress and error reporting

Contents:

  • pj_marketplace/src/core/DownloadManager.h
  • pj_marketplace/src/core/DownloadManager.cpp
  • pj_marketplace/src/core/ExtensionManager.h
  • pj_marketplace/tests/download_manager_test.cpp

Add core infrastructure for extension installation pipeline:

DownloadManager:
- Async download with progress tracking
- SHA-256 checksum verification
- In-memory ZIP extraction to destination directory
- Cancellation support for in-progress operations

ExtensionManager (interface only):
- Header defining the orchestration layer for install/uninstall/update
- Dependency injection ready (DownloadManager, ZipExtractor)
- Signal-based progress and error reporting

Contents:
- pj_marketplace/src/core/DownloadManager.h
- pj_marketplace/src/core/DownloadManager.cpp
- pj_marketplace/src/core/ExtensionManager.h
- pj_marketplace/tests/download_manager_test.cpp
…taging

Add full install/uninstall/update lifecycle for marketplace extensions.

Key features:
- ExtensionManager: orchestrates download, extraction, and state persistence
- PlatformUtils: cross-platform path resolution and OS detection
- Windows staging: extracts to .pending/ directory when DLLs are in use
- Disk space validation before extraction begins
- Standalone CMake build support with LibArchive dependency

The extension manager delegates download+checksum+extraction to
DownloadManager and handles platform-specific behavior transparently.

Contents:
- src/core/ExtensionManager.cpp/.h
- src/core/PlatformUtils.cpp/.h
- CMakeLists.txt (standalone build, LibArchive)
- conanfile.txt (LibArchive dependency)
Add build infrastructure for standalone compilation of pj_marketplace.

Contents:
- build.sh: standalone build script (./build.sh or ./build.sh --debug)
- README.md: build instructions and project structure
- conanfile.txt: Qt6, libarchive, and GTest dependencies via Conan
Remove deprecated ABI version field from requirements and specification
documents as this concept is no longer part of the marketplace design.
Add unit tests covering:
- Extension installation and uninstallation
- State persistence and recovery
- Update workflows
- Error handling scenarios
@pabloinigoblasco pabloinigoblasco merged commit 155e5f5 into pablo/marketplace-data-models Mar 10, 2026
@facontidavide facontidavide deleted the feat/download-extension-managers branch May 4, 2026 12:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant