diff --git a/packages/backend/src/apis/quadlet-api-impl.ts b/packages/backend/src/apis/quadlet-api-impl.ts index 75e6eb76..a8e6f9fc 100644 --- a/packages/backend/src/apis/quadlet-api-impl.ts +++ b/packages/backend/src/apis/quadlet-api-impl.ts @@ -11,6 +11,7 @@ import type { PodmanService } from '../services/podman-service'; import type { ProviderService } from '../services/provider-service'; import type { LoggerService } from '../services/logger-service'; import type { SynchronisationInfo } from '/@shared/src/models/synchronisation'; +import type { Template } from '/@shared/src/models/template'; interface Dependencies { quadlet: QuadletService; @@ -157,4 +158,8 @@ export class QuadletApiImpl extends QuadletApi { id: id, }); } + + override async templates(): Promise> { + return this.dependencies.quadlet.templates(); + } } diff --git a/packages/backend/src/assets/templates.json b/packages/backend/src/assets/templates.json new file mode 100644 index 00000000..2a4905f8 --- /dev/null +++ b/packages/backend/src/assets/templates.json @@ -0,0 +1,31 @@ +[ + { + "id": "nginx-container", + "name": "Nginx Container", + "description": "Simple Nginx Container Quadlet template", + "files": [ + { + "language": "ini", + "content": "# nginx.container\n[Container]\nImage=nginx\nPublishPort=8888:80\n\n[Service]\nRestart=always", + "name": "nginx.container" + } + ] + }, + { + "id": "nginx-pod", + "name": "Nginx Pod", + "description": "Simple Nginx Kube Quadlet Template", + "files": [ + { + "language": "ini", + "content": "# play.kube\n[Kube]\nYaml=play.yaml", + "name": "nginx.kube" + }, + { + "language": "ini", + "content": "apiVersion: v1\nkind: Pod\nmetadata:\n name: nginx-pod\nspec:\n containers:\n - name: container\n image: nginx\n ports:\n - name: http\n containerPort: 80", + "name": "play.yaml" + } + ] + } +] diff --git a/packages/backend/src/services/quadlet-service.ts b/packages/backend/src/services/quadlet-service.ts index c133fcc8..153cac3c 100644 --- a/packages/backend/src/services/quadlet-service.ts +++ b/packages/backend/src/services/quadlet-service.ts @@ -16,6 +16,8 @@ import { TelemetryEvents } from '../utils/telemetry-events'; import { QuadletType } from '/@shared/src/utils/quadlet-type'; import { QuadletKubeParser } from '../utils/parsers/quadlet-kube-parser'; import { isRunError } from '../utils/run-error'; +import templates from '../assets/templates.json'; +import type { Template } from '/@shared/src/models/template'; export class QuadletService extends QuadletHelper implements Disposable, AsyncInit { #extensionsEventDisposable: Disposable | undefined; @@ -470,4 +472,8 @@ export class QuadletService extends QuadletHelper implements Disposable, AsyncIn this.#extensionsEventDisposable?.dispose(); this.#extensionsEventDisposable = undefined; } + + public templates(): Array