From c0f51205d8cce8d9da3bab2105bbc9eb59aaa184 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 31 Jan 2024 14:43:16 +0000 Subject: [PATCH] deploy: f4fa277b444793e074208f251742e4df35d3af2d --- 404.html | 2 +- assets/js/7bdcd7a7.d02b8df8.js | 1 - assets/js/7bdcd7a7.e223d40e.js | 1 + ...~main.888657d6.js => runtime~main.cc4b48d1.js} | 2 +- blog.html | 2 +- blog/5-things-to-know-for-a-docker-user.html | 2 +- blog/archive.html | 2 +- blog/develop-using-devcontainer.html | 2 +- blog/getting-started-with-compose.html | 2 +- blog/podman-desktop-release-0.10.html | 2 +- blog/podman-desktop-release-0.11.html | 2 +- blog/podman-desktop-release-0.12.html | 2 +- blog/podman-desktop-release-0.13.html | 2 +- blog/podman-desktop-release-0.14.html | 2 +- blog/podman-desktop-release-0.15.html | 2 +- blog/podman-desktop-release-1.0.html | 2 +- blog/podman-desktop-release-1.1.html | 2 +- blog/podman-desktop-release-1.2.html | 2 +- blog/podman-desktop-release-1.3.html | 2 +- blog/podman-desktop-release-1.4.html | 2 +- blog/podman-desktop-release-1.5.html | 2 +- blog/podman-desktop-release-1.6.html | 2 +- blog/podman-desktop-release-1.7.html | 2 +- ...al-kubernetes-cluster-with-podman-desktop.html | 2 +- ...ing-podman-images-with-kubernetes-cluster.html | 2 +- blog/tags.html | 2 +- blog/tags/codespaces.html | 2 +- blog/tags/compose.html | 2 +- blog/tags/containerfile.html | 2 +- blog/tags/containers.html | 2 +- blog/tags/devcontainer.html | 2 +- blog/tags/docker-compose.html | 2 +- blog/tags/docker.html | 2 +- blog/tags/dockerfile.html | 2 +- blog/tags/extensions.html | 2 +- blog/tags/images.html | 2 +- blog/tags/kind.html | 2 +- blog/tags/kubernetes.html | 2 +- blog/tags/migrating.html | 2 +- blog/tags/multi-container.html | 2 +- blog/tags/onboarding.html | 2 +- blog/tags/openshift.html | 2 +- blog/tags/podman-desktop.html | 2 +- blog/tags/podman.html | 2 +- blog/tags/release.html | 2 +- blog/tags/settings.html | 2 +- blog/tags/story.html | 2 +- blog/tags/wasi.html | 2 +- blog/tags/wasm.html | 2 +- blog/tags/web-assembly.html | 2 +- ...orkloads-on-macos-and-windows-with-podman.html | 2 +- core-values.html | 2 +- docs/compose.html | 2 +- docs/compose/running-compose.html | 2 +- docs/compose/setting-up-compose.html | 2 +- docs/containers.html | 2 +- docs/containers/creating-a-pod.html | 2 +- docs/containers/images.html | 2 +- docs/containers/images/building-an-image.html | 2 +- docs/containers/images/pulling-an-image.html | 2 +- .../images/pushing-an-image-to-a-registry.html | 2 +- docs/containers/onboarding.html | 2 +- docs/containers/registries.html | 2 +- docs/containers/starting-a-container.html | 2 +- docs/extensions.html | 2 +- docs/extensions/install.html | 2 +- docs/extensions/publish.html | 2 +- docs/extensions/write.html | 15 +++++++++++++-- docs/extensions/write/adding-icons.html | 2 +- docs/extensions/write/onboarding-workflow.html | 2 +- docs/extensions/write/when-clause-context.html | 2 +- docs/installation.html | 2 +- docs/installation/linux-install.html | 2 +- ...podman-desktop-from-a-compressed-tar-file.html | 2 +- ...ling-podman-desktop-from-a-flatpak-bundle.html | 2 +- docs/installation/macos-install.html | 2 +- docs/installation/windows-install.html | 2 +- ...op-and-podman-in-a-restricted-environment.html | 2 +- ...sktop-silently-with-the-windows-installer.html | 2 +- ...installing-podman-desktop-with-chocolatey.html | 2 +- .../installing-podman-desktop-with-scoop.html | 2 +- .../installing-podman-desktop-with-winget.html | 2 +- docs/intro.html | 2 +- docs/kind.html | 2 +- .../building-an-image-and-testing-it-in-kind.html | 2 +- .../configuring-podman-for-kind-on-windows.html | 2 +- docs/kind/creating-a-kind-cluster.html | 2 +- docs/kind/deleting-your-kind-cluster.html | 2 +- docs/kind/installing.html | 2 +- docs/kind/pushing-an-image-to-kind.html | 2 +- docs/kind/restarting-your-kind-cluster.html | 2 +- .../working-with-your-local-kind-cluster.html | 2 +- docs/kubernetes.html | 2 +- .../deploying-a-container-to-kubernetes.html | 2 +- .../kubernetes/deploying-a-pod-to-kubernetes.html | 2 +- docs/kubernetes/existing-kubernetes.html | 2 +- .../kubernetes/kind/pushing-an-image-to-kind.html | 2 +- .../kubernetes/lima/pushing-an-image-to-lima.html | 2 +- .../minikube/pushing-an-image-to-minikube.html | 2 +- ...rrent-kubernete-context-in-the-status-bar.html | 2 +- ...g-and-selecting-current-kubernete-context.html | 2 +- docs/lima.html | 2 +- docs/lima/creating-a-kubernetes-instance.html | 2 +- docs/lima/creating-a-lima-instance.html | 2 +- docs/lima/customizing.html | 2 +- docs/lima/installing.html | 2 +- docs/migrating-from-docker.html | 2 +- .../emulating-docker-cli-with-podman.html | 2 +- .../importing-saved-containers.html | 2 +- .../using-podman-mac-helper.html | 2 +- ...sing-the-docker_host-environment-variable.html | 2 +- .../verifying-your-tools-are-using-podman.html | 2 +- docs/minikube.html | 2 +- ...lding-an-image-and-testing-it-in-minikube.html | 2 +- ...onfiguring-podman-for-minikube-on-windows.html | 2 +- docs/minikube/creating-a-minikube-cluster.html | 2 +- docs/minikube/deleting-your-minikube-cluster.html | 2 +- docs/minikube/installing.html | 2 +- docs/minikube/pushing-an-image-to-minikube.html | 2 +- .../restarting-your-minikube-cluster.html | 2 +- .../working-with-your-local-minikube-cluster.html | 2 +- docs/openshift.html | 2 +- docs/openshift/developer-sandbox.html | 2 +- docs/openshift/openshift-local.html | 2 +- docs/podman.html | 2 +- docs/podman/creating-a-podman-machine.html | 2 +- ...ng-podman-with-openshift-local-on-windows.html | 2 +- docs/podman/installing.html | 2 +- ...setting-podman-machine-default-connection.html | 2 +- docs/proxy.html | 2 +- docs/proxy/using-a-proxy-in-your-containers.html | 2 +- docs/proxy/using-a-proxy-on-linux.html | 2 +- .../using-a-proxy-requiring-a-custom-ca.html | 2 +- docs/proxy/using-a-proxy.html | 2 +- docs/proxy/using-a-vpn-on-windows.html | 2 +- docs/tags.html | 2 +- docs/tags/chocolatey.html | 2 +- docs/tags/compose.html | 2 +- docs/tags/containers.html | 2 +- docs/tags/docker.html | 2 +- docs/tags/extension.html | 2 +- docs/tags/flathub.html | 2 +- docs/tags/flatpak.html | 2 +- docs/tags/icons.html | 2 +- docs/tags/images.html | 2 +- docs/tags/installing.html | 2 +- docs/tags/kind.html | 2 +- docs/tags/kubernetes.html | 2 +- docs/tags/lima.html | 2 +- docs/tags/linux.html | 2 +- docs/tags/mac-0-s.html | 2 +- docs/tags/mac-os.html | 2 +- docs/tags/macos.html | 2 +- docs/tags/migrating-from-docker.html | 2 +- docs/tags/migrating-to-kubernetes.html | 2 +- docs/tags/minikube.html | 2 +- docs/tags/onboarding.html | 2 +- docs/tags/openshift-local.html | 2 +- docs/tags/openshift.html | 2 +- docs/tags/podman-desktop.html | 2 +- docs/tags/podman.html | 2 +- docs/tags/pods.html | 2 +- docs/tags/proxy.html | 2 +- docs/tags/publishing.html | 2 +- docs/tags/restricted-environment.html | 2 +- docs/tags/scoop.html | 2 +- docs/tags/vpn.html | 2 +- docs/tags/when-clause.html | 2 +- docs/tags/windows.html | 2 +- docs/tags/winget.html | 2 +- docs/tags/writing.html | 2 +- docs/troubleshooting.html | 2 +- .../troubleshooting-openshift-local.html | 2 +- .../troubleshooting-podman-on-linux.html | 2 +- .../troubleshooting-podman-on-macos.html | 2 +- .../troubleshooting-podman-on-windows.html | 2 +- docs/troubleshooting/troubleshooting-podman.html | 2 +- downloads.html | 2 +- downloads/linux.html | 2 +- downloads/macos.html | 2 +- downloads/windows.html | 2 +- extend.html | 2 +- features.html | 2 +- index.html | 2 +- search.html | 2 +- 185 files changed, 196 insertions(+), 185 deletions(-) delete mode 100644 assets/js/7bdcd7a7.d02b8df8.js create mode 100644 assets/js/7bdcd7a7.e223d40e.js rename assets/js/{runtime~main.888657d6.js => runtime~main.cc4b48d1.js} (99%) diff --git a/404.html b/404.html index 2a2dde9b00f..85ff922ecd0 100644 --- a/404.html +++ b/404.html @@ -13,7 +13,7 @@ - +
diff --git a/assets/js/7bdcd7a7.d02b8df8.js b/assets/js/7bdcd7a7.d02b8df8.js deleted file mode 100644 index 557b22c513d..00000000000 --- a/assets/js/7bdcd7a7.d02b8df8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7714],{58711:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>d,toc:()=>c});var s=i(24246),t=i(71670);const o={sidebar_position:1,title:"Writing",description:"Writing a Podman Desktop extension",tags:["podman-desktop","extension","writing"],keywords:["podman desktop","extension","writing"]},r="Writing a Podman Desktop extension",d={id:"extensions/write/index",title:"Writing",description:"Writing a Podman Desktop extension",source:"@site/docs/extensions/write/index.md",sourceDirName:"extensions/write",slug:"/extensions/write/",permalink:"/docs/extensions/write/",draft:!1,unlisted:!1,editUrl:"https://github.com/containers/podman-desktop/tree/main/website/docs/extensions/write/index.md",tags:[{label:"podman-desktop",permalink:"/docs/tags/podman-desktop"},{label:"extension",permalink:"/docs/tags/extension"},{label:"writing",permalink:"/docs/tags/writing"}],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Writing",description:"Writing a Podman Desktop extension",tags:["podman-desktop","extension","writing"],keywords:["podman desktop","extension","writing"]},sidebar:"mySidebar",previous:{title:"Writing extensions",permalink:"/docs/extensions/"},next:{title:"Onboarding workflow",permalink:"/docs/extensions/write/onboarding-workflow"}},a={},c=[{value:"Initializing a Podman Desktop extension",id:"initializing-a-podman-desktop-extension",level:2},{value:"Prerequisites",id:"prerequisites",level:4},{value:"Procedure",id:"procedure",level:4},{value:"Verification",id:"verification",level:4},{value:"Writing a Podman Desktop extension entry point",id:"writing-a-podman-desktop-extension-entry-point",level:2},{value:"Prerequisites",id:"prerequisites-1",level:4},{value:"Procedure",id:"procedure-1",level:4},{value:"Verification",id:"verification-1",level:4},{value:"Additional resources",id:"additional-resources",level:4},{value:"Next steps",id:"next-steps",level:4}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"writing-a-podman-desktop-extension",children:"Writing a Podman Desktop extension"}),"\n",(0,s.jsx)(n.p,{children:"To write a Podman Desktop extension, start a Node.js or TypeScript project calling the Podman Desktop API, and ensure all runtime dependencies are inside the final binary."}),"\n",(0,s.jsx)(n.h2,{id:"initializing-a-podman-desktop-extension",children:"Initializing a Podman Desktop extension"}),"\n",(0,s.jsx)(n.p,{children:"Write the Podman Desktop extension Node.js package metadata."}),"\n",(0,s.jsx)(n.h4,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"JavaScript or TypeScript"}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"procedure",children:"Procedure"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Create and edit a ",(0,s.jsx)(n.code,{children:"package.json"})," file."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:"{}\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add TypeScript and Podman Desktop API to the development dependencies:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:"lines",children:' "devDependencies": {\n "@podman-desktop/api": "latest",\n "typescript": "latest"\n },\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add the required metadata:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:"lines",children:' "name": "my-extension",\n "displayName": "My Hello World extension",\n "description": "How to write my first extension",\n "version": "0.0.1",\n "icon": "icon.png",\n "publisher": "benoitf",\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add the Podman Desktop version that might run this extension:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:"lines",children:' "engines": {\n "podman-desktop": "latest"\n },\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add the main entry point:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:"lines",children:' "main": "./dist/extension.js"\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add a Hello World command contribution"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",metastring:"lines",children:' "contributes": {\n "commands": [\n {\n "command": "my.first.command",\n "title": "My First Extension: Hello World"\n }\n ]\n }\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.code,{children:"icon.png"})," file to the project."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"verification",children:"Verification"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Full ",(0,s.jsx)(n.code,{children:"package.json"})," example:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "devDependencies": {\n "@podman-desktop/api": "latest",\n "typescript": "latest"\n },\n "name": "my-extension",\n "displayName": "My Hello World extension",\n "description": "How to write my first extension",\n "version": "0.0.1",\n "icon": "icon.png",\n "publisher": "benoitf",\n "engines": {\n "podman-desktop": "latest"\n },\n "main": "./dist/extension.js",\n "contributes": {\n "commands": [\n {\n "command": "my.first.command",\n "title": "My First Extension: Hello World"\n }\n ]\n }\n}\n'})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"writing-a-podman-desktop-extension-entry-point",children:"Writing a Podman Desktop extension entry point"}),"\n",(0,s.jsx)(n.p,{children:"Write the extension features."}),"\n",(0,s.jsx)(n.h4,{id:"prerequisites-1",children:"Prerequisites"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"JavaScript or TypeScript"}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"procedure-1",children:"Procedure"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Create and edit a ",(0,s.jsx)(n.code,{children:"dist/extension.js"})," file."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Import the Podman Desktop API"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"import * as podmanDesktopAPI from '@podman-desktop/api';\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Expose the ",(0,s.jsx)(n.code,{children:"activate"})," function to call on activation."]}),"\n",(0,s.jsx)(n.p,{children:"The signature of the function can be:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Synchronous"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"export function activate(): void;\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Asynchronous"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-typescript",children:"export async function activate(): PromiseAll runtime dependencies are inside the final binary.
+yarn watch --extension-folder /path/to/your/extension