local component = require "component" local tA = {...} local fdisk = {} local addr = component.get(table.remove(tA, 1)) assert(addr, "drive not found") local cmd = table.remove(tA, 1) or "show" function fdisk.show() local ts = component.invoke(addr, component.type(addr) == "tape_drive" and "getSize" or "getCapacity") local cs = ts / 512 print(string.format("Drive %s - %iKiB, %0.0f sectors:", addr:sub(1,8), ts//1024,cs)) print(" # Name Type Start Len End") for k,v in ipairs(require("diskpart").getPartitions(addr)) do print(string.format("%2i: %-20s %4s %5i %5i %5i",k,v[1],v[2],v[3],v[4],(v[3] + v[4])-1)) end end function fdisk.del(i) local pt = require("diskpart").getPartitions(addr) table.remove(pt, tonumber(i)) require("diskpart").setPartitions(addr, pt) fdisk.show() end function fdisk.set(id, name, ftype, start, len) local pt = require("diskpart").getPartitions(addr) pt[tonumber(id)] = {name, ftype, tonumber(start), tonumber(len)} require("diskpart").setPartitions(addr, pt) fdisk.show() end function fdisk.add(name, ftype, start, len) fdisk.set(#require("diskpart").getPartitions(addr)+1, name, ftype, start, len) end assert(fdisk[cmd], "unknown command") fdisk[cmd](table.unpack(tA))