Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I03df3787081bde6ebf0366a24320307a6a6a6964
15 KiB
Pakker Command Reference
Complete reference for all Pakker commands.
Table of Contents
- Global Options
- Project Management
- Updates and Sync
- Project Configuration
- Export
- Configuration
- Remote Management
- Utilities
Global Options
All commands support these global flags:
-v, --verbose # Enable verbose output
-vv # Very verbose (debug level)
-vvv # Trace level logging
Examples:
pakker -v add sodium # Info logging
pakker -vv fetch # Debug logging
pakker -vvv export # Trace logging
Project Management
init
Initialize a new modpack project in the current directory.
Usage:
pakker init [OPTIONS]
Options:
-t, --target <TARGET>- Target platform (default: multiplatform)-m, --mc-version <VERSION>- Minecraft version (default: 1.20.1)-l, --loader <LOADER>- Mod loader (default: fabric)--loader-version <VERSION>- Specific loader version
Examples:
# Initialize Fabric 1.20.1 modpack
pakker init
# Initialize Forge 1.19.4 modpack
pakker init -m 1.19.4 -l forge
# Initialize with specific loader version
pakker init -l fabric --loader-version 0.15.0
# Initialize for CurseForge only
pakker init --target curseforge
Output:
Creates:
pakku.json- Configuration filepakku-lock.json- Lockfileoverrides/- Override directory
import
Import an existing modpack from CurseForge or Modrinth.
Usage:
pakker import <SOURCE>
Supported Formats:
- CurseForge ZIP files
- Modrinth .mrpack files
- Local directories with manifest
- Remote URLs
Examples:
# Import from local file
pakker import modpack.zip
pakker import pack.mrpack
# Import from URL
pakker import https://example.com/modpack.zip
# Import from directory
pakker import ./existing-modpack/
add
Interactively add projects to the modpack.
Usage:
pakker add <QUERY>...
Features:
- Interactive platform selection
- Automatic dependency resolution
- Fuzzy search with suggestions
- Version selection
Examples:
# Add single project
pakker add sodium
# Add multiple projects
pakker add sodium lithium phosphor
# Add with typo correction
pakker add sodum
# Suggests: Did you mean "sodium"?
add-prj
Add projects non-interactively with explicit platform specification.
Usage:
pakker add-prj [OPTIONS] <PROJECT>
Platform Options:
--cf, --curseforge <ID>- CurseForge project ID or slug--mr, --modrinth <ID>- Modrinth project ID or slug--gh, --github <REPO>- GitHub repository (format: owner/repo)
Property Options:
--type <TYPE>- Project type (mod, resourcepack, shader, modpack)--side <SIDE>- Project side (client, server, both)--strategy <STRATEGY>- Update strategy (latest, specific, pinned)--version <VERSION>- Specific version to use--redistributable <BOOL>- Allow redistribution (true/false)--subpath <PATH>- Custom subpath in mods directory--alias <NAME>- Project alias--export <BOOL>- Include in exports (true/false)
Control Options:
--yes, -y- Skip all confirmations--no-deps- Don't resolve dependencies
Examples:
# Add from Modrinth
pakker add-prj --mr sodium --yes
# Add from CurseForge
pakker add-prj --cf jei --yes
# Add from multiple platforms (creates unified project)
pakker add-prj --mr sodium --cf sodium --yes
# Add with custom properties
pakker add-prj --mr sodium --side client --strategy pinned --yes
# Add without dependencies (for CI)
pakker add-prj --mr fabric-api --yes --no-deps
# Add with alias
pakker add-prj --mr sodium --alias "sodium-mod" --yes
# Add GitHub release
pakker add-prj --gh "IrisShaders/Iris" --yes
CI/CD Usage:
#!/bin/bash
# Batch add mods
mods=(
"fabric-api"
"sodium"
"lithium"
"phosphor"
)
for mod in "${mods[@]}"; do
pakker add-prj --mr "$mod" --yes --no-deps || exit 1
done
# Resolve all dependencies at once
pakker update --yes
rm
Remove projects from the modpack.
Usage:
pakker rm <PROJECT>...
Examples:
# Remove single project
pakker rm sodium
# Remove multiple projects
pakker rm sodium lithium phosphor
# Remove with confirmation
pakker rm outdated-mod
ls
List all projects in the modpack.
Usage:
pakker ls [OPTIONS]
Options:
--type <TYPE>- Filter by type--side <SIDE>- Filter by side--platform <PLATFORM>- Filter by platform
Examples:
# List all projects
pakker ls
# List only mods
pakker ls --type mod
# List client-only projects
pakker ls --side client
# List CurseForge projects
pakker ls --platform curseforge
Output Format:
sodium (v0.5.0) - both - [CF, MR]
lithium (v0.11.2) - both - [CF, MR]
iris (v1.6.4) - client - [CF, MR]
inspect
View detailed information about projects including dependencies.
Usage:
pakker inspect [PROJECT]...
Features:
- Project metadata (name, version, platforms)
- File information (name, size, hashes)
- Dependency trees with visualization
- Circular dependency detection
- Property display
Examples:
# Inspect single project
pakker inspect sodium
# Inspect multiple projects
pakker inspect sodium lithium phosphor
# View modpack overview (no arguments)
pakker inspect
# Fuzzy matching with suggestions
pakker inspect sodum
# Suggests: Did you mean "sodium"?
Example Output:
Sodium v0.5.0
Type: mod
Side: client
Platforms: curseforge, modrinth
Files:
sodium-fabric-0.5.0+mc1.20.jar
Size: 2.3 MB
SHA1: abc123...
Dependencies:
└── fabric-api v0.87.0
└── fabric-loader >=0.14.0
Properties:
Redistributable: true
Update Strategy: latest
Export: true
Updates and Sync
update
Update projects to newer versions.
Usage:
pakker update [PROJECT]... [OPTIONS]
Options:
--yes, -y- Skip confirmations--all- Update all projects
Examples:
# Update specific project
pakker update sodium
# Update multiple projects
pakker update sodium lithium
# Update all projects
pakker update --all
# Update without confirmation (CI)
pakker update --all --yes
fetch
Download all project files.
Usage:
pakker fetch [OPTIONS]
Options:
--force- Re-download existing files
Examples:
# Fetch all files
pakker fetch
# Force re-download
pakker fetch --force
Output:
Fetching 42 files...
✓ sodium-fabric-0.5.0.jar (local)
✓ lithium-fabric-0.11.2.jar (download)
✓ fabric-api-0.87.0.jar (download)
...
sync
Update projects and fetch files in one command.
Usage:
pakker sync [OPTIONS]
Options:
--yes, -y- Skip confirmations
Examples:
# Sync everything
pakker sync
# Sync without confirmation
pakker sync --yes
Equivalent to:
pakker update --all --yes
pakker fetch
status
Check for available updates.
Usage:
pakker status
Examples:
pakker status
Example Output:
Updates available:
sodium: v0.5.0 → v0.5.1
lithium: v0.11.1 → v0.11.2
No updates:
fabric-api (v0.87.0)
iris (v1.6.4)
Project Configuration
set
Modify project properties.
Usage:
pakker set <PROJECT> [OPTIONS]
Options:
--type <TYPE>- Set project type--side <SIDE>- Set project side--strategy <STRATEGY>- Set update strategy--version <VERSION>- Set specific version (use with strategy=specific)--redistributable <BOOL>- Set redistributable flag--subpath <PATH>- Set custom subpath--alias <NAME>- Set project alias--export <BOOL>- Set export flag
Examples:
# Change project side
pakker set sodium --side client
# Pin to specific version
pakker set fabric-api --strategy specific --version 0.87.0
# Always update to latest
pakker set lithium --strategy latest
# Never update
pakker set custom-mod --strategy pinned
# Mark as non-redistributable
pakker set optifine --redistributable false
# Don't include in exports
pakker set dev-mod --export false
# Set custom subpath
pakker set performance-mod --subpath "mods/performance/"
link
Link projects together (define relationships).
Usage:
pakker link <PROJECT> <TARGET>
Examples:
# Link projects
pakker link sodium fabric-api
unlink
Remove project links.
Usage:
pakker unlink <PROJECT> <TARGET>
Examples:
# Unlink projects
pakker unlink sodium fabric-api
Export
export
Export modpack for distribution.
Usage:
pakker export [OPTIONS]
Options:
--profile <PROFILE>- Export profile (curseforge, modrinth, serverpack, or custom)-o, --output <PATH>- Output file path
Built-in Profiles:
curseforge- CurseForge ZIP format with manifest.jsonmodrinth- Modrinth .mrpack formatserverpack- Server-optimized pack (no client-only mods)
Examples:
# Export for CurseForge
pakker export --profile curseforge
# Export for Modrinth
pakker export --profile modrinth
# Export with custom output path
pakker export --profile curseforge -o dist/modpack-v1.0.0.zip
# Export server pack
pakker export --profile serverpack -o server.zip
# Export all formats
pakker export --profile curseforge -o dist/cf.zip
pakker export --profile modrinth -o dist/mr.mrpack
pakker export --profile serverpack -o dist/server.zip
Profile Configuration:
Configure profiles in pakku.json:
{
"exportProfiles": {
"curseforge": {
"filterPlatform": "curseforge",
"includeNonRedistributable": false
},
"production": {
"filterPlatform": "modrinth",
"overrides": ["overrides", "prod-config"]
}
}
}
See EXPORT_PROFILES.md for complete documentation.
Configuration
cfg
Configure modpack properties.
Usage:
pakker cfg [OPTIONS]
Options:
--name <NAME>- Set modpack name--version <VERSION>- Set modpack version--description <TEXT>- Set description--author <NAME>- Set author
Examples:
# Set modpack name
pakker cfg --name "My Awesome Pack"
# Set version
pakker cfg --version "1.0.0"
# Set multiple properties
pakker cfg --name "Performance Pack" --author "YourName" --version "2.0.0"
credentials
Manage platform API credentials.
Usage:
# View credentials
pakker credentials
# Set credentials
pakker credentials set --curseforge <KEY>
pakker credentials set --modrinth <TOKEN>
# Remove credentials
pakker credentials remove --curseforge
pakker credentials remove --modrinth
Examples:
# Set CurseForge API key
pakker credentials set --curseforge $CF_API_KEY
# Set Modrinth token
pakker credentials set --modrinth $MR_TOKEN
# View current credentials
pakker credentials
# Remove CurseForge key
pakker credentials remove --curseforge
Credential Storage:
Credentials are stored securely:
- System keyring (if available)
- Pakker credentials file (encrypted)
- Environment variables
Benefits:
- Higher API rate limits
- Access to private/early-access mods
- Faster downloads
- Better error messages
Remote Management
remote
Manage Git remote repositories for modpack configuration.
Usage:
# Add remote
pakker remote add <NAME> <URL>
# List remotes
pakker remote list
# Remove remote
pakker remote remove <NAME>
Examples:
# Add origin remote
pakker remote add origin https://github.com/user/modpack.git
# Add upstream
pakker remote add upstream https://github.com/original/modpack.git
# List all remotes
pakker remote list
# Remove remote
pakker remote remove origin
remote-update
Pull modpack configuration updates from remote Git repository.
Usage:
pakker remote-update [REMOTE]
Examples:
# Update from default remote
pakker remote-update
# Update from specific remote
pakker remote-update upstream
# Update and sync
pakker remote-update && pakker sync
fork
Manage fork configuration.
Usage:
pakker fork [OPTIONS]
Options:
--ref <REF>- Set fork reference (branch, tag, commit)--type <TYPE>- Set reference type
Examples:
# Fork from branch
pakker fork --ref main --type branch
# Fork from tag
pakker fork --ref v1.0.0 --type tag
# Fork from commit
pakker fork --ref abc1234 --type commit
Utilities
diff
Show differences between local and remote modpack configuration.
Usage:
pakker diff [REMOTE]
Examples:
# Show diff with default remote
pakker diff
# Show diff with specific remote
pakker diff upstream
# Show diff in detail
pakker -v diff
Example Output:
Changes in remote:
+ sodium v0.5.1 (added)
- old-mod v1.0.0 (removed)
~ lithium v0.11.1 → v0.11.2 (updated)
Local changes:
+ custom-mod v1.0.0 (added)
Common Patterns
CI/CD Pipeline
#!/bin/bash
set -e
# Add projects non-interactively
pakker add-prj --mr fabric-api --yes --no-deps
pakker add-prj --mr sodium --yes --no-deps
pakker add-prj --mr lithium --yes --no-deps
# Resolve dependencies
pakker update --all --yes
# Fetch files
pakker fetch
# Export for all platforms
pakker export --profile curseforge -o dist/curseforge.zip
pakker export --profile modrinth -o dist/modrinth.mrpack
pakker export --profile serverpack -o dist/server.zip
Batch Updates
# Update all projects
pakker update --all --yes
# Fetch new versions
pakker fetch
# Export updated pack
pakker export --profile modrinth -o updated-pack.mrpack
Platform Migration
# Add projects from new platform
pakker add-prj --mr sodium --cf sodium --yes
pakker add-prj --mr lithium --cf lithium --yes
# Export for both platforms
pakker export --profile curseforge -o cf-pack.zip
pakker export --profile modrinth -o mr-pack.mrpack
Environment Variables
Credentials
export CURSEFORGE_API_KEY="your-key"
export MODRINTH_TOKEN="your-token"
Verbosity
export PAKKER_LOG=debug # or info, warn, error
Cache
export PAKKER_CACHE_DIR="$HOME/.cache/pakker"
Exit Codes
0- Success1- General error2- Invalid arguments3- Project not found4- Network error5- File system error