import "datetime"
import "fmt"
import "os"

# Re-runs the command every second, but the output of the calculation
# ($now / 10) % 10 is the same for 10 seconds in a row.
#
# The value of $n over time looks like this:
#
#	[...]
#	8
#	[10 seconds pause]
#	9
#	[10 seconds pause]
#	0
#	[10 seconds pause]
#	1
#	[10 seconds pause]
#	2
#	[...]
$n = os.system(fmt.printf("echo \"(%d / 10) %% 10\" | bc", datetime.now()))

# Re-runs the command every 10 seconds, when $n changes. Produces a str for
# every line that the command outputs, which happens to be every $n seconds.
#
# The value of $i over time looks like this:
#
#	[...]
#	108
#	[8 seconds pause]
#	208
#	[10 - 8 = 2 seconds pause, aborts and restarts]
#	109
#	[9 seconds pause]
#	209
#	[10 - 9 = 1 second pause, aborts and restarts]
#	100
#	200
#	300
#	done
#	double done
#	[10 - 0 - 0 - 0 = 10 seconds pause, restarts]
#	101
#	[1 second pause]
#	201
#	[1 second pause]
#	301
#	[1 second pause]
#	done
#	double done
#	[10 - 1 - 1 - 1 = 7 seconds pause, restarts]
#	102
#	[2 seconds pause]
#	202
#	[2 seconds pause]
#	302
#	[2 seconds pause]
#	done
#	double done
#	[10 - 2 - 2 - 2 = 4 seconds pause, restarts]
#	[...]
$i = os.system(fmt.printf("for x in `seq 3`; do echo \"100 * $x + %s\" | bc; sleep %s; done; echo done; echo double done", $n, $n))

# The anotherstr field is updated every time $i changes, however when such a
# field changes several times in quick succession, the resource is only
# guaranteed to be ran for the last value. Thus, it is likely that the "done"
# values will not be printed.
test "out" {
	anotherstr => $i,
}
