f7cloud_client/apps/notes/playwright/start-nextcloud-server.mjs
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

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))
}