#! /usr/bin/env lua function string:ends_with(str) return self:sub(#self - #str + 1, #self) == str end local commands = { ["batcat"] = {".c", ".cpp", ".h", ".hpp", ".lua", ".rb", ".java", ".xml", ".html", ".py", ".go", ".asm", ".php", ".rs", ".sh", ".diff", ".patch", ".js", ".css", "Makefile", ".basrc", ".bash_aliases", ".zshrc"}, ["~/.local/kitty.app/bin/kitty +kitten icat"] = {".png", ".jpg", ".jpeg", ".gif", ".svg"}, ["lolcat"] = {".txt"}, } function get_command(file) for cmd, endings in pairs(commands) do for _, ending in pairs(endings) do if file:ends_with(ending) then return cmd end end end return "/bin/cat" end for _, file in ipairs(arg) do os.execute(get_command(file) .. " \"" .. file .. "\"", "r") end