From f8ecbc45a01d366f959139c909ffe91d1bddd87a Mon Sep 17 00:00:00 2001 From: Jessielaine Punongbayan Date: Wed, 1 Jul 2020 17:06:14 +0200 Subject: [PATCH 1/7] Update master branch to v1.7.x in Jenkinsfile Signed-off-by: Jessielaine Punongbayan --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 894a125e26..8b84276fbd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ node('ca-jenkins-agent') { def PRODUCT_NAME = "Zowe Explorer" // This is the what should be considered the master branch (for deployment purposes) - def MASTER_BRANCH = "master" + def MASTER_BRANCH = "v1.6.x" // Artifactory Details def ARTIFACTORY_CREDENTIALS_ID = "zowe.jfrog.io" From 046b5ffd0baa6913aee66e2c16d1ff2c713c3a7d Mon Sep 17 00:00:00 2001 From: Fernando Rijo Cedeno Date: Thu, 9 Jul 2020 09:46:04 -0400 Subject: [PATCH 2/7] Merge pull request #929 from zowe/issue928-uss-save-etag Issue 928 bug fix USS Save (cherry picked from commit 33057a703bc310215a7ea770cb9f5d48fc3e6f2e) Signed-off-by: zFernand0 --- src/shared/utils.ts | 7 ++++--- src/uss/actions.ts | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/shared/utils.ts b/src/shared/utils.ts index b52aea2963..079f52e719 100644 --- a/src/shared/utils.ts +++ b/src/shared/utils.ts @@ -203,6 +203,7 @@ export async function uploadContent(node: IZoweDatasetTreeNode | IZoweUSSTreeNod remotePath: string, profile?: IProfileLoaded, binary?: boolean, + etagToUpload?: string, returnEtag?: boolean): Promise { // Upload without passing the etag to force upload @@ -227,13 +228,13 @@ export async function uploadContent(node: IZoweDatasetTreeNode | IZoweUSSTreeNod { binary, localEncoding: null, - etag: null, + etag: etagToUpload, returnEtag, encoding: profile.profile.encoding }); } else { return ZoweExplorerApiRegister.getUssApi(profile).putContents( - doc.fileName, remotePath, binary, null, null, returnEtag); + doc.fileName, remotePath, binary, null, etagToUpload, returnEtag); } } } @@ -268,7 +269,7 @@ export async function willForceUpload(node: IZoweDatasetTreeNode | IZoweUSSTreeN location: vscode.ProgressLocation.Notification, title }, () => { - return uploadContent(node, doc, remotePath, profile, binary, returnEtag); + return uploadContent(node, doc, remotePath, profile, binary, null, returnEtag); }); uploadResponse.then((response) => { if (response.success) { diff --git a/src/uss/actions.ts b/src/uss/actions.ts index a9bdf47646..9fbdfb5bb0 100644 --- a/src/uss/actions.ts +++ b/src/uss/actions.ts @@ -292,7 +292,7 @@ export async function saveUSSFile(doc: vscode.TextDocument, ussFileProvider: IZo location: vscode.ProgressLocation.Notification, title: localize("saveUSSFile.response.title", "Saving file...") }, () => { - return uploadContent(sesNode, doc, remote, sesNode.getProfile(), binary, returnEtag); + return uploadContent(sesNode, doc, remote, sesNode.getProfile(), binary, etagToUpload, returnEtag); }); if (uploadResponse.success) { vscode.window.showInformationMessage(uploadResponse.commandResponse); From 2d7db54ebef8d57a41a4c457e199596c327eac2f Mon Sep 17 00:00:00 2001 From: Fernando Rijo Cedeno Date: Thu, 9 Jul 2020 11:31:37 -0400 Subject: [PATCH 3/7] Merge pull request #888 from zowe/ReadMe-upd ReadMe Restructuring (cherry picked from commit e72c32b53eda80ccd4606e20f2f7c1f22c73bb60) Signed-off-by: zFernand0 --- README.md | 387 ++++++++++++------------------------------------------ 1 file changed, 85 insertions(+), 302 deletions(-) diff --git a/README.md b/README.md index 81d1292a93..84b26360d4 100644 --- a/README.md +++ b/README.md @@ -1,193 +1,98 @@ # Zowe Explorer +![Node.js CI](https://img.shields.io/github/workflow/status/zowe/vscode-extension-for-zowe/Node.js%20CI.svg?logo=github) +[![version](https://vsmarketplacebadge.apphb.com/version-short/Zowe.vscode-extension-for-zowe.png)](https://vsmarketplacebadge.apphb.com/version-short/Zowe.vscode-extension-for-zowe.png) +[![downloads](https://vsmarketplacebadge.apphb.com/downloads-short/Zowe.vscode-extension-for-zowe.png)](https://vsmarketplacebadge.apphb.com/downloads-short/Zowe.vscode-extension-for-zowe.png) [![codecov](https://codecov.io/gh/zowe/vscode-extension-for-zowe/branch/master/graph/badge.svg)](https://codecov.io/gh/zowe/vscode-extension-for-zowe) [![slack](https://img.shields.io/badge/chat-on%20Slack-blue)](https://slack.openmainframeproject.org/) -Zowe Explorer is a separately delivered component of Zowe belonging to the [Zowe CLI](https://github.com/zowe/community#zowe-cli) sub-project. -[Zowe](https://www.zowe.org/) is a project hosted by the [Open Mainframe Project](https://www.openmainframeproject.org/), a [Linux Foundation](https://www.linuxfoundation.org/) project. +[Zowe Explorer](https://github.com/zowe/community#zowe-explorer) is a sub-project of Zowe, focusing on modernizing mainframe experience. [Zowe](https://www.zowe.org/) is a project hosted by the [Open Mainframe Project](https://www.openmainframeproject.org/), a [Linux Foundation](https://www.linuxfoundation.org/) project. -The Zowe Explorer extension modernizes the way developers and system administrators interact with z/OS mainframes. Working with data sets and USS files from VSC can be more convenient than using 3270 emulators, and complements your Zowe CLI experience. The extension provides the following benefits: +The Zowe Explorer extension modernizes the way developers and system administrators interact with z/OS mainframes by: -* Enables you to create, modify, rename, copy, and upload data sets directly to a z/OS mainframe. -* Enables you to create, modify, rename, and upload USS files directly to a z/OS mainframe. -* Provides a more streamlined way to access data sets, uss files and jobs. -* Lets you create, edit, and delete Zowe CLI `zosmf` compatible profiles. -* Lets you use the Secure Credential Store plug-in to store your credentials securely in the settings. +* Enabling you to create, modify, rename, copy, and upload data sets directly to a z/OS mainframe. +* Enabling you to create, modify, rename, and upload USS files directly to a z/OS mainframe. +* Providing a more streamlined way to access data sets, uss files and jobs. +* Letting you create, edit, and delete Zowe CLI `zosmf` compatible profiles. +* Letting you use the Secure Credential Store plug-in to store your credentials securely in the settings. -**Note:** The Zowe Explorer is powered by [Zowe CLI](https://zowe.org/home/). The extension demonstrates the potential for plug-ins powered by Zowe. +More information: -**Tips:** - -* For information about how to install the extension from a `VSIX` file and run system tests on the extension, see the [Developer README](https://github.com/zowe/vscode-extension-for-zowe/blob/master/docs/README.md). -* For information about how to develop for Eclipse Theia, see [Theia README](https://github.com/zowe/vscode-extension-for-zowe/blob/master/docs/README-Theia.md). -* For information about how to create a VSCode extension for Zowe Explorer (a Zowe Explorer extension) see [VSCode extensions for Zowe Explorer](https://github.com/zowe/vscode-extension-for-zowe/blob/master/docs/README-Extending.md). -* For questions and general guidance, please visit #zowe-explorer channel on [Slack](https://openmainframeproject.slack.com/) +* For the complete Zowe Explorer documentation, see [Zowe Docs](https://docs.zowe.org/stable/user-guide/ze-install.html). +* Join the **#zowe-explorer** channel on [Slack](https://openmainframeproject.slack.com/) to stay in touch with the Zowe community. ## Contents -* [Software Requirements](#software-requirements) -* [Create a Zowe CLI z/OSMF profile](#create-a-zowe-cli-zosmf-profile) -* [Secure Credential Store](#secure-credential-store) -* [Usage tips](#usage-tips) -* [Sample use cases](#sample-use-cases) +* [What's new in Zowe Explorer 1.7.0](#what's-new-in-zowe-explorer-1.7.0) +* [Prerequisites](#prerequisites) +* [Getting Started](#getting-started) +* [Credentials Security](#credentials-security) +* [Usage Tips](#usage-tips) +* [Extending Zowe Explorer](#extending-zowe-explorer) -## Software Requirements +## What's new in Zowe Explorer 1.7.0 -Ensure that you meet the following prerequisites before using the extension: +New features: -* Installed [Node.js](https://nodejs.org/en/download/) v8.0 or later. -* Configured TSO/E address space services, z/OS data set and file REST interface, and z/OS jobs REST interface. For more information, see [z/OS Requirements](https://docs.zowe.org/stable/user-guide/systemrequirements-zosmf.html#z-os-requirements). -* Zowe CLI `zosmf` profile. +* Added a credentials check feature that allows users to update their credentials if they receive an authorization error. +* Added a star icon which clearly denotes data sets, USS files, and jobs as favorites. +* Added a profile validation feature that checks whether a profile is valid. The feature is triggered when any action is performed with the profile. Validated profiles are indicated by a green mark. +* Disallowed case sensitivity for profiles with same names. -**Notes:** +Improvements: -* You can use your existing Zowe CLI `zosmf` profiles that are created with the Zowe CLI v.2.0.0 or later. -* Zowe CLI `zosmf` profiles that are created in Zowe Explorer can be interchangeably used in the Zowe CLI. +* Enabled editing of search filters. +* Enabled editing of ASCII files in USS. +* Improved text in confirmation dialogs. +* Reorganized the Data Sets context menu to match the order of commands recommended by VSCode. -### Create a Zowe CLI z/OSMF profile +For more information, see [Changelog](https://marketplace.visualstudio.com/items/Zowe.vscode-extension-for-zowe/changelog). -**Follow these steps:** +## Prerequisites -1. Navigate to the explorer tree. -2. Click the **+** button next to the **DATA SETS**, **USS** or **JOBS** bar. +* Install [Node.js](https://nodejs.org/en/download/) v8.0 or later. +* Configure TSO/E address space services, z/OS data set, file REST interface and z/OS jobs REST interface. For more information, see [z/OS Requirements](https://docs.zowe.org/stable/user-guide/systemrequirements-zosmf.html#z-os-requirements). +* Create a Zowe Explorer profile. - **Note:** If you already have a profile, select it from the drop-down menu. +## Getting Started -3. Select the **Create a New Connection to z/OS** option. +Create a profile, review the sample use cases to familiarize yourself with the capabilities of Zowe Explorer, and you are ready to use Zowe Explorer. - **Note:** When you create a new profile, user name and password fields are optional. However, the system will prompt you to specify your credentials when you use the new profile. +### Create Profile -4. Follow the instructions, and enter all required information to complete the profile creation. +1. Navigate to the explorer tree. +2. Hover over **DATA SETS**, **USS**, or **JOBS**. +3. Click the **+** icon. +4. Select **Create a New Connection to z/OS**. The user name and password fields are optional before you started to use a profile. +5. Follow the instructions, and enter all required information to complete the profile creation. ![New Connection](docs/images/ZE-newProfiles.gif?raw=true "New Connection")

-You successfully created a Zowe CLI `zosmf` profile. Now you can use all the functionalities of the extension. - -## Secure Credential Store - -You can now use Secure Credential Store plug-in in the Zowe Explorer extension. Secure Credentials Store plug-in lets you store your credentials securely. You can use the plug-in in the following ways: - -* [Use the plug-in only with Zowe Explorer](#using-secure-credential-store-with-zowe-explorer) -* [Use the plug-in both with Zowe CLI and Zowe Explorer](#using-secure-credential-store-with-zowe-cli-and-zowe-explorer) - - For more information about Secure Credential Store plug-in for Zowe CLI, see [Secure Credential Store Plug-in for Zowe CLI](cli-scsplugin.md). - -### Prerequisites - -Ensure that you meet the following prerequisites before you can use the plug-in both with Zowe CLI and Zowe Explorer: - -* [Install Zowe CLI](cli-installcli.md) -* [Install Secure Credential Store for Zowe CLI](cli-scsplugin.md) - -### Using Secure Credential Store with Zowe Explorer - -Activate the Secure Credential Store plug-in. - -**Follow these steps:** - -1. Open Zowe Explorer. -2. Navigate to the VSCode settings. -3. Open Zowe Explorer Settings. -4. Add the **Zowe-Plugin** value to the `Zowe Security: Credential Key` entry field. -5. Restart VSCode. -6. Create a profile. - -Your Zowe Explorer credentials are now stored securely. - -### Using Secure Credential Store with Zowe CLI and Zowe Explorer - -Activate the Secure Credential Store plug-in. - -**Follow these steps:** - -1. (Optional) If you have existing profiles, issue the following command, using Zowe CLI: - - ```shell - zowe scs u - ``` - -2. Open Zowe Explorer. -3. Navigate to the VSCode settings. -4. Open Zowe Explorer Settings. -5. Add the **Zowe-Plugin** value to the `Zowe Security: Credential Key` entry field. -6. Restart VSCode. - -The credentials of your newly created or existing profiles are now stored securely. - -## Usage tips - -Use the following tips to familiarize yourself with the extension and make the best use of it: - -* **Data set, USS and jobs persistence settings:** You can enable the persistence of any data sets, USS files and jobs by adding them to the **Favorites** tab. Right-click on a data set, USS file or jobs and click **Add Favorite**. - -* **Syntax highlighter:** Zowe Explorer supports syntax hightlighter for data sets. To enhance the experience of using the extension, download an extension that highlights syntax, such as [IBM-JCL](https://marketplace.visualstudio.com/items?itemName=kelosky.ibm-jcl) or [IBM-Assembler](https://marketplace.visualstudio.com/items?itemName=kelosky.ibm-assembler). +You can now use all the functionalities of the extension. -* **Edit a profile**: You can now edit existing profiles by clicking the **pencil** button next to the **magnifying glass** button in the explorer tree. The feature lets you modify the information inside your profile. +### Sample use cases -* **Delete a profile**: You can permanently delete profiles by right-clicking the profile and selecting the **Delete Profile** option. The feature deletes a profile from your `.zowe` folder. Alternatively, you can delete a profile from the VSCode Command Palette. +Review the following use cases to understand how to work with data sets in Zowe Explorer. For the complete list of features including USS and jobs, see [Zowe Explorer Sample Use Cases](https://docs.zowe.org/stable/user-guide/ze-usage.html#sample-use-cases). - **Follow these steps**: - - 1. Press **F1** on your keyboard. - 2. Select the **Zowe: Delete a Profile Permanently** option. - -* **Hide a profile**: You can hide a profile from profile tree by right-clicking the profile and selecting the **Hide Profile** option. If necessary, add the profile back by clicking the **+** button from the explorer tree. - -### Advanced Configuration - -You can modify Zowe Explorer preferences in the extension `Setting` in the following ways: - -* **Temp Folder Location:** You can change the default folder location where temporary files are stored. For example, use the following script: - -```json -"Zowe-Temp-Folder-Location": { - "folderPath": "/path/to/directory" - } -``` - -where **/path/to/directory** is the folder location that you specify. - -* **Data set creation settings:** You can change the default creation settings for various data set types. - -1. Navigate to the extension configuration manager. -2. In the section **Extensions**, scroll to **Zowe Configuration** and expand the options. -3. Click the **Edit in settings.json** button under Data Set, USS or JOBS settings that you want to edit. -4. Edit the settings as needed. -5. Save the settings. - -![Configure Zowe settings](docs/images/ZE-Configuration.gif?raw=true "Configure Zowe settings") -

- -## Sample use cases - -Review the following use cases to understand how to use Zowe Explorer. - -* [Data Sets](#data-sets) -* [USS](#uss) -* [JOBS](#jobs) -* [Extras](#extras) - -### Data Sets - -You can use the following functionalities when interacting with data set: - -* **View data sets and use multiple filters**: You can view multiple data sets simultaneously and apply filters to show specified data sets. -* **Rename data sets**: You can rename specified data sets. -* **Copy data sets**: You can copy a specified data sets and memebers. -* **Download, edit, and upload existing PDS members**: You can instantly pull data sets and data set members from the mainframe, edit them and upload back. -* **Create and delete data sets and data set members**: Enables you to easily create and delete both data sets and their members. -* **View and access multiple profiles simultaneously**: Enables to work with data sets from multiple profiles. -* **Submit a JCL**: You can submit a jcl from a chosen data set. +* [View data sets and use multiple filters](#view-data-sets-and-use-multiple-filters): View multiple data sets simultaneously and apply filters to show specified data sets. +* [Refresh the data set list](#refresh-the-list-of-data-sets): Refresh the list of pre-filtered data sets. +* [Rename data sets](#rename-data-sets): Rename specified data sets. +* [Copy data sets](#copy-data-sets): Copy specified data sets and members. +* [Download, edit, and upload existing PDS members](#download-edit-and-upload-existing-pds-members): You can instantly pull data sets and data set members from the mainframe, edit them, and upload back. +* [Prevent merge conflicts](#use-the-save-option-to-prevent-merge-conflicts): The save option includes a **compare** mechanism letting you resolve potential merge conflicts. +* [Create data sets and data set members](#create-a-new-pds-and-a-pds-member): Create a new data set and data set members. +* [Delete data set member and a data set](#delete-a-pds-member-and-pds): Delete a chosen data set member or an entire data set. +* [View and access multiple profiles simultaneously](#view-and-access-multiple-profiles-simultaneously): Work with data sets from multiple profiles. #### View data sets and use multiple filters 1. Navigate to the explorer tree. 2. Open the **DATA SETS** bar. -3. Select the profile that you want to filter. -4. Click the **Search Data Sets by Entering Patterns** magnifying glass. -5. From the drop-down, enter the patterns that you want to filter. - The data sets that match your pattern(s) display in the explorer tree. +3. Hover over the profile that you want to apply the filter to. +4. Click the **magnifying glass** icon. +5. Enter a pattern you want to create a filter for. + The data sets that match your pattern(s) are displayed in the explorer tree. **Tip:** To provide multiple filters, separate entries with a comma. You can append or postpend any filter with an \*, which indicates wildcard searching. You cannot enter an \* as the entire pattern. @@ -197,7 +102,7 @@ You can use the following functionalities when interacting with data set: #### Refresh the list of data sets 1. Navigate to the explorer tree. -2. Click **Refresh All** button on the right of the **DATA SETS** explorer bar. +2. Click **Refresh All** button (circular arrow icon) on the right of the **DATA SETS** explorer bar. #### Rename data sets @@ -226,16 +131,16 @@ You can use the following functionalities when interacting with data set: 1. Navigate to the explorer tree. 2. Open the **DATA SETS** bar. -3. Open a profile. +3. Open a profile. 4. Click the PDS member (or PS) that you want to download. **Note:** To view the members of a PDS, click the PDS to expand the tree. - The PDS member displays in the text editor window of VSC. + The PDS member is displayed in the text editor window of VSC. 5. Edit the document. 6. Navigate back to the PDS member (or PS) in the explorer tree, and click the **Save** button. -Your PDS member (or PS) is uploaded. +Your PDS member (or PS) is uploaded. **Note:** If someone else has made changes to the PDS member (or PS) while you were editing it, you can merge your conflicts before uploading to the mainframe. @@ -246,10 +151,10 @@ Your PDS member (or PS) is uploaded. 1. Navigate to the explorer tree. 2. Open the **DATA SETS** bar. -3. Open a profile. -4. Download and edit a data set. -5. Click the **Save** button for the data set that you opened in the explorer tree. -6. Resolve merge conflicts if necessary. +3. Open a member of a data set you want to edit. +4. Edit a data set. +5. Press Ctrl+S or Command+S (OSx) to save you changes. +6. (Optional) Resolve merge conflicts if necessary. ![Save](docs/images/ZE-safe-save.gif?raw=true "Save")

@@ -258,7 +163,7 @@ Your PDS member (or PS) is uploaded. 1. Navigate to the explorer tree. 2. Open the **DATA SETS** bar. -3. Click the **Create New Data Set** button to specify the profile that you want to create the data set with. +3. Click the **Create New Data Set** button to create a PDS. 4. From the drop-down menu, select the type of PDS that you want to create. 5. Enter a name for the PDS. The PDS is created. @@ -293,156 +198,34 @@ Your PDS member (or PS) is uploaded. 4. Select the profile that you want to add to the view as illustrated by the following screen. ![Add Profile](docs/images/ZE-mult-profiles.gif?raw=true "Add Profile") -

- ---- - -### USS -You can use the following functionalities when interacting with USS files: +## Credentials Security -* **View Unix System Services (USS) files**: You can view multiple USS files simultaneously. -* **Rename USS files**: You can rename specified USS files. -* **Download, edit, and upload existing USS files**: You can instantly pull USS files from the mainframe, edit them and upload back. -* **Create and delete USS files and directories**: Enables you to easily create and delete both USS files and directories. -* **View and access multiple profiles simultaneously**: Enables to work with USS files from multiple profiles. +Store your credentials securely with the Secure Credentials Store (SCS) plug-in. -#### View Unix System Services (USS) files +1. Navigate to the VSCode settings. +2. Open Zowe Explorer Settings. +3. Add the `Zowe-Plugin` value to the **Zowe Security** entry field. +4. Restart VSCode. -1. Navigate to the explorer tree. -2. Open the **Unix System Services (USS)** bar. -3. Select the profile that you want to filter. -4. Click the **Search Unix System Services (USS) by Entering a Path** magnifying glass. -5. From the drop-down, enter the path that you want as the root of your displayed tree. - All child files and directories of that root file are displayed in the explorer tree. - - **Note:** You will not be able to expand directories or files that you are not authorised for. +For more information about SCS, see [Secure Credential Store Plug-in for Zowe Explorer](https://docs.zowe.org/stable/user-guide/ze-profiles.html#enabling-secure-credential-store-with-zowe-explorer). - ![Enter Path](docs/images/ZE-path.gif?raw=true "Enter Path") -

- -#### Refresh the list of files - -1. Navigate to the explorer tree. -2. Click **Refresh All** button on the right of the **Unix System Services (USS)** explorer bar as illustrated by the following screen: - -![Refresh All](docs/images/ZE-refreshUSS.gif?raw=true "Refresh All") -

- -#### Rename USS files - -1. Navigate to the explorer tree. -2. Open the **USS** bar. -3. Select a USS file you want to rename. -4. Right-click the USS file and select the **Rename USS file** option. -5. Change the name of the USS file. - -#### Download, edit, and upload an existing file - -1. Click the file that you want to download. - - **Note:** To view the files within a directory, click the directory to expand the tree. - - The file displays in the text editor window of VSC. - - **Note:** If you have defined file associations with syntax coloring the suffix of your file will be marked up. - -2. Edit the document. -3. Type Ctrl-s or Command-s (OSx) to save the file - -Your file is uploaded. - -![Edit](docs/images/ZE-editUSS.gif?raw=true "Edit") -

- -#### Creating and deleting files and directories - -#### Create a directory - -1. Navigate to the explorer tree. -2. Open the **Unix System Services (USS)** bar. -3. Select a directory that you want to add the new directory to. -4. Select the **Create directory** button and specify the directory name. - The directory is created. - -#### Create a file - -1. Navigate to the explorer tree. -2. Open the **Unix System Services (USS)** bar. -3. Select a directory that you want to add the new file to. -4. Select the **Create file** button and specify the file name. - The file is created. - -#### Delete a file - -1. Navigate to the explorer tree. -2. Open the **Unix System Services (USS)** bar. -3. Select a file you want to remove. -4. Select the **Delete** button and press yes in the confirmation dropdown. - The file is deleted. - -#### Delete a directory - -1. Navigate to the explorer tree. -2. Open the **Unix System Services (USS)** bar. -3. Select a directory you want to remove. -4. Select the **Delete** button and press yes in the confirmation dropdown. - The directory and all child files and directories are deleted. - -![Create and Delete](docs/images/ZE-CreateDelete.gif?raw=true "Create and Delete") -

- -#### View and access multiple USS profiles simultaneously - -1. Navigate to the explorer tree. -2. Open the **Unix System Services (USS)** bar. -3. Click the **Add Session** button on the right of the **Unix System Services (USS)** explorer bar. -4. Select the profile that you want to add to the view as illustrated by the following screen. - -![View Profiles](docs/images/ZE-profile2.gif?raw=true "View Profiles") -

- ---- - -### JOBS - -You can use the following functionalities when interacting with Jobs: - -* **View a job**: You can view multiple jobs simultaneously. -* **Download spool content**: You can download spool content on your computer. - -#### View a job - -1. Navigate to the explorer tree. -2. Open the **JOBS** bar. -3. Select a directory with JCL files. -4. Right-click on the JCL you want to view, and click **Get JCL**. - -![View JOB](docs/images/ZE-jobs-get-jcl.gif?raw=true "View JOB") -

+## Usage tips -#### Download spool content +* Use the **Add Favorite** feature to permanently store chosen data sets, USS files, and jobs in the **Favorites** folder. Right-click on a data set, USS file or jobs and select **Add Favorite**. -1. Navigate to the explorer tree. -2. Open the **JOBS** bar. -3. Select a directory with JCL files. -4. Click the **Download** icon next to a folder with the spool content. -5. Save the file on your computer. +* **Syntax Highlighting:** Zowe Explorer supports syntax highlighting for data sets. Fox example, you can use such extensions as [COBOL Language Support](https://marketplace.visualstudio.com/items?itemName=broadcomMFD.cobol-language-support) or [HLASM Language Support](https://marketplace.visualstudio.com/items?itemName=broadcomMFD.hlasm-language-support). -![Download Spool](docs/images/ZE-jobs-download-spool.gif?raw=true "Download Spool") -

+* **Edit a profile**: Click the **pencil** icon next to the **magnifying glass** icon in the explorer tree, and modify the information inside your profile. ---- +* **Delete a profile**: Right-click a chosen profile and select **Delete Profile** to permanently delete the profile. The functionality deletes a profile from your `.zowe` folder. -### Extras +* **Hide a profile**: You can hide a profile from the profile tree by right-clicking the profile and selecting the **Hide Profile** option. To add the profile back, click the **+** button and select the profile from the quick pick list. -#### Issue MVS commands +For information how to configure Zowe Explorer, see [Zowe Explorer Configuration guidelines](https://docs.zowe.org/stable/user-guide/ze-install.html#configuration). -Zowe Explorer also enables you to issue MVS command. You can issue such commands as Allocate or Exec against a profile. +## Extending Zowe Explorer -1. Press the **F1** key on your keyboard. -2. Select the **Zowe:Issue MVS Command** option. -3. Select your profile. -4. Issue a MVS command. +You can add new functionalities to Zowe Explorer by creating your own extension. For more information, see [Extensions for Zowe Explorer](https://github.com/zowe/vscode-extension-for-zowe/blob/master/docs/README-Extending.md). -![Issue a MVS command](docs/images/ZE-Jobs-Issue-TSO-Command.gif?raw=true "Issue a MVS command") +**Tip:** View an example of a Zowe Explorer extension — [Zowe Explorer FTP extension documentation](https://github.com/zowe/zowe-explorer-ftp-extension#zowe-explorer-ftp-extension). From 6817cddbab74463054e9a43f456857493d014f1e Mon Sep 17 00:00:00 2001 From: Fernando Rijo Cedeno Date: Fri, 10 Jul 2020 11:27:15 -0400 Subject: [PATCH 4/7] Merge pull request #926 from zowe/issue921-validation-information Issue921 validation information (cherry picked from commit e69bd9bdb5962733aacde5ccd4d2d99fbdf0e599) Signed-off-by: zFernand0 --- __tests__/__unit__/Profiles.unit.test.ts | 55 ++++++++++++++++++------ i18n/sample/src/Profiles.i18n.json | 2 + src/Profiles.ts | 17 ++++++-- 3 files changed, 59 insertions(+), 15 deletions(-) diff --git a/__tests__/__unit__/Profiles.unit.test.ts b/__tests__/__unit__/Profiles.unit.test.ts index 2c59895062..814fd763b1 100644 --- a/__tests__/__unit__/Profiles.unit.test.ts +++ b/__tests__/__unit__/Profiles.unit.test.ts @@ -1483,6 +1483,15 @@ describe("Profiles Unit Tests - Function checkCurrentProfile", () => { const blockMocks = await createBlockMocks(globalMocks); const theProfiles = await Profiles.createInstance(blockMocks.log); + + Object.defineProperty(theProfiles, "validateProfiles", { + value: jest.fn(() => { + return { + status: "active", + name: blockMocks.invalidProfile.name + }; + }) + }); blockMocks.profiles.promptCredentials = jest.fn(() => { return ["test", "test", "test"]; }); @@ -1496,6 +1505,14 @@ describe("Profiles Unit Tests - Function checkCurrentProfile", () => { const blockMocks = await createBlockMocks(globalMocks); const theProfiles = await Profiles.createInstance(blockMocks.log); + Object.defineProperty(theProfiles, "validateProfiles", { + value: jest.fn(() => { + return { + status: "active", + name: blockMocks.invalidProfile.name + }; + }) + }); theProfiles.validProfile = -1; await theProfiles.checkCurrentProfile(blockMocks.validProfile); expect(theProfiles.validProfile).toBe(ValidProfileEnum.VALID); @@ -1506,6 +1523,14 @@ describe("Profiles Unit Tests - Function checkCurrentProfile", () => { const blockMocks = await createBlockMocks(globalMocks); const theProfiles = await Profiles.createInstance(blockMocks.log); + Object.defineProperty(theProfiles, "validateProfiles", { + value: jest.fn(() => { + return { + status: "active", + name: blockMocks.invalidProfile.name + }; + }) + }); blockMocks.profiles.promptCredentials = jest.fn(() => { return undefined; }); @@ -1514,15 +1539,18 @@ describe("Profiles Unit Tests - Function checkCurrentProfile", () => { }); it("Tests that checkCurrentProfile will handle inactive profiles", async () => { - Object.defineProperty(CheckStatus, "getZosmfInfo", { - value: jest.fn(() => { - return undefined; - }) - }); const globalMocks = await createGlobalMocks(); const blockMocks = await createBlockMocks(globalMocks); const theProfiles = await Profiles.createInstance(blockMocks.log); + Object.defineProperty(theProfiles, "validateProfiles", { + value: jest.fn(() => { + return { + status: "inactive", + name: blockMocks.invalidProfile.name + }; + }) + }); blockMocks.profiles.promptCredentials = jest.fn(() => { return undefined; }); @@ -1531,15 +1559,18 @@ describe("Profiles Unit Tests - Function checkCurrentProfile", () => { }); it("Tests that checkCurrentProfile will handle inactive profiles", async () => { - Object.defineProperty(CheckStatus, "getZosmfInfo", { - value: jest.fn(() => { - return undefined; - }) - }); const globalMocks = await createGlobalMocks(); const blockMocks = await createBlockMocks(globalMocks); const theProfiles = await Profiles.createInstance(blockMocks.log); + Object.defineProperty(theProfiles, "validateProfiles", { + value: jest.fn(() => { + return { + status: "inactive", + name: blockMocks.invalidProfile.name + }; + }) + }); blockMocks.profiles.promptCredentials = jest.fn(() => { return undefined; }); @@ -1555,7 +1586,7 @@ describe("Profiles Unit Tests - Function validateProfiles", () => { profiles: null, invalidProfile: createInvalidIProfile(), validProfile: createValidIProfile(), - profileInstance: null + profileInstance: null, }; newMocks.profiles = await Profiles.createInstance(newMocks.log); newMocks.profileInstance = createInstanceOfProfile(newMocks.profiles); @@ -1564,7 +1595,7 @@ describe("Profiles Unit Tests - Function validateProfiles", () => { return newMocks; } - it("Tests that validaterofiles handles inactive profiles", async () => { + it("Tests that validateProfiles handles inactive profiles", async () => { const globalMocks = await createGlobalMocks(); const blockMocks = await createBlockMocks(globalMocks); diff --git a/i18n/sample/src/Profiles.i18n.json b/i18n/sample/src/Profiles.i18n.json index d8acc51649..f25a9e470e 100644 --- a/i18n/sample/src/Profiles.i18n.json +++ b/i18n/sample/src/Profiles.i18n.json @@ -30,6 +30,8 @@ "deleteProfile.quickPickOption": "Delete {0}? This will permanently remove it from your system.", "deleteProfile.undefined.profilename": "Operation Cancelled", "deleteProfile.noSelected": "Operation Cancelled", + "Profiles.validateProfiles.validationProgress": "Validating {0} Profile.", + "Profiles.validateProfiles.validationCancelled": "Validating {0} was cancelled.", "deleteProfile.log.debug": "Deleting profile ", "deleteProfile.showQuickPick.delete": "Delete", "deleteProfile.showQuickPick.cancel": "Cancel", diff --git a/src/Profiles.ts b/src/Profiles.ts index a40afa2541..715b528c66 100644 --- a/src/Profiles.ts +++ b/src/Profiles.ts @@ -912,7 +912,17 @@ export class Profiles { try { if (getSessStatus.getStatus) { - profileStatus = await getSessStatus.getStatus(theProfile, theProfile.type); + profileStatus = await vscode.window.withProgress({ + location: vscode.ProgressLocation.Notification, + title: localize("Profiles.validateProfiles.validationProgress", "Validating {0} Profile.", theProfile.name), + cancellable: true + }, (progress, token) => { + token.onCancellationRequested(() => { + // will be returned as undefined + vscode.window.showInformationMessage(localize("Profiles.validateProfiles.validationCancelled", "Validating {0} was cancelled.", theProfile.name)); + }); + return getSessStatus.getStatus(theProfile, theProfile.type); + }); } else { profileStatus = "unverified"; } @@ -932,13 +942,14 @@ export class Profiles { }; this.profilesForValidation.push(filteredProfile); break; - case "unverified": + // default will cover "unverified" and undefined + default: filteredProfile = { status: "unverified", name: theProfile.name }; this.profilesForValidation.push(filteredProfile); - default: + break; } } catch (error) { From e047ddfdf2ca4a79c2b23dd95128c2261298ae6c Mon Sep 17 00:00:00 2001 From: zFernand0 Date: Fri, 10 Jul 2020 13:57:18 -0400 Subject: [PATCH 5/7] Add changelog and increase version number Signed-off-by: zFernand0 --- CHANGELOG.md | 6 ++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c0b144c99..7853937bcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documented in this file. +## `1.7.1` + +- Fix USS save operation. Thanks @JillieBeanSim +- Add validation information message. Thanks @JillieBeanSim +- Restructure Readme. Thanks @IgorCATech + ## `1.7.0` - Disallow multiple profiles with same name but different capitalizations. Thanks @katelynienaber diff --git a/package-lock.json b/package-lock.json index ebc5ecbf51..6ebba3dcc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vscode-extension-for-zowe", - "version": "1.7.0", + "version": "1.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index dee6b48a45..74f79e7aa5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-extension-for-zowe", "displayName": "%displayName%", "description": "%description%", - "version": "1.7.0", + "version": "1.7.1", "publisher": "Zowe", "author": "Zowe", "license": "EPL-2.0", From 2416453d625127a931351dd0ed497c1a5f6b36de Mon Sep 17 00:00:00 2001 From: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> Date: Fri, 10 Jul 2020 16:17:16 -0400 Subject: [PATCH 6/7] fix for zosmf overwriting issue Signed-off-by: Billie Simmons <49491949+JillieBeanSim@users.noreply.github.com> --- src/shared/utils.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/shared/utils.ts b/src/shared/utils.ts index 079f52e719..d00e245fb8 100644 --- a/src/shared/utils.ts +++ b/src/shared/utils.ts @@ -206,12 +206,11 @@ export async function uploadContent(node: IZoweDatasetTreeNode | IZoweUSSTreeNod etagToUpload?: string, returnEtag?: boolean): Promise { - // Upload without passing the etag to force upload - const uploadOptions: IUploadOptions = { - returnEtag: true - }; - if (isZoweDatasetTreeNode(node)) { + // Upload without passing the etag to force upload + const uploadOptions: IUploadOptions = { + returnEtag: true + }; const prof = node.getProfile(); if (prof.profile.encoding) { uploadOptions.encoding = prof.profile.encoding; From b6bcb14de378c7b3f8f79477d2b3e79a4c31aa79 Mon Sep 17 00:00:00 2001 From: zFernand0 Date: Wed, 15 Jul 2020 15:18:54 -0400 Subject: [PATCH 7/7] quick-fix: jenkinsfile Signed-off-by: zFernand0 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8b84276fbd..33c3441885 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ node('ca-jenkins-agent') { def PRODUCT_NAME = "Zowe Explorer" // This is the what should be considered the master branch (for deployment purposes) - def MASTER_BRANCH = "v1.6.x" + def MASTER_BRANCH = "v1.7.x" // Artifactory Details def ARTIFACTORY_CREDENTIALS_ID = "zowe.jfrog.io"