Version manager for Soppo. SOPMOD is entirely dogfooded and has been rewritten from Rust to Soppo, hence the "II".
SOPMOD handles installing, updating, and switching between multiple versions of Soppo. It also manages Go installations that Soppo uses internally for compilation, and automatically installs sopls (the Soppo Language Server) alongside each Soppo version.
curl -fsSL https://soppolang.dev/install.sh | shAfter installation, add ~/.sopmod/bin to your PATH:
export PATH="$HOME/.sopmod/bin:$PATH"# Install latest sop
sopmod install sop latest
# Install a specific version
sopmod install sop 0.4.1
# Update to latest
sopmod update sop
# Set default version
sopmod default 0.4.1
# List installed versions
sopmod list
# Remove a version
sopmod remove sop 0.4.0Pin a specific Soppo version for your project by adding to sop.mod:
sop = "0.4"When you run sop in a directory with a sop.mod file, SOPMOD automatically uses the pinned version. Version matching is flexible - sop = "0.4" will match any 0.4.x version installed.
Soppo compiles to Go, so it needs a Go installation. SOPMOD manages this automatically and when you set a default Soppo version, SOPMOD automatically installs and configures a compatible Go version. You can also pin a Go version in sop.mod:
go = "1.25"SOPMOD installs versions to ~/.sopmod/:
~/.sopmod/
config.toml # Default versions
bin/
sop # Shim that dispatches to correct version
sopls # Shim for the language server
go/
1.22.0/
1.23.0/
sop/
0.4.0/
sop
sopls
0.4.1/
sop
sopls
The sop and sopls binaries in ~/.sopmod/bin/ are shims that:
- Check for
sop.modin the current or parent directories - Use the pinned version if specified
- Fall back to the default version from
config.toml - Execute the appropriate binary
BSD 3-Clause. See LICENCE.