Skip to content

Instantly share code, notes, and snippets.

@AMD-NICK
Last active February 16, 2021 23:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AMD-NICK/06f8bfe3bee1eac6e9effa72ba195fe7 to your computer and use it in GitHub Desktop.
Save AMD-NICK/06f8bfe3bee1eac6e9effa72ba195fe7 to your computer and use it in GitHub Desktop.
Strips comments and convert glua script into single line file
local pat_mcomment_lua = "(%-%-%[(=*)%[.-%]%2%])"
local pat_mcomment_cpp = "(/%*.-%*/)"
local function stripMultiline(content)
return content
:gsub(pat_mcomment_lua, "")
:gsub(pat_mcomment_cpp, "")
end
-- https://img.qweqwe.ovh/1556969630528.png
-- #TODO shitcoded heavy function
local pat_scomment_lua = "(%-%-[^\n]*)"
local pat_scomment_cpp = "[^:?](//[^\n]*)"
local function stripSingleline(content)
local str = ""
for _,line in ipairs(content:Split("\n")) do
if string.sub(line, 1, 2) == '//' then line = '' end
str = str .. line
:gsub(pat_scomment_lua, "")
:gsub(pat_scomment_cpp, "") .. "\n"
end
return str
end
local function removeComments(content)
local a = stripMultiline(content)
local b = stripSingleline(a)
return b
end
local function removeUselessNewlines(content) -- compresses code
local res = ""
content:gsub("[^\n]+", function(line)
if line:match("^%s*(.-)%s*$") ~= "" then
res = res .. line:TrimRight() .. "\n" -- Trim даже слева табы уберет
end
end)
return res
end
-- Use only after removing comments
local function multilineToSingle(content)
return content:gsub("%c+", " "):TrimRight()
end
local function cleanupCode(content)
local no_comments = removeComments(content)
local no_extra_newlines = removeUselessNewlines(no_comments)
return no_extra_newlines
end
local function minifyFile(path, realm)
local content = file.Read(path, realm) -- original
local clear = cleanupCode(content) -- without comments, trailing spaces and unecessary newlines
local single = multilineToSingle(clear) -- 1 line file
return single or clear
end
local function minifyAndSave(path, realm, save_to)
local minified = minifyFile(path, realm)
local destination = save_to .. "/" .. path:match("^addons/[^/]+/lua/(.+)$"):Replace(".lua", ".txt") -- gmod can't save with .lua ext
file.AdvWrite(destination, minified)
end
local function minifyFolder(path, realm, save_to)
local files = file.Index(path, realm)
for _,file_path in ipairs(files) do
minifyAndSave(file_path, realm, save_to)
end
end
-- local HEADER = "-- You don't have permissions to use this code without a permit of admin@trigon.im\n-- TRIGON.IM 2018 (c)\n"
local dest_path = "igs/" .. IGS.Version
-- file.DeleteDir(dest_path)
-- minifyFolder("addons/wip-ingameshop/lua/igs_orig", "MOD", dest_path) -- find . -name "*.txt" -exec rename 's/\.txt$/.lua/' '{}' \;
-- minifyAndSave("addons/wip-ingameshop/lua/igs/apinator.lua", "MOD", dest_path)
@AMD-NICK
Copy link
Author

AMD-NICK commented May 4, 2019

Rename all .txt files to .lua recursively (useful for post-processing)

find . -name "*.txt" -exec rename 's/\.txt$/.lua/' '{}' \;

@AMD-NICK
Copy link
Author

AMD-NICK commented May 4, 2019

image

@AMD-NICK
Copy link
Author

shell command to get latest release from github
https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c

get_latest_release() {
  curl --silent "https://api.github.com/repos/$1/releases/latest" | # Get latest release from GitHub api
    grep '"tag_name":' |                                            # Get tag line
    sed -E 's/.*"([^"]+)".*/\1/'                                    # Pluck JSON value
}

@AMD-NICK
Copy link
Author

GitHub Action workflow для проверки глуалинтом от FPtje
https://github.com/Cherry/3D2D-Textscreens/actions/runs/506423554/workflow

image

@AMD-NICK
Copy link
Author

Travis CI Workflow для упаковки кода в .gma архив
https://travis-ci.com/github/wiremod/advdupe2/jobs/482763437

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment