/*
Copyright (C) 2017  Cloudbase Solutions SRL
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import express from 'express'
import fs from 'fs'

// Create our app
const app = express()
const PORT = process.env.PORT || 3000

// Write file to disk with process env variables, so that the client code can read
if (!fs.existsSync('./dist')) {
  fs.mkdirSync('./dist')
}
fs.writeFileSync('./dist/env.js', `window.env = { CORIOLIS_URL: "${(process.env.CORIOLIS_URL || '/')}" }`)

const isDev = process.argv.find(a => a === '--dev')
if (isDev) {
  require('./dev')(app, PORT)
}

app.use(express.static('dist'))

require('./proxy')(app)

app.use((req, res) => {
  res.redirect(`${req.baseUrl}/#${req.url}`)
})

app.listen(PORT, () => {
  console.log(`Express server is up on port ${PORT}`) // eslint-disable-line no-console
})
