Advertisement
KnightMiner

[CC API] cfg

Nov 16th, 2015
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.97 KB | None | 0 0
  1. -- Configuration API version 2.0
  2.  
  3. --[[
  4. loads a file into a variable
  5. usage: cfg.load( string file, bool ext )
  6. * "file" determines the file to load
  7. * "ext" if true excludes adding ".cfg" to the end of the filename
  8. returns the file, or "false" and the failure reason ("invalid" or "missing") if it fails
  9. ]]
  10. function load( file, ext )
  11.   if not file then
  12.     error( 'Missing expected args' )
  13.     return
  14.   end
  15.   local ext = ext and '' or '.cfg'
  16.   local filename = file .. ext
  17.   if not fs.exists( filename ) then
  18.     return false, 'missing'
  19.   end
  20.   local file = fs.open( filename, 'r' )
  21.   local config = textutils.unserialize( file.readAll() )
  22.   file.close()
  23.   if not config then
  24.     return false, 'invalid'
  25.   end
  26.   return config
  27. end
  28.  
  29. --[[
  30. loads a file from a variable
  31. usage: cfg.save( string file, table config, bool ext )
  32. * "file" determines the file to save
  33. * "config" is the table to save into the file
  34. * "ext" if true excludes adding ".cfg" to the end of the filename
  35. returns true if suceeds
  36. ]]
  37. function save( file, config, ext )
  38.   if not file or not config then
  39.     error( 'Missing expected args' )
  40.     return
  41.   end
  42.   local ext = ext and '' or '.cfg'
  43.   local file = fs.open( file .. ext, 'w' )
  44.   file.write( textutils.serialize( config ) )
  45.   file.close()
  46.   return true
  47. end
  48.  
  49. --[[
  50. write a value to a config file as a key
  51. usage: cfg.save( string file, any line, any key, bool ext )
  52. * "file" determines the file to save
  53. * "line" is the variable to add to the file
  54. * "key" is the key to write it to
  55. * "ext" if true excludes adding ".cfg" to the end of the filename
  56. returns true if suceeds, or false if the file is invalid
  57. ]]
  58. function saveLine( file, line, key, ext )
  59.   if not file or not line or not key then
  60.     error( 'Missing expected args' )
  61.     return
  62.   end
  63.   local config, cfgError = load( file, ext )
  64.   config = config or {}
  65.   if cfgError == 'invalid' then
  66.     return false
  67.   end
  68.   config[key] = line
  69.   save( file, config, ext )
  70.   return true  
  71. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement