exec hof flow -t one=true
cmp stdout golden1.stdout

exec hof gen data.cue -T ':data=[]{{.g}}{{.h}}.json' -O data

exec hof flow flow.cue data/d4.json@native.IN
cmp stdout goldenD.stdout

exec hof flow flow.cue data/* -l '"bulk"' -l '"\(g)\(h)"' -F native -B bulk@IN
cmp stdout goldenN.stdout

-- data.cue --
package bulk

_x: ["a", "b", "c", "d"]
_y: ["1", "2", "3", "4", "5"]

data: _data1

_data1: {
	for _, x in _x for _, y in _y {
		"\(x)\(y)": {
			g: x
			h: y
		}
	}
}
-- flow.cue --
package bulk

import "strconv"

data: _

native: {
	@flow(native)

	one: bool | *false @tag(one,type=bool)
	if one {
		IN: data["a1"]
	}
	IN: {
		g: string
		h: =~#"\d+"#
	}

	OUT: {
		g: string
		h: int
		c: string
	}

	_pick: {
		@task(st.Pick)
		val: IN
		pick: {g: _}
	}

	_atoi: {
		num: strconv.Atoi(IN.h)
	}

	OUT: {
		@task(noop)
		@print()
		g: _pick.out.g
		h: _atoi.num
		c: "\(IN.g)\(IN.h)"
	}

}
-- golden1.stdout --
OUT: {
	g: "a"
	h: 1
	c: "a1"
}
-- goldenD.stdout --
OUT: {
	g: "d"
	h: 4
	c: "d4"
}
-- goldenN.stdout --
flowing "native" in bulk mode using 1 workers
>>> bulk.a1
OUT: {
	g: "a"
	h: 1
	c: "a1"
}

>>> bulk.a2
OUT: {
	g: "a"
	h: 2
	c: "a2"
}

>>> bulk.a3
OUT: {
	g: "a"
	h: 3
	c: "a3"
}

>>> bulk.a4
OUT: {
	g: "a"
	h: 4
	c: "a4"
}

>>> bulk.a5
OUT: {
	g: "a"
	h: 5
	c: "a5"
}

>>> bulk.b1
OUT: {
	g: "b"
	h: 1
	c: "b1"
}

>>> bulk.b2
OUT: {
	g: "b"
	h: 2
	c: "b2"
}

>>> bulk.b3
OUT: {
	g: "b"
	h: 3
	c: "b3"
}

>>> bulk.b4
OUT: {
	g: "b"
	h: 4
	c: "b4"
}

>>> bulk.b5
OUT: {
	g: "b"
	h: 5
	c: "b5"
}

>>> bulk.c1
OUT: {
	g: "c"
	h: 1
	c: "c1"
}

>>> bulk.c2
OUT: {
	g: "c"
	h: 2
	c: "c2"
}

>>> bulk.c3
OUT: {
	g: "c"
	h: 3
	c: "c3"
}

>>> bulk.c4
OUT: {
	g: "c"
	h: 4
	c: "c4"
}

>>> bulk.c5
OUT: {
	g: "c"
	h: 5
	c: "c5"
}

>>> bulk.d1
OUT: {
	g: "d"
	h: 1
	c: "d1"
}

>>> bulk.d2
OUT: {
	g: "d"
	h: 2
	c: "d2"
}

>>> bulk.d3
OUT: {
	g: "d"
	h: 3
	c: "d3"
}

>>> bulk.d4
OUT: {
	g: "d"
	h: 4
	c: "d4"
}

>>> bulk.d5
OUT: {
	g: "d"
	h: 5
	c: "d5"
}
