mise.toml

  1min_version = "2026.2.4"
  2
  3[vars]
  4platform = "emery"
  5screenshot = "screenshot_emery.png"
  6python_version = "3.13"
  7pebble_tool_version = "5.0.37"
  8pebble_tool_python = "{{env.HOME}}/.local/share/mise/installs/pipx-pebble-tool/{{vars.pebble_tool_version}}/pebble-tool/bin/python"
  9app_icons_script = "{{env.HOME}}/.agents/skills/pebble-watchface/scripts/create_app_icons.py"
 10preview_gif_script = "{{env.HOME}}/.agents/skills/pebble-watchface/scripts/create_preview_gif.py"
 11
 12[tools]
 13node = "22"
 14"aqua:tamasfe/taplo" = "0.10.0"
 15"npm:prettier" = "3.8.1"
 16"pipx:pebble-tool" = { version = "{{vars.pebble_tool_version}}", uvx_args = "--python {{vars.python_version}}" }
 17
 18[tasks.fmt]
 19description = "Format C, PebbleKit JS, JSON, Markdown, and TOML"
 20run = ["mise run c:fmt", "mise run prettier:fmt", "mise run toml:fmt"]
 21
 22[tasks.lint]
 23description = "Check formatting"
 24run = ["mise run c:lint", "mise run prettier:lint", "mise run toml:lint"]
 25
 26[tasks.fix]
 27description = "Format and run lightweight checks"
 28run = ["mise run fmt", "mise run lint"]
 29
 30[tasks.build]
 31description = "Build the Pebble PBW"
 32run = "pebble build"
 33
 34[tasks.check]
 35description = "Format, lint, and build without requiring an emulator"
 36run = ["mise run fix", "mise run build"]
 37
 38[tasks.clean]
 39description = "Remove Pebble build artifacts"
 40run = "pebble clean"
 41
 42[tasks."c:fmt"]
 43description = "Format Pebble C code"
 44run = "clang-format -i src/c/main.c"
 45
 46[tasks."c:lint"]
 47description = "Check Pebble C formatting"
 48run = "clang-format --dry-run --Werror src/c/main.c"
 49
 50[tasks."prettier:fmt"]
 51description = "Format JS, JSON, and Markdown"
 52run = "prettier --trailing-comma none --write README.md PRODUCT.md package.json src/pkjs/index.js"
 53
 54[tasks."prettier:lint"]
 55description = "Check JS, JSON, and Markdown formatting"
 56run = "prettier --trailing-comma none --check README.md PRODUCT.md package.json src/pkjs/index.js"
 57
 58[tasks."toml:fmt"]
 59description = "Format TOML"
 60run = "taplo fmt mise.toml"
 61
 62[tasks."toml:lint"]
 63description = "Check TOML formatting"
 64run = "taplo fmt --check mise.toml"
 65
 66[tasks.size]
 67description = "Analyze Pebble app ELF size"
 68depends = ["build"]
 69run = "pebble analyze-size build/{{vars.platform}}/pebble-app.elf"
 70
 71[tasks.install]
 72description = "Install the app in the Pebble emulator"
 73depends = ["build"]
 74run = "pebble install --emulator {{vars.platform}}"
 75
 76[tasks."emu:config"]
 77description = "Open the app-provided config page in the Pebble emulator"
 78run = "pebble emu-app-config --emulator {{vars.platform}}"
 79
 80[tasks."install:cloudpebble"]
 81description = "Install the app on a paired device through CloudPebble"
 82depends = ["build"]
 83run = "pebble install --cloudpebble"
 84
 85[tasks.screenshot]
 86description = "Capture an emulator screenshot"
 87run = "pebble screenshot --no-open --emulator {{vars.platform}} {{vars.screenshot}}"
 88
 89[tasks.logs]
 90description = "Stream emulator logs"
 91run = "pebble logs --emulator {{vars.platform}}"
 92
 93[tasks."emu:up"]
 94description = "Press the emulator up button"
 95run = "pebble emu-button click up --emulator {{vars.platform}}"
 96
 97[tasks."emu:select"]
 98description = "Press the emulator select button"
 99run = "pebble emu-button click select --emulator {{vars.platform}}"
100
101[tasks."emu:down"]
102description = "Press the emulator down button"
103run = "pebble emu-button click down --emulator {{vars.platform}}"
104
105[tasks."emu:back"]
106description = "Long-press the emulator back button"
107run = "pebble emu-button click back --duration 2000 --emulator {{vars.platform}}"
108
109[tasks.icons]
110description = "Generate app icons from the current emulator screenshot"
111run = "{{vars.pebble_tool_python}} {{vars.app_icons_script}} ."
112
113[tasks.gif]
114description = "Generate an emulator preview GIF"
115run = "{{vars.pebble_tool_python}} {{vars.preview_gif_script}} . --frames 8 --delay 400"