#!/usr/bin/env esm import 'tagol' import 'colors' //import minimist from 'minimist' import express from 'express' global.express = express import morgan from 'morgan' import serveCors from './serve-cors' //import sstatic from 'serve-static' import serveIndex from 'serve-index' import { resolve } from 'path' export default async function({ 0: folder = '.' , h, help = h , p, port = p || 80 , s, statik = s , i, index = statik && ( i || true ) , c, cors = c , r, routes = r , v, verbose = v }) { log.verbose = (ss,...pp)=> verbose && log( ss,...pp ) var args = { help , port , statik , index , cors , routes , folder } /* console.log(args) return; //*/ help && log `Usage: express [options] path Options: -h, --help Show this help -p, --port Set the port to listen (default: 80) -s, --static=[folder] Serve static content. If true the folder used is '.' otherwise the given folder is used. -i, --index Generate index when a folder is requested -c, --cors -r, --routes=[path] Loads an express router module -v, --verbose Show additional informations ` help && process.exit() process.cwd( folder ) log.verbose `${args}o __dirname = ${__dirname}s process.cwd() = ${process.cwd()}s resolve(process.cwd(),folder) = ${resolve(process.cwd(),folder)}s ` const resolved = { static: resolve( folder, typeof statik == 'undefined' || statik === true ? '.' : statik ), routes: resolve( folder, typeof routes == 'undefined' || routes === true ? 'routes.js' : routes ), }, app = express() //app.engine('html', ejs.renderFile); //app.set('views', __dirname + '/views'); //app.use( bodyParser ) //app.use(express.cookieParser()); //app.use(express.methodOverride()); app.use( morgan('combined') ) //app.use(express.session({ secret: 'c0ns0l3F0r3v3r' })); //app.use(passport.initialize()); //app.use(passport.session()); //app.use( app.router ) cors && app.use( serveCors ) cors && log `using ${'CORS'.cyan}s` statik && app.use( express.static(resolved.static), index && serveIndex(resolved.static, {'icons': true, view: 'details'}) ) statik && log `Started static web server: ${resolved.static.cyan}s` index && log `generating ${'index'.cyan}s pages from folders` //console.log( (await import(resolved.routes)).default ) routes && app.use( '/', (await import(resolved.routes)).default ) routes && log `Routes file loaded: ${resolved.routes.cyan}s` app.listen( port ) log `Server listening on Port: ${(''+port).yellow}s` }