local lib = dofile('scripts/target_lib.lua')
local env = lib.env

assert(env.GLUON_IMAGEDIR)


local target = arg[1]

lib.include(target)


local function strip(s)
	return string.gsub(s, '\n$', '')
end

local function generate_line(model, dir, filename, filesize)
	local exists = pcall(lib.exec, {'test', '-e', dir..'/'..filename})
	if not exists then
		return
	end

	local file256sum = strip(lib.exec_capture {'scripts/sha256sum.sh', dir..'/'..filename})

	io.stdout:write(string.format('%s %s %s %s %s\n', model, env.GLUON_RELEASE, file256sum, filesize, filename))
end

local function generate(image)
	local dir, filename = image:dest_name(image.image)
	local exists = pcall(lib.exec, {'test', '-e', dir..'/'..filename})
	if not exists then
		return
	end

	local filesize = strip(lib.exec_capture {'scripts/filesize.sh', dir..'/'..filename})

	generate_line(image.image, dir, filename, filesize)

	for _, alias in ipairs(image.aliases) do
		local aliasdir, aliasname = image:dest_name(alias)
		generate_line(alias, aliasdir, aliasname, filesize)
	end

	for _, alias in ipairs(image.manifest_aliases) do
		generate_line(alias, dir, filename, filesize)
	end
end

for _, images in pairs(lib.images) do
	for _, image in ipairs(images) do
		if image.subdir == 'sysupgrade' then
			generate(image)
		end
	end
end