generated from marked/CSSharpTemplate
Initial commit
This commit is contained in:
commit
a44fe0dbe0
20 changed files with 1237 additions and 0 deletions
69
lune/manager/setup.luau
Normal file
69
lune/manager/setup.luau
Normal file
|
@ -0,0 +1,69 @@
|
|||
--!strict
|
||||
local fs = require("@lune/fs")
|
||||
|
||||
local common = require("./common")
|
||||
local progress_bar = require("@pkg/progress")
|
||||
local result = require("@pkg/result")
|
||||
|
||||
local function setup(name: string, force: boolean): result.Identity<nil>
|
||||
local progress = progress_bar
|
||||
.new()
|
||||
:with_stage("init", "Initializing")
|
||||
:with_stage("prepare", "Cleaning up defaults")
|
||||
:with_stage("modify", "Replacing default names")
|
||||
:with_stage("generate", "Generating .sln")
|
||||
progress:start() -- init
|
||||
|
||||
if not fs.metadata(`{common.default_name}.sln`).exists and not force then
|
||||
progress:stop()
|
||||
return result(false, "Aborting -- the template is already set up.")
|
||||
end
|
||||
|
||||
progress:next_stage() -- prepare
|
||||
|
||||
fs.removeFile(`{common.default_name}.sln`)
|
||||
fs.removeFile(`PROJECT-SETUP.md`)
|
||||
|
||||
progress:next_stage() -- modify
|
||||
|
||||
fs.move(`src/{common.default_name}.cs`, `src/{name}.cs`)
|
||||
fs.move(`src/{common.default_name}.csproj`, `src/{name}.csproj`)
|
||||
|
||||
do
|
||||
local main_src = fs.readFile(`src/{name}.cs`)
|
||||
local edited_src = string.gsub(main_src, common.default_name, name)
|
||||
fs.writeFile(`src/{name}.cs`, edited_src)
|
||||
end
|
||||
|
||||
progress:next_stage() -- generate
|
||||
|
||||
do
|
||||
local res = common.spawn(`dotnet new sln --name {name}`)
|
||||
if not res.ok then
|
||||
return result(false, `Failed to create new sln:\n{res.err}`)
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local res = common.spawn("dotnet sln add src")
|
||||
if not res.ok then
|
||||
return result(false, `Failed to add src to sln:\n{res.err}`)
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local sln_src = fs.readFile(`{name}.sln`)
|
||||
local by_line = string.split(sln_src, "\n")
|
||||
for _ = 1, 3 do
|
||||
table.remove(by_line, 3)
|
||||
end
|
||||
local concated = table.concat(by_line, "\n")
|
||||
fs.writeFile(`{name}.sln`, concated)
|
||||
end
|
||||
|
||||
progress:stop() -- finish
|
||||
|
||||
return result(true, nil)
|
||||
end
|
||||
|
||||
return setup
|
Loading…
Add table
Add a link
Reference in a new issue