small pixel drawing of a pufferfish enby

example-config

# todo: consider var support
# todo: auto-fetch

# stored in /var/lib/wuji/artifact/???
object prometheus url https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz \
    extract prometheus promtool

action gobuild exec go build .

process fetch prometheus exec ./prometheus

wuji prometheus {
	fetch object prometheus every 60m
	exec ./prometheus
}

wuji j3s.sh {
	fetch artifact.prometheus
	exec go run .
}

wuji cake-timer {
	every 6m
	action send-email 
}

task prometheus {
	artifact url https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz
}















examples:

  task run my website {
      fetch https://git.j3s.sh/j3s.sh protocol git
      run go run .
  }
  watch /var/lib/sqlite.db

action blocks define actions - they're basically
little shell snippets.

you connect them by specifying actions
in your watch blocks.

this is very simple in concept, but incredibly
useful in practice.

# comments are shell-style

j3s = "https://git.j3s.sh/j3s.sh"
every 5m fetch j3s 

watch(3m) https://git.j3s.sh/j3s.sh
action go run .

wuji watch https://git.j3s.sh/j3s.sh every 5m action go-build

wuji fetch https://git.j3s.sh/j3s.sh every 5m
  > created wuji resource 


when resource.







# task params
#   fetch [url]: fetch resource from url
#   every [interval]: execute this task every $interval
#   exec 
#



# fetch params
#   changed: what to do if the remote file changes
binary j3s.sh {
	fetch https://git.j3s.sh/j3s.sh
	exec go build .
}

task run my website {
	require binary j3s.sh
	if binary j3s.sh changes restart task
	command j3s.sh
	env whatever
	args -one -two -three
}


fetch an artifact
run a process
when the fetched artifact changes, restart the process