119 lines
3.2 KiB
YAML
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("tools/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 }}
|