mirror of
https://github.com/pockethost/pockethost.git
synced 2025-05-28 09:46:46 +00:00
Dev mode
This commit is contained in:
parent
0cdd7520a9
commit
b9693780b9
@ -4,6 +4,7 @@
|
||||
import AdminSync from './AdminSync.svelte'
|
||||
import DangerZoneTitle from './DangerZoneTitle.svelte'
|
||||
import DeleteInstance from './DeleteInstance.svelte'
|
||||
import DevMode from './DevMode.svelte'
|
||||
import Maintenance from './Maintenance.svelte'
|
||||
import RenameInstance from './RenameInstance.svelte'
|
||||
import VersionChange from './VersionChange/VersionChange.svelte'
|
||||
@ -29,5 +30,7 @@
|
||||
|
||||
<AdminSync />
|
||||
|
||||
<DevMode />
|
||||
|
||||
<DeleteInstance />
|
||||
</div>
|
||||
|
@ -0,0 +1,47 @@
|
||||
<script lang="ts">
|
||||
import Card from '$components/cards/Card.svelte'
|
||||
import CardHeader from '$components/cards/CardHeader.svelte'
|
||||
import { DOCS_URL } from '$src/env'
|
||||
import { client } from '$src/pocketbase-client'
|
||||
import { instance } from '../store'
|
||||
import ErrorMessage from './ErrorMessage.svelte'
|
||||
|
||||
const { updateInstance } = client()
|
||||
|
||||
$: ({ id, dev } = $instance)
|
||||
|
||||
let errorMessage = ''
|
||||
|
||||
const handleChange = (e: Event) => {
|
||||
const target = e.target as HTMLInputElement
|
||||
const isChecked = target.checked
|
||||
|
||||
// Update the database with the new value
|
||||
updateInstance({ id, fields: { dev: isChecked } })
|
||||
.then(() => 'saved')
|
||||
.catch((error) => {
|
||||
errorMessage = error.data.message || error.message
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<Card>
|
||||
<CardHeader documentation={DOCS_URL(`/usage/dev-mode`)}>Dev Mode</CardHeader>
|
||||
|
||||
<p class="mb-8">
|
||||
Starting with PocketBase v0.20.1, your instance will show debugging output
|
||||
in the instance logs. Performance is degraded while Dev Mode is active.
|
||||
</p>
|
||||
|
||||
<ErrorMessage message={errorMessage} />
|
||||
|
||||
<label class="label cursor-pointer justify-center gap-4">
|
||||
<span class="label-text">Dev Mode</span>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="toggle toggle-warning"
|
||||
checked={!!dev}
|
||||
on:change={handleChange}
|
||||
/>
|
||||
</label>
|
||||
</Card>
|
9
frontends/lander/content/docs/usage/dev-mode.md
Normal file
9
frontends/lander/content/docs/usage/dev-mode.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title: Dev Mode
|
||||
category: usage
|
||||
description: Dev Mode shows PocketBase debugging output to the instance logs
|
||||
---
|
||||
|
||||
Begining with PocketBase 0.20.1, you may supply a `--dev` flag to make PocketBase output debugging information to the console.
|
||||
|
||||
PocketHost supports this through the Dev Mode switch. When running in Dev Mode, your instance logs will show all debugging output.
|
@ -58,6 +58,7 @@ global.EventSource = EventSource
|
||||
name: MOTHERSHIP_NAME(),
|
||||
slug: MOTHERSHIP_NAME(),
|
||||
port: MOTHERSHIP_PORT(),
|
||||
dev: DEBUG(),
|
||||
env: {
|
||||
DATA_ROOT: mkContainerHomePath(`data`),
|
||||
},
|
||||
|
@ -0,0 +1,27 @@
|
||||
/// <reference path="../pb_data/types.d.ts" />
|
||||
migrate((db) => {
|
||||
const dao = new Dao(db)
|
||||
const collection = dao.findCollectionByNameOrId("etae8tuiaxl6xfv")
|
||||
|
||||
// add
|
||||
collection.schema.addField(new SchemaField({
|
||||
"system": false,
|
||||
"id": "a5qqq8fs",
|
||||
"name": "dev",
|
||||
"type": "bool",
|
||||
"required": false,
|
||||
"presentable": false,
|
||||
"unique": false,
|
||||
"options": {}
|
||||
}))
|
||||
|
||||
return dao.saveCollection(collection)
|
||||
}, (db) => {
|
||||
const dao = new Dao(db)
|
||||
const collection = dao.findCollectionByNameOrId("etae8tuiaxl6xfv")
|
||||
|
||||
// remove
|
||||
collection.schema.removeField("a5qqq8fs")
|
||||
|
||||
return dao.saveCollection(collection)
|
||||
})
|
@ -23,6 +23,7 @@ routerAdd(
|
||||
version: null,
|
||||
secrets: null,
|
||||
syncAdmin: null,
|
||||
dev: null,
|
||||
},
|
||||
})
|
||||
|
||||
@ -34,7 +35,7 @@ routerAdd(
|
||||
|
||||
const id = c.pathParam('id')
|
||||
const {
|
||||
fields: { subdomain, maintenance, version, secrets, syncAdmin },
|
||||
fields: { subdomain, maintenance, version, secrets, syncAdmin, dev },
|
||||
} = data
|
||||
|
||||
console.log(
|
||||
@ -46,6 +47,7 @@ routerAdd(
|
||||
version,
|
||||
secrets,
|
||||
syncAdmin,
|
||||
dev,
|
||||
}),
|
||||
)
|
||||
|
||||
@ -78,6 +80,7 @@ routerAdd(
|
||||
maintenance,
|
||||
secrets,
|
||||
syncAdmin,
|
||||
dev,
|
||||
})
|
||||
|
||||
const form = new RecordUpsertForm($app, record)
|
||||
|
@ -278,6 +278,7 @@ export const instanceService = mkSingleton(
|
||||
name: instance.subdomain,
|
||||
slug: instance.id,
|
||||
port: newPort,
|
||||
dev: instance.dev,
|
||||
extraBinds: flatten([
|
||||
globSync(join(INSTANCE_APP_MIGRATIONS_DIR(), '*.js')).map(
|
||||
(file) =>
|
||||
|
@ -16,6 +16,7 @@ import { map } from '@s-libs/micro-dash'
|
||||
import Docker, { Container, ContainerCreateOptions } from 'dockerode'
|
||||
import { existsSync } from 'fs'
|
||||
import MemoryStream from 'memorystream'
|
||||
import { gte } from 'semver'
|
||||
import { AsyncReturnType } from 'type-fest'
|
||||
import { PocketbaseReleaseVersionService } from '../PocketbaseReleaseVersionService'
|
||||
import { buildImage } from './buildImage'
|
||||
@ -30,6 +31,7 @@ export type SpawnConfig = {
|
||||
env?: Env
|
||||
stdout?: MemoryStream
|
||||
stderr?: MemoryStream
|
||||
dev?: boolean
|
||||
}
|
||||
export type PocketbaseServiceApi = AsyncReturnType<
|
||||
typeof createPocketbaseService
|
||||
@ -78,9 +80,11 @@ export const createPocketbaseService = async (
|
||||
env: {},
|
||||
stderr: new MemoryStream(),
|
||||
stdout: new MemoryStream(),
|
||||
dev: false,
|
||||
...cfg,
|
||||
}
|
||||
const { version, name, slug, port, extraBinds, env, stderr, stdout } = _cfg
|
||||
const { version, name, slug, port, extraBinds, env, stderr, stdout, dev } =
|
||||
_cfg
|
||||
logger.breadcrumb(name).breadcrumb(slug)
|
||||
const iLogger = InstanceLogger(slug, 'exec')
|
||||
|
||||
@ -123,6 +127,9 @@ export const createPocketbaseService = async (
|
||||
const Cmd = (() => {
|
||||
return [`./pocketbase`, `serve`, `--http`, `0.0.0.0:8090`]
|
||||
})()
|
||||
if (dev && gte(realVersion.version, `0.20.1`)) {
|
||||
Cmd.push(`--dev`)
|
||||
}
|
||||
|
||||
const createOptions: ContainerCreateOptions = {
|
||||
Image: INSTANCE_IMAGE_NAME,
|
||||
|
@ -29,6 +29,7 @@ export type InstanceFields = BaseFields & {
|
||||
maintenance: boolean
|
||||
syncAdmin: boolean
|
||||
cname: string
|
||||
dev: boolean
|
||||
}
|
||||
|
||||
export type WithUser = {
|
||||
|
@ -7,7 +7,7 @@ export type UpdateInstancePayload = {
|
||||
fields: Partial<
|
||||
Pick<
|
||||
InstanceFields,
|
||||
'maintenance' | 'secrets' | 'subdomain' | 'syncAdmin' | 'version'
|
||||
'maintenance' | 'secrets' | 'subdomain' | 'syncAdmin' | 'version' | 'dev'
|
||||
>
|
||||
>
|
||||
}
|
||||
@ -44,6 +44,7 @@ export const UpdateInstancePayloadSchema: JSONSchemaType<UpdateInstancePayload>
|
||||
},
|
||||
required: [],
|
||||
},
|
||||
dev: { type: 'boolean', nullable: true },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user