------------------------------------------------------------ --- cc-get version 0.1.1 --- Created by DJRanger --- --- This is very experimental, use at your own risk --- Install: --- Put this script and the cc-get-bin folder into your --- .minecraft/mods/ComputerCraft/lua/rom/programs/ folder --- ------------------------------------------------------------ VERSION = '0.1.1' if http == nil then print('Please enable the http api.') print('Look for enableAPI_http=0 in .minecraft/config/ and change the zero to a one and then restart Minecraft') return false end json = (loadfile("/mem/redworks/programs/cc-get-bin/dkjson.lua")()) shell.run('cc-get-bin/params.lua') shell.run('cc-get-bin/package.lua') params = parse_params({...}, {version = '-v *([^ ]+)'}) urlBase = 'http://cc-get.djranger.com/cc/' .. VERSION .. '/' local action = params[1] if not fs.exists('/bin') then fs.makeDir('/bin') fs.makeDir('/bin/lib') end if fs.exists('/bin/packages.json') then fs.makeDir('/bin/lib'); fs.move('/bin/packages.json', '/bin/lib/packages.json') end if not fs.exists('/bin/lib/packages.json') then file = fs.open('/bin/lib/packages.json', 'w') file.write('{"packages": {}, "installed": 0}') file.close() end local file = fs.open('/bin/lib/packages.json', 'r') data = json.decode(file:readAll()) file:close() function save_data() file = fs.open('/bin/lib/packages.json', 'w') file.write(json.encode(data)) file.close() end if not action then -- No params, show some info about the program shell.run('help', 'cc-get') elseif action == 'install' or action == 'remove' then name = params[2] if not name then print('Usage: cc-get ' .. action .. ' ') elseif action == 'install' then local status, package = Package.get(name, params.version) if status then local version = '' if params.version then version = ' version ' .. package.version end term.write('Really install ' .. name .. version .. '? y/n: ') answer = read() if answer:sub(0,1) == 'y' then status = package:install() if status == true then package.source = nil data.packages[ package.name ] = package print( package.name ..' version ' .. package.version .. ' installed' ) else pritn('Something went wrong installing ' .. package.name) end end else print(package) end elseif action == 'remove' then local status, package = Package.load( name ) if status then term.write('Really remove the package ' .. name .. '? y/n: ') answer = read() if answer:sub(0,1) == 'y' then package:uninstall() print('The ' .. package.name .. ' package has been removed') end else print(package) end end elseif action == 'update' then local qs = '' for name, info in pairs(data.packages) do qs = qs .. name .. ',' end qs = qs:sub(0, -2) result = json.decode( http.get(urlBase .. 'info/' .. qs).readAll() ) local updates = 0 for name, info in pairs(result) do if data.packages[ name ].timestamp < info.timestamp then -- Need to update print('Updating ' .. name .. ' from version ' .. data.packages[ name ].version .. ' to version ' .. info.version .. '...') status, package = Package.load(name) package:update() print( package.name .. ' updated ') updates = updates + 1 end end if updates == 0 then print('Nothing needs to be updated') end elseif action == 'list' then local i = 0 for name, info in pairs(data.packages) do print( name .. ' version ' .. info.version ) i = i + 1 end if i == 0 then print('No packages installed') end else print('Unknown command "' .. action .. '"') end save_data()