var fd = use('fd') var js = use('js') var time = use('time') var qop = use('qop') var build_root = '.cell/build' log.console("Building scripts...") var now = time.number() var compiled_count = 0 var error_count = 0 function compile_file(src_path, dest_path, is_core) { try { var src_content if (is_core) { return } else { src_content = fd.slurp(src_path) } fd.mkdir(dest_path.substring(0, dest_path.lastIndexOf('/'))) var mod_name = src_path .replace(/\.(cm|ce)$/, '') .replace(/[\/\-.]/g, '_') var wrapped = '(function ' + mod_name + '(arg){' + src_content + '})' var compiled = js.compile(src_path, wrapped) var blob = js.compile_blob(compiled) fd.slurpwrite(dest_path, blob) compiled_count++ // log.console("Compiled " + src_path + " -> " + dest_path) } catch(e) { log.console(`Failed to compile ${src_path}: ${e.message}`); error_count++ } } // 1. Local files var local_files = fd.globfs(['**/*.cm', '**/*.ce', '!**/*.git', '!**/*.cell', '!**/subprojects'], '') for (var file of local_files) { var dest = build_root + '/local/' + file + '.o' compile_file(file, dest, false) } // 2. Modules var module_files = fd.globfs(['**/*.cm', '**/*.ce'], '.cell/modules') for (var file of module_files) { // file is relative to .cell/modules, e.g. "prosperon/draw2d.cm" var dest = build_root + '/modules/' + file + '.o' var src = '.cell/modules/' + file compile_file(src, dest, false) } log.console("Build complete: " + compiled_count + " files compiled in " + (time.number()-now) + " seconds") if (error_count > 0) { log.console(" " + error_count + " errors") } $_.stop()