mirror of
https://github.com/0x5eal/terracotta.git
synced 2025-01-05 19:09:09 +00:00
feat(cmd): reduce init boilerplate in minify & bundle wrappers
This commit is contained in:
parent
0ff7bcd36c
commit
9b34155267
1 changed files with 51 additions and 50 deletions
101
darklua/cmd.luau
101
darklua/cmd.luau
|
@ -54,31 +54,7 @@ local function ProcessWhich(binName: string): { path: string?, warnings: { strin
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
Darklua.Type = "Darklua"
|
function __DarkluaInit(sourceKind: "code" | "path", source: string): { res: { string }?, error: string? }
|
||||||
|
|
||||||
Darklua.Interface = {}
|
|
||||||
Darklua.Prototype = {}
|
|
||||||
|
|
||||||
function Darklua.Prototype.ToString(self: DarkluaExtended): string
|
|
||||||
return string.format("%s<%s>", Darklua.Type, "Global")
|
|
||||||
end
|
|
||||||
|
|
||||||
function Darklua.Prototype.IsOk(self: DarkluaExtended): boolean
|
|
||||||
if self.darkluaPath and Fs.isFile(self.darkluaPath) then
|
|
||||||
local isExecutable = Process.spawn(self.darkluaPath, { "--help" }, { stdio = "default" }).ok
|
|
||||||
|
|
||||||
return isExecutable
|
|
||||||
end
|
|
||||||
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
function Darklua.Prototype.Process(
|
|
||||||
self: DarkluaExtended,
|
|
||||||
sourceKind: "code" | "path",
|
|
||||||
source: string,
|
|
||||||
configPath: string?
|
|
||||||
): { error: string?, processed: string? }
|
|
||||||
local sourcePath: string
|
local sourcePath: string
|
||||||
|
|
||||||
if sourceKind == "code" then
|
if sourceKind == "code" then
|
||||||
|
@ -109,6 +85,50 @@ function Darklua.Prototype.Process(
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- [1] => sourcePath
|
||||||
|
-- [2] => outFilePath
|
||||||
|
return {
|
||||||
|
res = { sourcePath, outFilePath },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
Darklua.Type = "Darklua"
|
||||||
|
|
||||||
|
Darklua.Interface = {}
|
||||||
|
Darklua.Prototype = {}
|
||||||
|
|
||||||
|
function Darklua.Prototype.ToString(self: DarkluaExtended): string
|
||||||
|
return string.format("%s<%s>", Darklua.Type, "Global")
|
||||||
|
end
|
||||||
|
|
||||||
|
function Darklua.Prototype.IsOk(self: DarkluaExtended): boolean
|
||||||
|
if self.darkluaPath and Fs.isFile(self.darkluaPath) then
|
||||||
|
local isExecutable = Process.spawn(self.darkluaPath, { "--help" }, { stdio = "default" }).ok
|
||||||
|
|
||||||
|
return isExecutable
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function Darklua.Prototype.Process(
|
||||||
|
self: DarkluaExtended,
|
||||||
|
sourceKind: "code" | "path",
|
||||||
|
source: string,
|
||||||
|
configPath: string?
|
||||||
|
): { error: string?, processed: string? }
|
||||||
|
local initOut = __DarkluaInit(sourceKind, source)
|
||||||
|
if initOut.error then
|
||||||
|
return {
|
||||||
|
error = initOut.error,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local paths = initOut.res :: { string }
|
||||||
|
|
||||||
|
local sourcePath = paths[1]
|
||||||
|
local outFilePath = paths[2]
|
||||||
|
|
||||||
local args = { "--config" }
|
local args = { "--config" }
|
||||||
|
|
||||||
if configPath and configPath ~= "" then
|
if configPath and configPath ~= "" then
|
||||||
|
@ -137,36 +157,17 @@ function Darklua.Prototype.Minify(
|
||||||
sourceKind: "code" | "path",
|
sourceKind: "code" | "path",
|
||||||
source: string
|
source: string
|
||||||
): { error: string?, minified: string? }
|
): { error: string?, minified: string? }
|
||||||
local sourcePath: string
|
local initOut = __DarkluaInit(sourceKind, source)
|
||||||
|
if initOut.error then
|
||||||
if sourceKind == "code" then
|
|
||||||
local ok, tmpFilePath = FsUtils.MakeTemp()
|
|
||||||
|
|
||||||
if not ok then
|
|
||||||
return {
|
|
||||||
error = "failed to create temporary file for darklua minification",
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
Fs.writeFile(tmpFilePath, source)
|
|
||||||
|
|
||||||
sourcePath = tmpFilePath
|
|
||||||
elseif sourceKind == "path" then
|
|
||||||
sourcePath = source
|
|
||||||
else
|
|
||||||
return {
|
return {
|
||||||
error = "invalid sourceKind provided",
|
error = initOut.error,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
local ok, outFilePath = FsUtils.MakeTemp()
|
local paths = initOut.res :: { string }
|
||||||
|
|
||||||
if not ok then
|
|
||||||
return {
|
|
||||||
error = "failed to create temporary file for darklua minification",
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
|
local sourcePath = paths[1]
|
||||||
|
local outFilePath = paths[2]
|
||||||
local darkluaChild = Process.spawn(self.darkluaPath, { "minify", sourcePath, outFilePath })
|
local darkluaChild = Process.spawn(self.darkluaPath, { "minify", sourcePath, outFilePath })
|
||||||
|
|
||||||
if not darkluaChild.ok then
|
if not darkluaChild.ok then
|
||||||
|
|
Loading…
Reference in a new issue