1
0
mirror of https://github.com/elua/elua.git synced 2025-01-08 20:56:17 +08:00
elua/utils/build_release.lua
2013-05-27 11:28:19 +03:00

48 lines
1.5 KiB
Lua

-- Script to build all the required files for a release
package.path = "utils/?.lua;config/?.lua;" .. package.path
require "lfs"
local utils = require "utils"
local args = { ... }
local rel = args[ 1 ] or "_temp"
-- Get the full list of boards
local boardnames = utils.string_to_table( utils.get_files( "boards/known", function( fname ) return fname:match( "%.lua$" ) end ) )
local boards = {}
utils.foreach( boardnames, function( k, v ) boards[ #boards + 1 ] = ( ( utils.split_ext( v:sub( #"boards/known/" + 1, -1 ) ) ) ) end )
local function docmd( cmd )
os.execute( cmd )
end
-- Now build all targets
utils.foreach( utils.string_to_table( utils.get_files( ".", function( fname ) return fname:match( "%.elf$" ) or fname:match( "%.hex" ) or fname:match( "%.bin$" ) end, true ) ),
function( _, name ) os.remove( name ) end )
utils.rmdir_rec( "dist" )
lfs.mkdir( "dist" )
for i = 1, #boards do
local b = boards[ i ]
print( utils.col_magenta( "Generating image for board " .. b .. " ... " ) )
local cmd = "lua build_elua.lua board=" .. b .. " output_dir=dist disp_mode=minimal prog"
docmd( cmd .. " -c" )
docmd( cmd )
print ""
end
-- Change names according to release number
for f in lfs.dir( "dist/" ) do
local attrs = lfs.attributes( "dist/" .. f )
if attrs.mode == "file" and f:find( "^elua_" ) then
if f:find( "%.elf$" ) then
if f ~= "elua_lua_pc.elf" then os.remove( "dist/" .. f ) end
else
local newname = f:gsub( "^elua_", "elua" .. rel .. "_" )
os.rename( "dist/" .. f, "dist/" .. newname )
end
end
end
print "Done"