Files
Basalt2/minify.yml
Robert Jelic 65545d618e Test
2025-02-09 15:46:28 +01:00

119 lines
3.2 KiB
YAML

name: Minify Lua Code
on:
push:
branches:
- main
paths:
- 'src/**'
pull_request:
branches:
- main
paths:
- 'src/**'
jobs:
minify:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Lua
run: |
sudo apt-get update
sudo apt-get install -y lua5.3
- name: Minify Lua files
run: |
mkdir -p release
echo "Creating minification script..."
cat > minify_script.lua << 'EOL'
local minify = loadfile("minify.lua")()
local lfs = require("lfs")
local files = {}
local function scanDir(dir, baseDir)
baseDir = baseDir or ""
for file in lfs.dir(dir) do
if file ~= "." and file ~= ".." then
local fullPath = dir .. "/" .. file
local attr = lfs.attributes(fullPath)
if attr.mode == "directory" then
scanDir(fullPath, baseDir .. file .. "/")
elseif file:match("%.lua$") then
table.insert(files, {
path = baseDir .. file,
fullPath = fullPath
})
end
end
end
end
scanDir("src")
local output = {
'local minified = true\n',
'local project = {}\n',
'local baseRequire = require\n',
'require = function(path) return project[path] or baseRequire(path) end\n'
}
for _, file in ipairs(files) do
local f = io.open(file.fullPath, "r")
local content = f:read("*all")
f:close()
local success, minified = minify(content)
if not success then
print("Failed to minify " .. file.path)
print(minified)
os.exit(1)
end
table.insert(output, string.format(
'project["%s"] = function(...) %s end\n',
file.path, minified
))
end
table.insert(output, 'return project["main.lua"]')
local out = io.open("release/basalt.lua", "w")
out:write(table.concat(output))
out:close()
EOL
echo "Installing LuaFileSystem..."
sudo apt-get install -y lua-filesystem
echo "Running minification..."
if lua minify_script.lua; then
echo "Minification successful"
echo "Files processed:"
find src -name "*.lua" | sed 's|^src/||'
else
echo "Minification failed"
exit 1
fi
- name: Commit minified Lua file
if: success()
run: |
if [ -s release/basalt.lua ]; then
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add release/basalt.lua
git commit -m 'Minify all Lua files into project bundle'
git push
else
echo "Error: basalt.lua is empty or doesn't exist"
exit 1
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}