Overview
The Slicer Package Manager includes a REST API service and CLI built on Girder for downloading, uploading and organizing application and extension packages for both 3D Slicer and 3D Slicer-based applications.
This software is licensed under the terms of the Apache Licence Version 2.0 and the source code is available at https://github.com/girder/slicer_package_manager.
In a nutshell:
Data model specific to this project is implemented by organizing data using standard Girder constructs (collection, folder and item) and by associating metadata.
By default, a top-level collection named
Applications
is created with apackages
folder organizing the different application.Each application folder contain a
draft
folder where unreleased packages are uploaded and one or multiple release folders (e.g 1.0, 2.0, …).Each release folder contain application packages (installers for the different platforms), and an
extensions
folder containing a flat list of extension packages.Each extension packages is associated with metadata like application revision, extension revision, operating system and architecture…
The diagram below represents the organization:
Applications
|--- packages
| |----- Slicer
| | |----- 1.0
| | | |---- Slicer-linux.tar.gz
| | | |---- Slicer-macos.dmg
| | | |---- Slicer-win.exe
| | | |---- extensions
| | | | |---- Extension1
| | | | |---- Extension2
| | | | |---- Extension3
| | | | |---- Extension4
. . . . .
. . .
| | |----- 2.0
. . . |
. . .
| | |----- draft
| | | |--- r100
| | | | |---- Slicer-linux.tar.gz
| | | | |---- Slicer-macos.dmg
| | | | |---- Slicer-win.exe
| | | | |---- extensions
| | | | | |---- Extension1
. . . . . .
. . . .
| | | |--- r101
. . . . |
. .
| |
| |------SlicerCustom
where
Slicer
andSlicerCustom
are Girder items representing Application1.0
and2.0
are Girder folders representing ReleaseSlicer-linux.tar.gz
andSlicer-macos.dmg
are Girder items representing Package (application package)Extension1
andExtension2
are Girder items representing Extension (extension package)