Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update sample plugin to make compatible with vnext #101

Merged
merged 23 commits into from
Mar 15, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ All notable changes to the Sample Plug-in for Zowe CLI will be documented in thi

## Recent Changes

- Enhancement: Added plugin lifecycle example.
- Enhancement:
ATorrise marked this conversation as resolved.
Show resolved Hide resolved
- Removed detailed Jenkins information and switched to GHA
- Updated imports and resolved errors when making plug-in v3 compatible

- Enhancement: Added plug-in lifecycle example.
- Enhancement: Removed deprecated pluginHealthCheck.
- BugFix: Updated dependencies for technical currency.

Expand Down
93 changes: 0 additions & 93 deletions CICD-TEMPLATE.md

This file was deleted.

2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ This document is intended to be a living summary of conventions & best practices

## Changelog Update Guidelines

The changelog should be updated for any PR that updates code that will be distributed to the end user. Changes to certain files, such as the Jenkinsfile, do not require an update to the changelog.
The changelog should be updated for any PR that updates code that will be distributed to the end user. Changes to certain files, for example those listed in `.gitignore`, do not require an update to the changelog.

The following code block should be inserted into the Changelog above the last released version:

Expand Down
91 changes: 45 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,88 +1,87 @@
# Zowe CLI Sample Plug-in

This repository contains a sample Zowe CLI plug-in that adheres to the contribution guidelines for the project. Use this project and the associated tutorials as a starting point for creating Zowe CLI plug-ins.
This repository contains a sample Zowe CLI Plug-in that adheres to the contribution guidelines for the project. Use this project and the associated tutorials as a starting point for creating Zowe CLI Plug-ins.

- [Zowe CLI Sample Plug-in](#zowe-cli-sample-plug-in)
- [Sample Plug-in Overview](#sample-plug-in-overview)
- [Why Create a Zowe CLI Plug-in?](#why-create-a-zowe-cli-plug-in)
- [Tutorials, Documentation, and Guidelines](#tutorials-documentation-and-guidelines)
- [Tutorials](#tutorials)
- [Contribution Guidelines](#contribution-guidelines)
- [Imperative CLI Framework Documentation](#imperative-cli-framework-documentation)
- [Jenkinsfile Guidelines](#jenkinsfile-guidelines)
- [Prerequisites](#prerequisites)
- [Create a Local Development Space](#create-a-local-development-space)
- [Clone zowe-cli-sample-plugin and Build From Source](#clone-zowe-cli-sample-plugin-and-build-from-source)
- [Run the Automated Tests](#run-the-automated-tests)
- [Install the zowe-cli-sample-plugin to Zowe CLI](#install-the-zowe-cli-sample-plugin-to-zowe-cli)
- [Contribution Guidelines](#contribution-guidelines)
- [CICD Guidelines](#cicd-guidelines)
- [Set up your Development Environment](#set-up-your-development-environment)
- [Prerequisites](#prerequisites)
- [Initial Setup](#initial-setup)
- [Next Steps: Using your Sample Plug-in](#next-steps-using-your-sample-plug-in)

## Sample Plug-in Overview

This sample includes:
- Source code for extending the Zowe CLI with a command that lists the contents of a remote directory.
- Tutorials for:
- [Building the plug-in](docs/tutorials/list-directory-contents/ListDirectoryContentsPlugin.md) to use its `zowe zowe-cli-sample list directory-contents` command.
- [Enhancing the sample](docs/tutorials/files-util/FilesUtilPlugin.md) with a third-party package and creating a new command for file-diff highlighting.
- [Augmenting the code](docs/tutorials/list-typicode-todo/ListTypicodeTodoPlugin.md) to connect with Typicode's external API, a simulator of backend data, to walk through the cli's interaction with RESTful services.
- [Using profiles](docs/tutorials/profile-example/ProfilePlugin.md) with your plug-in.
- Examples of lifecycle hooks and GitHub Actions workflows for CICD.
- Templates for unit, system and integration testing suites.

## Why Create a Zowe CLI Plug-in?

You might want to create a Zowe CLI plug-in to accomplish the following:
You might want to create a Zowe CLI Plug-in to accomplish the following:
ATorrise marked this conversation as resolved.
Show resolved Hide resolved

* Provide new scriptable functionality for yourself, your organization, or to a broader community.
* Provide new script-able functionality for yourself, your organization, or to a broader community.
* Make use of Zowe CLI infrastructure (profiles and programmatic APIs).
* Participate in the Zowe CLI community space.


## Tutorials, Documentation, and Guidelines

We also provide the following tutorials, guidelines, and documentation to assist you during development:

### Tutorials

To learn about how to work with this sample plug-in, build new commands, or build a new Zowe CLI plug-in, see [Extend Zowe CLI](https://docs.zowe.org/stable/extend/extend-zowe-overview/#extend-zowe-cli).
This sample plug-in comes with [tutorial information](docs/tutorials), but more in-depth documentation can be found online. See [Extend Zowe CLI](https://docs.zowe.org/stable/extend/extend-zowe-overview/#extend-zowe-cli) to learn more about how to work with this sample plug-in, build new commands, or build a new Zowe CLI Plug-in.

**Note:** For an advanced example on how to create a plug-in that serves as a Credential Manager, see [Zowe CLI secrets for Kubernetes](https://github.com/zowe/zowe-cli-secrets-for-kubernetes/)

### Contribution Guidelines
**Note:** For an advanced example on how to create a plug-in that serves as a Credential Manager, see [Zowe CLI secrets for Kubernetes](https://github.com/zowe/zowe-cli-secrets-for-kubernetes/)

The Zowe CLI [contribution guidelines](CONTRIBUTING.md) contain standards and conventions for developing Zowe CLI plug-ins.
### Imperative CLI Framework Documentation

The guidelines contain critical information about working with the code, running/writing/maintaining automated tests, developing consistent syntax in your plug-in, and ensuring that your plug-in integrates with Zowe CLI properly.
Previously, Zowe CLI required the Imperative CLI Framework as an external dependency. Starting with V3, the Imperative Framework is integrated directly into the CLI, forming its core foundation. Archived details on the [Imperative CLI Framework](https://github.com/zowe/imperative/wiki) remain useful for understanding Zowe CLI's features and structure. Refer to this information when developing plug-ins.

### Imperative CLI Framework Documentation
### Contribution Guidelines

[Imperative CLI Framework](https://github.com/zowe/imperative/wiki) documentation is a key source of information to learn about the features of Imperative CLI Framework (the code framework that you use to build plug-ins for Zowe CLI). Refer to these documents during development.
The Zowe CLI [contribution guidelines](CONTRIBUTING.md) contain standards and conventions for developing Zowe CLI Plug-ins.

### Jenkinsfile Guidelines
The guidelines contain critical information about working with the code, running/writing/maintaining automated tests, developing consistent syntax in your plug-in, and ensuring that your plug-in integrates with Zowe CLI properly.

Reference the [Jenkinsfile Guidelines](CICD-TEMPLATE.md) for information about setting up and maintaining automated testing/deployment for your plug-in with Jenkins automation server.
### CICD Guidelines

## Prerequisites
Reference our [included GitHub Actions workflows](.github/workflows/) for guidance about setting up and maintaining automated testing and deployment for your plug-in with GitHub Actions.

Before you work with the Zowe CLI sample plug-in, [install Zowe CLI globally.](https://docs.zowe.org/active-development/user-guide/cli-installcli.html)
## Set up your Development Environment

## Create a Local Development Space
### Prerequisites

To create your development space, clone and build the Zowe CLI sample plug-in from source.
[Install Zowe CLI](https://docs.zowe.org/stable/user-guide/cli-installcli) and its dependencies globally.

Create a local development folder named `zowe-tutorial`. You will clone and build all projects in this folder.
### Initial Setup

Clone the repositories into your development folder to match the following structure:
To create your development space, you will clone and build the zowe-cli-sample-plugin from source.

Clone the repository into your development folder to match the following structure:
```
zowe-tutorial
└── zowe-cli-sample-plugin
```

### Clone zowe-cli-sample-plugin and Build From Source

See [setup](docs/tutorials/Setup.md).

### Run the Automated Tests

**Note:** If you don't have access to a z/OSMF instance at your site, run `npm run server:start` to launch a mock server at http://localhost:3000.

1. `cd __tests__/__resources__/properties`
2. Copy `example_properties.yaml` to `custom_properties.yaml`.
3. Edit the properties within `custom_properties.yaml` to contain valid system information for your site.
4. `cd` to your `zowe-cli-sample-plugin` folder
5. `npm run test`

### Install the zowe-cli-sample-plugin to Zowe CLI
1. `cd` to your `zowe-tutorial` folder
2. `git clone https://github.com/zowe/zowe-cli-sample-plugin`
3. `cd zowe-cli-sample-plugin`
4. `npm install`
5. `npm run build`

This process assumes that you already installed Zowe CLI on your PC in the previous steps.
## Next steps: Using your Sample Plug-in
ATorrise marked this conversation as resolved.
Show resolved Hide resolved

1. `cd` to your `zowe-tutorial` folder.
2. `zowe plugins install ./zowe-cli-sample-plugin`
3. `zowe zowe-cli-sample`
You should see help text displayed if the installation was successful.
After you complete your setup, follow the [Installing the sample plug-in to Zowe CLI](docs/tutorials/list-directory-contents/ListDirectoryContentsPlugin.md) tutorial to install, use and test this sample plug-in with the Zowe CLI.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* Copyright Contributors to the Zowe Project.
*/

describe("plugin definition", () => {
describe("plug-in definition", () => {

// Will fail if imperative config object is changed. This is a sanity/protection check to ensure that any
// changes to the configuration document are intended.
Expand Down
37 changes: 0 additions & 37 deletions docs/tutorials/Setup.md

This file was deleted.

8 changes: 4 additions & 4 deletions docs/tutorials/files-util/FilesUtilPlugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
Before you begin this tutorial, make sure that you completed the [Extending an existing plug-in]() tutorial.

## Overview
This tutorial demonstrates creating a brand new Zowe CLI plug-in that uses Zowe CLI Node.js programmatic APIs.
This tutorial demonstrates creating a brand new Zowe CLI Plug-in that uses Zowe CLI Node.js programmatic APIs.

At the end of this tutorial, you will have created a data set diff utility plug-in for Zowe CLI, from which you can pipe
your plugin's output to another utility for a side-by-side diff of data set member contents.

![Side by Side Diff](images/htmlDiff.png)
![Side by Side Diff](images/htmlDiff2.png)

### Cloning the `zowe-cli-sample-plugin` source
Here you'll clone the sample repo, delete the irrelevant source, and make a brand new plug-in. Perform the following:
Expand Down Expand Up @@ -37,7 +37,7 @@ import { IImperativeConfig } from "@zowe/imperative";

const config: IImperativeConfig = {
commandModuleGlobs: ["**/cli/*/*.definition!(.d).*s"],
rootCommandDescription: "Files utilty plugin for Zowe CLI",
rootCommandDescription: "Files utilty plug-in for Zowe CLI",
envVariablePrefix: "FILES_UTIL_PLUGIN",
defaultHome: "~/.files_util_plugin",
productDisplayName: "Files Util Plugin",
Expand Down Expand Up @@ -189,7 +189,7 @@ export default class DataSetsDiffHandler implements ICommandHandler {
```

## Trying your command
Be sure to build your plugin via `npm run build`.
Be sure to build your plug-in via `npm run build`.

Install your plug-in into Zowe CLI via `'zowe plugins install .`'

Expand Down
Binary file removed docs/tutorials/files-util/images/htmlDiff.png
Binary file not shown.
Binary file added docs/tutorials/files-util/images/htmlDiff2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading