2022-10-24 19:51:26 +08:00
import { path } from "../server/deps.ts" ;
import { HttpServer } from "../server/http_server.ts" ;
import assetBundle from "../dist/asset_bundle.json" assert { type : "json" } ;
import { AssetBundle , AssetJson } from "../plugos/asset_bundle/bundle.ts" ;
export function serveCommand ( options : any , folder : string ) {
const pagesPath = path . resolve ( Deno . cwd ( ) , folder ) ;
2022-12-16 20:00:06 +08:00
const hostname = options . hostname || "127.0.0.1" ;
2022-10-24 19:51:26 +08:00
const port = options . port || 3000 ;
2023-01-13 22:41:29 +08:00
const bareMode = options . bare ;
2022-10-24 19:51:26 +08:00
console . log (
2023-01-16 23:45:55 +08:00
"Going to start SilverBullet binding to" ,
2022-12-04 13:24:06 +08:00
` ${ hostname } : ${ port } ` ,
2022-10-24 19:51:26 +08:00
) ;
2022-12-16 20:00:06 +08:00
console . log ( "Serving pages from" , pagesPath ) ;
if ( hostname === "127.0.0.1" ) {
console . log (
2023-05-07 15:54:01 +08:00
` _Note:_ SilverBullet will only be available locally (via http://localhost: ${ port } ), to allow outside connections, pass --hostname 0.0.0.0 as a flag. ` ,
2022-12-16 20:00:06 +08:00
) ;
}
2022-10-24 19:51:26 +08:00
const httpServer = new HttpServer ( {
2022-12-04 13:24:06 +08:00
hostname ,
2022-10-24 19:51:26 +08:00
port : port ,
pagesPath : pagesPath ,
2022-11-26 21:15:38 +08:00
dbPath : path.join ( pagesPath , options . db ) ,
2022-10-24 19:51:26 +08:00
assetBundle : new AssetBundle ( assetBundle as AssetJson ) ,
2022-12-05 19:14:21 +08:00
user : options.user ,
2023-01-13 22:41:29 +08:00
bareMode ,
2022-10-24 19:51:26 +08:00
} ) ;
httpServer . start ( ) . catch ( ( e ) = > {
2022-11-25 20:08:59 +08:00
console . error ( "HTTP Server error" , e ) ;
Deno . exit ( 1 ) ;
2022-10-24 19:51:26 +08:00
} ) ;
}