Tutorial - SUP Language

# Tiny App Tutorial: Todo CLI

In this tutorial we’ll build a tiny Todo CLI in SUP that supports adding, listing, and completing items.

## Prerequisites

- Install SUP: `pip install sup-lang`

## Project setup

Create `todo.sup`:

    sup
      note Initialize an empty list (grammar requires at least one item)
      make list of 0
      set todos to the list
      pop from todos

      define function called add with text
        push text to todos
        print concat of "Added: " and text
      end function

      define function called list
        for each item in todos
          print item
        end for
      end function

      define function called done with index
        note convert 1-based to 0-based
        set n to subtract 1 from index
        print concat of "Done: " and get n from todos
      end function

      # Simple router using args
      set cmd to args get of 0
      if cmd is equal to "add" then
        set text to args get of 1
        call add with text
      else if cmd is equal to "list" then
        call list
      else if cmd is equal to "done" then
        set idx to args get of 1
        call done with idx
      else
        print "Usage: sup todo.sup [add TEXT|list|done INDEX]"
      end if
    bye

## Run

    sup todo.sup add "buy milk"
    sup todo.sup add "write code"
    sup todo.sup list
    sup todo.sup done 1

## Going further

- Persist to disk: use `write file of PATH and DATA` and `read file of PATH` with `json stringify/parse`.
- Packaging: transpile to Python and wrap with a launcher script.

« Previous Next »