UNPKG

1.28 kBPlain TextView Raw
1#!/usr/bin/env node
2
3/*
4 * Start the mosaic server.
5 * The folder structure shall be:
6 *
7 * - mosaics
8 * - wangwang
9 * - dropdown
10 * - breadcrumb
11 *
12 * wangwang, dropdown, and breadcrumb shall be in version controlled in their
13 * own repositories, such as:
14 *
15 * - github.com/mosaics/wangwang
16 * - github.com/mosaics/dropdown
17 * - github.com/mosaics/breadcrumb
18 *
19 * To put a mosaic onto CDN, use `mo publish` command.
20 */
21
22"use strict";
23
24var express = require('express')
25var fs = require('fs')
26var path = require('path')
27var mosaic = require('../lib/mosaic')
28
29
30var app = express()
31
32app.use(express.logger())
33app.use(express.favicon())
34app.use(app.router)
35
36
37var cwd = process.cwd()
38
39if (path.basename(cwd) === 'mosaics') {
40 require('../lib/server/mosaics')(app)
41}
42else if (fs.existsSync(path.join(cwd, 'views/index.vm'))) {
43 require('../lib/server/lego')(app)
44}
45else if (fs.existsSync(path.join(cwd, 'index.html'))) {
46 require('../lib/server/plain')(app)
47}
48
49
50var spath = path.join(cwd, 'server.js')
51var port = process.argv[2]
52
53if (fs.existsSync(spath)) require(spath)(app)
54
55port = /^\d{4,5}$/.test(port) ? port : mosaic.config('port')
56mosaic.log('Listening on', port)
57app.listen(port).on('error', function(err) {
58 mosaic.log('Cannot start server due to', err.code)
59})
\No newline at end of file