cc-libs/programs/trapos-create-disk.lua
2026-06-15 21:42:16 +02:00

88 lines
2.4 KiB
Lua

local createInstallerDisk = require('/apis/libinstallerdisk');
local createVersion = require('/apis/libversion');
local function printUsage()
print('trapos-create-disk usage:');
print();
print('\t\ttrapos-create-disk --install');
print('\t\ttrapos-create-disk --reinstall');
print('\t\ttrapos-create-disk --uninstall');
print('\t\ttrapos-create-disk version');
print('\t\ttrapos-create-disk help');
end
local function printColored(msg, color)
if term.isColor and term.isColor() then
local previous = term.getTextColor();
term.setTextColor(color);
print(msg);
term.setTextColor(previous);
else
print(msg);
end
end
local rawArgs = table.pack(...);
if rawArgs.n == 1 and (rawArgs[1] == 'version' or rawArgs[1] == '-version' or rawArgs[1] == '--version') then
print('v' .. createVersion().forSelf());
return;
end
if rawArgs.n == 0 or (rawArgs.n == 1 and (rawArgs[1] == 'help' or rawArgs[1] == '-help' or rawArgs[1] == '--help')) then
printUsage();
return;
end
local mode = nil;
local parseError = nil;
local function selectMode(nextMode)
if mode and mode ~= nextMode then
parseError = 'choose only one disk mode';
else
mode = nextMode;
end
end
for i = 1, rawArgs.n do
local arg = rawArgs[i];
if arg == '--install' then
selectMode('install');
elseif arg == '--reinstall' then
selectMode('reinstall');
elseif arg == '--uninstall' then
selectMode('uninstall');
else
parseError = 'unknown argument: ' .. tostring(arg);
end
end
if parseError or not mode then
if parseError then printColored(parseError, colors.red); end
printUsage();
return;
end
local ok, result = createInstallerDisk().create({ mode = mode });
if not ok then
printColored(result, colors.red);
return;
end
printColored('=> TrapOS ' .. mode .. ' disk created on ' .. result.name .. '.', colors.lime);
print('Label: ' .. result.label);
if result.settingsCopied then
print('Cloned /.settings to ' .. fs.combine(result.mountPath, '.settings'));
elseif result.settingsWarning then
printColored('Warning: /.settings not found; install disk has no cloned settings.', colors.orange);
end
if mode == 'install' then
print('Insert this disk into a blank computer and reboot it.');
elseif mode == 'reinstall' then
print('Insert this disk into the target computer and reboot it to reinstall TrapOS.');
else
print('Insert this disk into the target computer and reboot it to remove TrapOS.');
end