# Endevor Plug-in for Zowe CLI

<img src="images/Zowe_ConformanceBadge_cli.png" width=25% alt="Zowe Conformance Badge"/>

This repository contains a command line interface (CLI) that interacts with Endevor. You can build it as either an independent CLI application or as a plug-in that can be installed into an existing application, such as Brightside.

The Endevor application is built on the [Imperative Framework](https://github.com/zowe/imperative).

# Use Cases

You can use the Endevor Plug-in for Zowe CLI to perform the following tasks without having to leave the ZOWE CLI interface:
Check out source code that resides in Endevor, and work with the code in a non-mainframe IDE or editor such as Sublime, Visual Studio Code, or IntelliJ IDEA

Interact with Endevor application lifecycle actions, allowing easy scripting from CI/CD pipelines.
Build code and integrate Endevor element code into wider packages.
Access multiple data sources within a single CLI, enabling quick comparison and inclusion of data.
Interact with Endevor for basic SCM inventory, which provides an alternative experience for end users, which enables easier learning and adoption.
Build checked-in source for use in unit and functional test environments.
Approve workflows in response to events in other DevOps tools.

# Prerequisites

Before you install the plug-in, it is important to ensure that you meet the following prerequisites:
Zowe CLI installed and configured.
Endevor instance with the Endevor Web Services component installed

# Build the Plug-in from Source and Link Endevor Application

Build plug-in from source and then link it to your Endevor application.

**Follow these steps:**

1. Clone this repository to your PC as follws:
   Issue git clone https://github.com/your-username/your-repository Press Enter.
   The local clone is created.
2. In a command line, issue `cd [relative path]/endevor`
3. Issue `npm install`
4. Issue `npm run build`
5. Issue `npm link`

# Install the Endevor SCM Plug-in for Zowe CLI

The Endevor Plug-in for Zowe CLI is associated with the following tags:

- @latest
- @next
- @zowe-v1-lts
- @zowe-v2-lts
- @zowe-v3-lts

The `@zowe-v2-lts` and `@zowe-v3-lts` tags denote stable plugin versions compatible with the Zowe V2 LTS and Zowe V3 LTS respectively.

The `@zowe-v1-lts` version is now deprecated and should be upgraded to the V2 or V3 LTS.

The `@latest` tag refers to the highest supported version of the plugin - currently identical to `@zowe-v3-lts`

The `@next` tag is reserved for pre-release and early versions of the plugin.

To install the active version of the plug-in, issue the following command based on the preferred version:


```
zowe plugins install @broadcom/endevor-for-zowe-cli@zowe-v2-lts
```
zowe plugins install @broadcom/endevor-for-zowe-cli@zowe-v3-lts

# Examples

The following examples show how Imperative CLI Framework features are implemented in the Endevor CLI.

- [Default Help](#default-help)
- [List Regions](#list-regions)

## Default Help

**`zowe endevor --help`**

     DESCRIPTION
     -----------

       Endevor plug-in for listing Endevor environment information, working
       with elements and packages located in specified Endevor instance.

     USAGE
     -----

       zowe endevor [group]

     COMMANDS
     --------

       add            Add an Element into Endevor.
       approve | aprv Approve a Package in Endevor.
       backin         Backin a Package in Endevor.
       backout        Backout a Package in Endevor.
       cast           Cast a Package in Endevor.
       create         Create a Package in Endevor.
       delete | del   Delete an Element or a Package in Endevor.
       deny           Deny a Package in Endevor.
       execute        Execute a Package in Endevor.
       generate | gen Generate an Element in Endevor.
       list           List instances, elements, types, packages and inventory
                      locations in Endevor.
       move | mv      Move an Element in Endevor.
       print | p      Print an Element or a Component in Endevor.
       reset          Reset a Package in Endevor.
       retrieve | ret Retrieve an Element in Endevor.
       signin | si    Signin an Element in Endevor.
       submit         Submit a Package or a SCL file in Endevor.
       transfer | tr  Transfer an Element in Endevor.
       update         Update an Element or a Package in Endevor.

     GLOBAL OPTIONS
     --------------

     --response-format-json  | --rfj (flag) (optional)

        Produce the command response as a JSON document

     --help  | -h (flag) (optional)

        Display help text

# Uninstall the Plug-in

Issue the following command:

```bash
zowe plugins uninstall @broadcom/endevor-for-zowe-cli
```
