Skip to main content

OpenSCAD dependency manager - Install OpenSCAD and manage library dependencies

Project description

scadm - OpenSCAD Dependency Manager

scadm is a lightweight, python-based dependency manager for OpenSCAD projects. It simplifies installing OpenSCAD (nightly or stable) and managing library dependencies through a simple scadm.json file.

Features

  • 🚀 Install OpenSCAD: Automatically downloads and installs OpenSCAD (nightly or stable builds)
  • 📦 Manage Libraries: Install OpenSCAD libraries (BOSL2, MCAD, custom libraries) from GitHub
  • 🔄 Version Tracking: Keeps dependencies in sync with your project
  • 📋 Simple Config: Define dependencies in a single scadm.json file

Installation

Requirements: Python 3.11 or newer

pip install scadm

Quick Start

1. Create scadm.json in your project root

{
  "dependencies": [
    {
      "name": "BOSL2",
      "repository": "BelfrySCAD/BOSL2",
      "version": "266792b2a4bbf7514e73225dfadb92da95f2afe1",
      "source": "github"
    }
  ]
}

2. Install OpenSCAD and dependencies

scadm install

This will:

  • Download and install OpenSCAD to bin/openscad/
  • Install all libraries defined in scadm.json to bin/openscad/libraries/

Usage

Check version

scadm --version

Install everything (OpenSCAD + libraries)

scadm install                # Install nightly build (default - RECOMMENDED)
scadm install --stable       # Install stable release (2021.01)

[!NOTE] Nightly builds are installed by default since the stable release (2021.01) is outdated and missing modern features. All nightly versions pass rendering tests before being published to ensure quality.

Check installation status

scadm install --check

Force reinstall

scadm install --force

Install only OpenSCAD

scadm install --openscad-only

Install only libraries

scadm install --libs-only

Configure VS Code extensions

These are opinionated QoL improvements to install nifty VSCode extensions which improve DevEx.

scadm vscode --openscad   # Install and configure OpenSCAD extension
scadm vscode --python     # Install and configure Python extension

OpenSCAD extension will:

  • Install the Leathong.openscad-language-support extension
  • Configure VS Code settings with correct OpenSCAD paths
  • Merge with existing settings (preserves unrelated configurations)

Python extension will:

  • Install the ms-python.python extension
  • Configure default interpreter path to ${workspaceFolder}/.venv (eliminates need to manually source venv when opening project)

[!NOTE] Settings are opinionated defaults designed to streamline development experience. They're configured in .vscode/settings.json (workspace-level), not globally.

[!IMPORTANT] Requires VS Code CLI (code command) to be available in PATH. If not found, you'll receive installation instructions.

Configuration

scadm.json Schema

{
  "dependencies": [
    {
      "name": "BOSL2",
      "repository": "BelfrySCAD/BOSL2",
      "version": "266792b2a4bbf7514e73225dfadb92da95f2afe1",
      "source": "github"
    },
    {
      "name": "homeracker",
      "repository": "kellerlabs/homeracker",
      "version": "homeracker-v1.7.3",
      "source": "github"
    }
  ]
}

Fields:

  • name: Library name (creates bin/openscad/libraries/{name}/)
  • repository: GitHub repository in owner/repo format
  • version: Git tag, commit SHA, or branch name
  • source: Currently only "github" is supported

Directory Structure

After running scadm, your project will have:

your-project/
├── scadm.json
├── models/
│   └── your_model.scad
└── bin/openscad/
    ├── openscad.exe (or openscad appimage)
    └── libraries/
        ├── BOSL2/
        └── homeracker/

Use in OpenSCAD Files

include <BOSL2/std.scad>
include <homeracker/core/lib/connector.scad>

// Your code here

Renovate Integration

Keep your scadm.json dependencies automatically updated with Renovate:

Add this preset to your renovate.json:

{
  "extends": [
    "github>kellerlabs/homeracker:renovate-dependencies"
  ]
}

This preset enables automatic updates for:

  • Git commit SHAs (for tracking main/master branches)
  • Semantic version tags (v1.2.3)

License

MIT

Contributing

Issues and pull requests are welcome at kellerlabs/homeracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scadm-0.4.9.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scadm-0.4.9-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file scadm-0.4.9.tar.gz.

File metadata

  • Download URL: scadm-0.4.9.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scadm-0.4.9.tar.gz
Algorithm Hash digest
SHA256 ae536a47027e36cbdfcb90842be3ee2e3ee187fa1877e83538637c02a79f56c2
MD5 98eadf3b4f9cd8d1193e89f70f54e484
BLAKE2b-256 720157034a8998289c8bbe95428a541d9156d6fac3a0c51bcb391a0d875b37ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for scadm-0.4.9.tar.gz:

Publisher: publish-scadm.yml on kellerlabs/homeracker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scadm-0.4.9-py3-none-any.whl.

File metadata

  • Download URL: scadm-0.4.9-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for scadm-0.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 cfe9882f5bd7462e241dbce352ed578e83109e71420a300c5ea2aa333f6f0762
MD5 6ea1a9f3006152aca221a94564701df3
BLAKE2b-256 648203ec393d5c12f9ebfb6b57ac09c96f7223c5a7350ac96f8b77f64c16754d

See more details on using hashes here.

Provenance

The following attestation bundles were made for scadm-0.4.9-py3-none-any.whl:

Publisher: publish-scadm.yml on kellerlabs/homeracker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page