Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
225 changes: 225 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
# GitHub Actions Workflow created for testing and preparing the plugin release in following steps:
# - validate Gradle Wrapper,
# - run test and verifyPlugin tasks,
# - run buildPlugin task and prepare artifact for the further tests,
# - run IntelliJ Plugin Verifier,
# - create a draft release.
#
# Workflow is triggered on push and pull_request events.
#
# Docs:
# - GitHub Actions: https://help.github.com/en/actions
# - IntelliJ Plugin Verifier GitHub Action: https://github.com/ChrisCarini/intellij-platform-plugin-verifier-action
#
## JBIJPPTPL

name: Build
on: [push, pull_request]
jobs:

# Run Gradle Wrapper Validation Action to verify the wrapper's checksum
gradleValidation:
name: Gradle Wrapper
runs-on: ubuntu-latest
steps:

# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2

# Validate wrapper
- name: Gradle Wrapper Validation
uses: gradle/wrapper-validation-action@v1

# Run verifyPlugin and test Gradle tasks
test:
name: Test
needs: gradleValidation
runs-on: ubuntu-latest
steps:

# Setup Java 1.8 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v1
with:
java-version: 1.8

# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2

# Cache Gradle dependencies
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}

# Cache Gradle Wrapper
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v2
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}

# Run detekt, ktlint and tests
- name: Run Linters and Test
run: ./gradlew check

# Run verifyPlugin Gradle task
- name: Verify Plugin
run: ./gradlew verifyPlugin

# Build plugin with buildPlugin Gradle task and provide the artifact for the next workflow jobs
# Requires test job to be passed
build:
name: Build
needs: test
runs-on: ubuntu-latest
outputs:
name: ${{ steps.properties.outputs.name }}
version: ${{ steps.properties.outputs.version }}
changelog: ${{ steps.properties.outputs.changelog }}
artifact: ${{ steps.properties.outputs.artifact }}
steps:

# Setup Java 1.8 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v1
with:
java-version: 1.8

# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2

# Cache Gradle Dependencies
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}

# Cache Gradle Wrapper
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v2
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}

# Set environment variables
- name: Export Properties
id: properties
shell: bash
run: |
PROPERTIES="$(./gradlew properties --console=plain -q)"
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
NAME="$(echo "$PROPERTIES" | grep "^pluginName_:" | cut -f2- -d ' ')"
CHANGELOG="$(./gradlew getChangelog --unreleased --no-header --console=plain -q)"
CHANGELOG="${CHANGELOG//'%'/'%25'}"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
ARTIFACT="${NAME}-${VERSION}.zip"

echo "::set-output name=version::$VERSION"
echo "::set-output name=name::$NAME"
echo "::set-output name=changelog::$CHANGELOG"
echo "::set-output name=artifact::$ARTIFACT"

# Build artifact using buildPlugin Gradle task
- name: Build Plugin
run: ./gradlew buildPlugin

# Upload plugin artifact to make it available in the next jobs
- name: Upload artifact
uses: actions/upload-artifact@v1
with:
name: plugin-artifact
path: ./build/distributions/${{ needs.build.outputs.artifact }}

# Verify built plugin using IntelliJ Plugin Verifier tool
# Requires build job to be passed
verify:
name: Verify
needs: build
runs-on: ubuntu-latest
steps:

# Download plugin artifact provided by the previous job
- name: Download Artifact
uses: actions/download-artifact@v1
with:
name: plugin-artifact

# Run IntelliJ Plugin Verifier action using GitHub Action
- name: Verify Plugin
id: verify
uses: ChrisCarini/intellij-platform-plugin-verifier-action@v0.0.2
with:
plugin-location: plugin-artifact/*.zip
ide-versions: |
ideaIC:2019.3
ideaIC:2020.1
ideaIC:2020.2

# Print the output of the verify step
- name: Print Logs
if: ${{ always() }}
env:
OUTPUT_LOG: ${{ steps.verify.outputs.verification-output-log-filename }}
run: |
echo "The verifier log file [$OUTPUT_LOG] contents : " ;
cat $OUTPUT_LOG

# Prepare a draft release for GitHub Releases page for the manual verification
# If accepted and published, release workflow would be triggered
releaseDraft:
name: Release Draft
needs: [build, verify]
runs-on: ubuntu-latest
steps:

# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2

# Remove old release drafts by using the curl request for the available releases with draft flag
- name: Remove Old Release Drafts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$GITHUB_REPOSITORY/releases \
| tr '\r\n' ' ' \
| jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' \
curl -X DELETE -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$GITHUB_REPOSITORY/releases/{}

# Create new release draft - which is not publicly visible and requires manual acceptance
- name: Create Release Draft
id: createDraft
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ needs.build.outputs.version }}
release_name: v${{ needs.build.outputs.version }}
body: ${{ needs.build.outputs.changelog }}
draft: true

# Download plugin artifact provided by the previous job
- name: Download Artifact
uses: actions/download-artifact@v1
with:
name: plugin-artifact

# Upload artifact as a release asset
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.createDraft.outputs.upload_url }}
asset_path: ./plugin-artifact/${{ needs.build.outputs.artifact }}
asset_name: ${{ needs.build.outputs.artifact }}
asset_content_type: application/zip
70 changes: 70 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# GitHub Actions Workflow created for handling the release process based on the draft release prepared
# with the Build workflow. Running the publishPlugin task requires the PUBLISH_TOKEN secret provided.

name: Release
on:
release:
types: [prereleased, released]

jobs:

# Prepare and publish the plugin to the Marketplace repository
release:
name: Publish Plugin
runs-on: ubuntu-latest
steps:

# Setup Java 1.8 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v1
with:
java-version: 1.8

# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2
with:
ref: ${{ github.event.release.tag_name }}

# Publish the plugin to the Marketplace
- name: Publish Plugin
env:
PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
run: ./gradlew publishPlugin

# Patch changelog, commit and push to the current repository
changelog:
name: Update Changelog
needs: release
runs-on: ubuntu-latest
steps:

# Setup Java 1.8 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v1
with:
java-version: 1.8

# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v2
with:
ref: ${{ github.event.release.tag_name }}

# Update Unreleased section with the current version
- name: Patch Changelog
run: ./gradlew patchChangelog

# Commit patched Changelog
- name: Commit files
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git commit -m "Update changelog" -a

# Push changes
- name: Push changes
uses: ad-m/github-push-action@master
with:
branch: main
github_token: ${{ secrets.GITHUB_TOKEN }}
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
gen/
build/
.gradle/
.idea/
target/
out/
.project
.classpath
/bootstrap.xml
/font-awesome.xml
*.*~
*.iml
**/*.iml
*.ipl
**/*.ipl
*.iwl
**/*.iwl
/logs
*.log
config.properties
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!-- Keep a Changelog guide -> https://keepachangelog.com -->

# Changelog

## [Unreleased]
### Changed
- Migrated the plugin to gradle

### Fixed
- Fixed issues with deprecated APIs

## [0.1.1]
### Added
- Basic support
29 changes: 25 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
This plugin helps you to run http-requests from an IDEA's text editor
# Rest Client

#### Features
- Supports GET, POST, PUT, DELETE, PATCH requests
![Build](https://github.com/danblack/idea-rest-client/workflows/Build/badge.svg)
[![Version](https://img.shields.io/jetbrains/plugin/v/9232-http-editor-client.svg)](https://plugins.jetbrains.com/plugin/9232-http-editor-client)
[![Downloads](https://img.shields.io/jetbrains/plugin/d/9232-http-editor-client.svg)](https://plugins.jetbrains.com/plugin/9232-http-editor-client)

<!-- Plugin description -->
Allows making http requests using IDEA text editor

## Features
- Supports GET, POST, PUT, DELETE, PATCH, HEAD & OPTIONS requests
- Multiline request parameters
- Response auto format (based on response Content-Type header)
- Customized colors and fonts
Expand All @@ -10,7 +17,7 @@ This plugin helps you to run http-requests from an IDEA's text editor

![demo](doc/demo.png)

#### YouTube demos
## YouTube demos

* [Simple demo](https://www.youtube.com/watch?v=AliJaGmXlxc)

Expand Down Expand Up @@ -90,3 +97,17 @@ http://localhost:8080/mirror-params?one=1
one: 1
five: 5
```

<!-- Plugin description end -->

## Installation

- Using IDE built-in plugin system:

<kbd>Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>Marketplace</kbd> > <kbd>Search for "%NAME%"</kbd> >
<kbd>Install Plugin</kbd>

- Manually:

Download the [latest release](https://github.com/%REPOSITORY%/releases/latest) and install it manually using
<kbd>Preferences</kbd> > <kbd>Plugins</kbd> > <kbd>⚙️</kbd> > <kbd>Install plugin from disk...</kbd>
Loading