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
}