Skip to content

Package Manifest

The package manifest file tooth.json defines a lip package.

Example

json
{
  "format_version": 3,
  "format_uuid": "289f771f-2c9a-4d73-9f3f-8492495a924d",
  "tooth": "github.com/user/repo",
  "version": "1.0.0",
  "info": {
    "name": "My Package",
    "description": "A short description",
    "tags": ["tool", "utility"],
    "avatar_url": "https://example.com/avatar.png"
  },
  "variants": [
    {
      "label": "",
      "platform": "win-x64",
      "dependencies": {
        "github.com/other/package": ">=1.0.0"
      },
      "assets": [
        {
          "type": "zip",
          "urls": ["https://example.com/release.zip"],
          "placements": [
            {
              "type": "dir",
              "src": "bin/",
              "dest": "bin/"
            }
          ]
        }
      ],
      "preserve_files": ["config/*.json"],
      "remove_files": ["temp/"],
      "scripts": {
        "pre_install": ["echo pre-install"],
        "post_install": ["echo post-install"],
        "pre_uninstall": ["echo pre-uninstall"],
        "post_uninstall": ["echo post-uninstall"]
      }
    }
  ]
}

Fields

Top-Level

FieldTypeRequiredDescription
format_versionintYesMust be 3.
format_uuidstringYesMust be "289f771f-2c9a-4d73-9f3f-8492495a924d".
toothstringYesPackage path. Must be a valid Go module path.
versionstringYesPackage version. Must be a valid semantic version.
infoobjectNoPackage metadata. See Info.
variantsarrayNoPackage variants. See Variant.

Info

FieldTypeDefaultDescription
namestring""Display name.
descriptionstring""Short description.
tagsstring[][]Tags. Each tag must match ^[a-z0-9-]+(:[a-z0-9-]+)?$.
avatar_urlstringnullAvatar image URL.

Variant

A variant defines platform-specific or labeled package configurations. When resolving a variant, lip merges all variants whose label and platform match (supports glob patterns).

FieldTypeDefaultDescription
labelstring""Variant label. Supports glob matching.
platformstring""Target platform (.NET RID). Empty matches all. Supports glob matching.
dependenciesobject{}Map of package ID to semver range.
assetsarray[]Asset definitions. See Asset.
preserve_filesstring[][]Glob patterns for files to preserve during uninstall.
remove_filesstring[][]Glob patterns for additional files to remove during uninstall.
scriptsobject{}Lifecycle scripts. See Scripts.

Asset

FieldTypeRequiredDescription
typestringYesArchive type: "self", "tar", "tgz", "uncompressed", or "zip".
urlsstring[]NoDownload URLs.
placementsarrayNoFile placement rules. See Placement.

Placement

FieldTypeRequiredDescription
typestringYes"file" or "dir".
srcstringYesSource path within the archive.
deststringYesDestination path relative to the workspace. Must not be absolute, rooted, or contain ...

Scripts

FieldTypeDefaultDescription
pre_installstring[][]Commands to run before installation.
post_installstring[][]Commands to run after installation.
pre_uninstallstring[][]Commands to run before uninstallation.
post_uninstallstring[][]Commands to run after uninstallation.