#!/usr/bin/env lua if select('#', ...) < 1 then print("syntax: reqs.lua file.jar < deps"); return end local s = select(1, ...) local g = {} local result = {} for line in io.stdin:lines() do local _,_, r, d = line:find"(.+) (.+)" g[r] = g[r] or {} table.insert(g[r], d) end function walk(v) for i, u in ipairs(g[v] or {}) do if not result[u] then print(u) result[u] = true walk(u) end end end walk(s)