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 |
|
24 | var express = require('express')
|
25 | var fs = require('fs')
|
26 | var path = require('path')
|
27 | var mosaic = require('../lib/mosaic')
|
28 |
|
29 |
|
30 | var app = express()
|
31 |
|
32 | app.use(express.logger())
|
33 | app.use(express.favicon())
|
34 | app.use(app.router)
|
35 |
|
36 |
|
37 | var cwd = process.cwd()
|
38 |
|
39 | if (path.basename(cwd) === 'mosaics') {
|
40 | require('../lib/server/mosaics')(app)
|
41 | }
|
42 | else if (fs.existsSync(path.join(cwd, 'views/index.vm'))) {
|
43 | require('../lib/server/lego')(app)
|
44 | }
|
45 | else if (fs.existsSync(path.join(cwd, 'index.html'))) {
|
46 | require('../lib/server/plain')(app)
|
47 | }
|
48 |
|
49 |
|
50 | var spath = path.join(cwd, 'server.js')
|
51 | var port = process.argv[2]
|
52 |
|
53 | if (fs.existsSync(spath)) require(spath)(app)
|
54 |
|
55 | port = /^\d{4,5}$/.test(port) ? port : mosaic.config('port')
|
56 | mosaic.log('Listening on', port)
|
57 | app.listen(port).on('error', function(err) {
|
58 | mosaic.log('Cannot start server due to', err.code)
|
59 | }) |
\ | No newline at end of file |