Source: server/platform-server.js

const { CaddyService } = require('./caddy')
const { DockerService } = require('./docker')
const { RestApiService } = require('./rest-api')

const { PlatformTemplateService } = require('../template')
const { PlatformConfigService } = require('../config')
const { DeploymentQueueService } = require('../deployment-queue')
const { logError } = require('../log')

// journalctl -u service-name.service
/**
  * @class
*/
class PlatformServerService {

  static start(platformTemplatesFilePath) {
    PlatformTemplateService.readFromFile(platformTemplatesFilePath).then(([firstPlatformTemplateFound]) => {
      const platformConfig = PlatformConfigService.from(firstPlatformTemplateFound)

      RestApiService.start(platformConfig)
      CaddyService.applyDefaultConfig(platformConfig)

      DeploymentQueueService.pollForDeploymentRequests(
        platformConfig,
        deploymentRequest => {
          DockerService.deploy(platformConfig, deploymentRequest)
          CaddyService.addDeployment(platformConfig, deploymentRequest)
          return Promise.resolve()
        }
      )

    })
      .catch(error => logError({ message: '[PlatformServerService] Could not start the platform server', error }))
  }

}

module.exports = {
  PlatformServerService
}