// Module included in the following assemblies: // // * cli_reference/openshift_cli/extending-cli-plugins.adoc [id="cli-writing-plugins_{context}"] = Writing CLI plug-ins You can write a plug-in for the {product-title} CLI in any programming language or script that allows you to write command-line commands. Note that you can not use a plug-in to overwrite an existing `oc` command. [IMPORTANT] ==== OpenShift CLI plug-ins are currently a Technology Preview feature. ifdef::openshift-enterprise,openshift-webscale[] Technology Preview features are not supported with Red Hat production service level agreements (SLAs), might not be functionally complete, and Red Hat does not recommend to use them for production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. See the link:https://access.redhat.com/support/offerings/techpreview/[Red Hat Technology Preview features support scope] for more information. endif::[] ==== .Procedure This procedure creates a simple Bash plug-in that prints a message to the terminal when the `oc foo` command is issued. . Create a file called `oc-foo`. + When naming your plug-in file, keep the following in mind: * The file must begin with `oc-` or `kubectl-` in order to be recognized as a plug-in. * The file name determines the command that invokes the plug-in. For example, a plug-in with the file name `oc-foo-bar` can be invoked by a command of `oc foo bar`. You can also use underscores if you want the command to contain dashes. For example, a plug-in with the file name `oc-foo_bar` can be invoked by a command of `oc foo-bar`. . Add the following contents to the file. + [source,bash] ---- #!/bin/bash # optional argument handling if [[ "$1" == "version" ]] then echo "1.0.0" exit 0 fi # optional argument handling if [[ "$1" == "config" ]] then echo $KUBECONFIG exit 0 fi echo "I am a plugin named kubectl-foo" ---- After you install this plug-in for the {product-title} CLI, it can be invoked using the `oc foo` command. .Additional resources * Review the link:https://github.com/kubernetes/sample-cli-plugin[Sample plug-in repository] for an example of a plug-in written in Go. * Review the link:https://github.com/kubernetes/cli-runtime/[CLI runtime repository] for a set of utilities to assist in writing plug-ins in Go.