Skip to content

Instantly share code, notes, and snippets.

@a327ex
Created August 21, 2015 20:25
Show Gist options
  • Save a327ex/4d5043c0bfd90b6b558b to your computer and use it in GitHub Desktop.
Save a327ex/4d5043c0bfd90b6b558b to your computer and use it in GitHub Desktop.
Auto-updater
local async = require('async')
function love.load(args)
async.load()
async.ensure.atLeast(2)
local version = nil
local version_request = async.define("version_request", function()
local request = require('luajit-request')
local response = request.send(link to the version file)
return response.body, response.code
end)
local game_request = async.define("game_request", function(version)
local request = require('luajit-request')
local response = request.send(link to the game using the version variable)
return response.body, response.code
end)
version_request(function(result, status)
if status == 200 then
version = getVersion(result) -- TODO: define getVersion
if not love.filesystem.isFile('game_' .. version .. '.love') then
game_request(function(result, status)
if status == 200 then
love.filesystem.write('game_' .. version .. '.love', result)
love.filesystem.mount('game_' .. version .. '.love', '')
package.loaded.main = nil
package.loaded.conf = nil
love.conf = nil
love.init()
love.load(args)
end
end)
else
love.filesystem.mount('game_' .. version .. '.love')
package.loaded.main = nil
package.loaded.conf = nil
love.conf = nil
love.init()
love.load(args)
end
end
end)
end
function love.update(dt)
async.update()
end
function love.draw()
end
@prust
Copy link

prust commented Apr 15, 2017

@adonaac: Thank you for putting this together! I used it on a project I'm working on & it failed because version wasn't supplied to game_request() like it is on the blog post, so I forked & added it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment