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"
 73run = "pebble install --emulator {{vars.platform}}"
 74
 75[tasks."emu:config"]
 76description = "Open the app-provided config page in the Pebble emulator"
 77run = "pebble emu-app-config --emulator {{vars.platform}}"
 78
 79[tasks."install:cloudpebble"]
 80description = "Install the app on a paired device through CloudPebble"
 81run = "pebble install --cloudpebble"
 82
 83[tasks.screenshot]
 84description = "Capture an emulator screenshot"
 85run = "pebble screenshot --no-open --emulator {{vars.platform}} {{vars.screenshot}}"
 86
 87[tasks.logs]
 88description = "Stream emulator logs"
 89run = "pebble logs --emulator {{vars.platform}}"
 90
 91[tasks."emu:up"]
 92description = "Press the emulator up button"
 93run = "pebble emu-button click up --emulator {{vars.platform}}"
 94
 95[tasks."emu:select"]
 96description = "Press the emulator select button"
 97run = "pebble emu-button click select --emulator {{vars.platform}}"
 98
 99[tasks."emu:down"]
100description = "Press the emulator down button"
101run = "pebble emu-button click down --emulator {{vars.platform}}"
102
103[tasks."emu:back"]
104description = "Long-press the emulator back button"
105run = "pebble emu-button click back --duration 2000 --emulator {{vars.platform}}"
106
107[tasks.icons]
108description = "Generate app icons from the current emulator screenshot"
109run = "{{vars.pebble_tool_python}} {{vars.app_icons_script}} ."
110
111[tasks.gif]
112description = "Generate an emulator preview GIF"
113run = "{{vars.pebble_tool_python}} {{vars.preview_gif_script}} . --frames 8 --delay 400"