Skip to content

devspace-cloud/devspace-plugin-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

1 Commit

Repository files navigation

DevSpace Plugin Example

This repository is an example implementation of a devspace plugin written in golang. The plugin adds the following to devspace:

  • 2 new commands:
    • devspace login that fakes a login
    • devspace list env that prints the environment variables
  • 2 new predefined variables:
    • EXAMPLE_USER that is filled from the environment variable USER
    • EXAMPLE_HOME that is filled from the environment variable HOME
  • 2 plugin hooks that change the following:
    • When executing devspace print all environment variables that are available to the plugin are printed to the console
    • When executing any non plugin command, the plugin will print the fake login message

Building the plugin

Clone the repository and compile the plugin via go (make sure you have go modules enabled):

# linux & mac go build -mod vendor -o main # windows go build -mod vendor -o main.exe 

Adding the plugin to devspace

Install devspace and run:

devspace add plugin plugin.yaml 

Make sure the plugin was installed successfully:

$ devspace list plugins Name Version Commands Vars devspace-plugin-example 0.0.1 2 2 

Removing the plugin from devspace

Simply run this to remove the plugin:

devspace remove plugin devspace-plugin-example 

Testing the plugin

Test the new plugin commands

Run the following in a shell:

$ devspace login Logging in... Successfully logged in! 

Or the new list command:

$ devspace list env Plugin will print the environment variables TERM=xterm-256color SHELL=/bin/bash USER=fabiankramm COMMAND_MODE=unix2003 ... 

Test the plugin hooks

Run the following command to execute the plugin hooks:

$ devspace print --config examples/devspace-print.yaml Logging in... Successfully logged in! Plugin will print the environment variables TERM=xterm-256color ... DEVSPACE_PLUGIN_COMMAND=print DEVSPACE_PLUGIN_COMMAND_LINE=devspace print [flags] DEVSPACE_PLUGIN_OS_ARGS=["devspace","print","--config","examples/devspace-print.yaml"] DEVSPACE_PLUGIN_CONFIG=version: v1beta9 images: default: image: myusername/devspace deployments: - name: quickstart helm: componentChart: true values: containers: - image: myusername/devspace dev:{} DEVSPACE_PLUGIN_COMMAND_FLAGS=["--config","examples/devspace-print.yaml"] ------------------- Vars: [info] No vars found ------------------- Loaded path: /Users/fabiankramm/Programmieren/go-workspace/src/github.com/devspace-cloud/devspace-plugin-example/examples/devspace-print.yaml ------------------- version: v1beta9 images: default: image: myusername/devspace deployments: - name: quickstart helm: componentChart: true values: containers: - image: myusername/devspace dev:{} 

Test the plugin predefined variables

Run the following command to test the plugin predefined variables:

$ devspace --config examples/devspace-predefined-vars.yaml run hello Logging in... Successfully logged in! Hello fabiankramm! Your home directory is in /Users/fabiankramm 

What happened here? In the devspace-predefined-vars.yaml, the new variables EXAMPLE_USER and EXAMPLE_HOME are used within a devspace command. So after the root plugin hook (which prints Logging in... etc.) was executed, devspace will call the plugin with plugin-binary print env USER (EXAMPLE_USER) and plugin-binary print env HOME (EXAMPLE_HOME) to get values for the variables. devspace then replaces the variables with these values and executes the command.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages