53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
/*!
|
|
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
import {
|
|
configureNextcloud,
|
|
startNextcloud,
|
|
stopNextcloud,
|
|
waitOnNextcloud,
|
|
} from '@f7cloud/e2e-test-server/docker'
|
|
import { readFileSync } from 'fs'
|
|
import { execSync } from 'node:child_process'
|
|
|
|
async function start() {
|
|
const appinfo = readFileSync('appinfo/info.xml').toString()
|
|
const maxVersion = appinfo.match(
|
|
/<nextcloud min-version="\d+" max-version="(\d\d+)" \/>/,
|
|
)?.[1]
|
|
|
|
let branch = 'master'
|
|
if (maxVersion) {
|
|
const refs = execSync('git ls-remote --refs').toString('utf-8')
|
|
branch = refs.includes(`refs/heads/stable${maxVersion}`)
|
|
? `stable${maxVersion}`
|
|
: branch
|
|
}
|
|
|
|
return await startNextcloud(branch, true, {
|
|
exposePort: 8089,
|
|
})
|
|
}
|
|
|
|
async function stop() {
|
|
process.stderr.write('Stopping Nextcloud server…\n')
|
|
await stopNextcloud()
|
|
// eslint-disable-next-line n/no-process-exit
|
|
process.exit(0)
|
|
}
|
|
|
|
process.on('SIGTERM', stop)
|
|
process.on('SIGINT', stop)
|
|
|
|
// Start the Nextcloud docker container
|
|
const ip = await start()
|
|
await waitOnNextcloud(ip)
|
|
await configureNextcloud(['notes'])
|
|
|
|
// Idle to wait for shutdown
|
|
while (true) {
|
|
await new Promise((resolve) => setTimeout(resolve, 5000))
|
|
}
|