Add scripts for quick install (#106)

diff --git a/README.md b/README.md
index 926a14d..0456abd 100644
--- a/README.md
+++ b/README.md
@@ -11,12 +11,33 @@
 SkyWalking CLI is a command interaction tool for the SkyWalking user or OPS team, as an alternative besides using browser GUI.
 It is based on SkyWalking [GraphQL query protocol](https://github.com/apache/skywalking-query-protocol), same as GUI.
 
-# Download
-Go to the [download page](https://skywalking.apache.org/downloads/) to download all available binaries, including MacOS, Linux, Windows.
-If you want to try the latest features, however, you can compile the latest codes yourself, as the guide below. 
+## Install
 
-# Install
-As SkyWalking CLI is using `Makefile`, compiling the project is as easy as executing a command in the root directory of the project.
+### Quick install
+
+#### Linux or macOS
+
+Install the latest version with the following command:
+
+```shell
+/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/apache/skywalking-cli/tree/master/scripts/install.sh)"
+```
+
+#### Windows
+
+Note: you need to start cmd or powershell in administrator mode.
+
+```shell
+curl -LO "https://raw.githubusercontent.com/apache/skywalking-cli/tree/master/scripts/install.bat" && .\install.bat
+```
+
+### Install by available binaries
+
+Go to the [download page](https://skywalking.apache.org/downloads/) to download all available binaries, including macOS, Linux, Windows.
+
+### Build from source
+
+If you want to try the latest features, you can compile the latest source code and build `swctl` by yourself. Since SkyWalking CLI is using `Makefile`, compiling the project is as easy as executing a command in the root directory of the project.
 
 ```shell
 git clone https://github.com/apache/skywalking-cli
@@ -24,9 +45,10 @@
 make
 ```
 
-Then copy the `./bin/swctl-latest-(darwin|linux|windows)-amd64` to your `PATH` directory according to your OS,
-usually `/usr/bin/` or `/usr/local/bin`, or you can copy it to any directory you like,
-and add that directory to `PATH`, we recommend you to rename the `swctl-latest-(darwin|linux|windows)-amd64` to `swctl`.
+Then copy the `./bin/swctl-latest-(darwin|linux|windows)-amd64` to your `PATH` directory according to your OS, usually `/usr/bin/` or `/usr/local/bin`. 
+
+You can also copy it to any directory you like, then add that directory to `PATH`. **We recommend you to rename the `swctl-latest-(darwin|linux|windows)-amd64` to `swctl`.**
+
 
 # Commands
 Commands in SkyWalking CLI are organized into two levels, in the form of `swctl --option <level1> --option <level2> --option`,
diff --git a/scripts/install.bat b/scripts/install.bat
new file mode 100644
index 0000000..116a0de
--- /dev/null
+++ b/scripts/install.bat
@@ -0,0 +1,70 @@
+@REM Licensed to the Apache Software Foundation (ASF) under one or more

+@REM contributor license agreements.  See the NOTICE file distributed with

+@REM this work for additional information regarding copyright ownership.

+@REM The ASF licenses this file to You under the Apache License, Version 2.0

+@REM (the "License"); you may not use this file except in compliance with

+@REM the License.  You may obtain a copy of the License at

+@REM

+@REM     http://www.apache.org/licenses/LICENSE-2.0

+@REM

+@REM Unless required by applicable law or agreed to in writing, software

+@REM distributed under the License is distributed on an "AS IS" BASIS,

+@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+@REM See the License for the specific language governing permissions and

+@REM limitations under the License.

+

+@REM Installation (Note: you need to start cmd or powershell in administrator mode.)

+@echo off

+setlocal ENABLEDELAYEDEXPANSION

+

+@REM  Get the latest version of swctl.

+set FLAG="FALSE"

+set VERSION= UNKNOW

+curl -LO "https://raw.githubusercontent.com/apache/skywalking-website/master/data/releases.yml"

+if EXIST "releases.yml" (

+    for /F "tokens=1,2,*" %%i in ('FINDSTR "name version" "./releases.yml"') do (

+        if !FLAG! EQU "TRUE" (

+            set FLAG="FALSE"

+            set VERSION=%%k

+        )

+        if "%%k" == "SkyWalking CLI" (set FLAG="TRUE")

+    )

+)

+set VERSION=%VERSION:~1%

+@echo The latest version of swctl is %VERSION%

+

+if "%VERSION%" NEQ "UNKNOW" (

+

+    @REM Download the binary package.

+    curl -LO "https://apache.website-solution.net/skywalking/cli/%VERSION%/skywalking-cli-%VERSION%-bin.tgz"

+    if EXIST "skywalking-cli-%VERSION%-bin.tgz" (

+        tar -zxvf ".\skywalking-cli-%VERSION%-bin.tgz"

+

+        @REM Verify the integrity of the downloaded file.

+        curl -LO "https://downloads.apache.org/skywalking/cli/%VERSION%/skywalking-cli-%VERSION%-bin.tgz.sha512"

+        CertUtil -hashfile skywalking-cli-%VERSION%-bin.tgz sha512 | findstr /X "[0-9a-zA-Z]*" > verify.txt

+        for /F "tokens=*" %%i in ( 'type ".\verify.txt"' ) do ( set VERIFY1="%%i  skywalking-cli-%VERSION%-bin.tgz" )

+        for /F "tokens=*" %%i in ( 'type ".\skywalking-cli-%VERSION%-bin.tgz.sha512"' ) do ( set VERIFY2="%%i" )

+        if "!VERIFY1!" EQU "!VERIFY2!" (

+            @echo Through verification, the file is complete.

+            mkdir "C:\Program Files\swctl-cli"

+

+            @REM Add swctl to the environment variable PATH.

+            copy ".\skywalking-cli-%VERSION%-bin\bin\swctl-%VERSION%-windows-amd64" "C:\Program Files\swctl-cli\swctl.exe"

+            setx "Path" "C:\Program Files\swctl-cli\;%path%" /m

+

+            @REM Delete unnecessary files.

+            del ".\skywalking-cli-%VERSION%-bin.tgz" ".\verify.txt" 

+            del ".\skywalking-cli-%VERSION%-bin.tgz.sha512" ".\releases.yml"

+            rd /S /Q ".\skywalking-cli-%VERSION%-bin"

+            

+            @echo Reopen the terminal and type 'swctl --help' to get more information.

+        ) else (

+            @echo The file is incomplete.

+        )

+    ) else (

+        @echo Failed to download skywalking-cli-%VERSION%-bin.tgz

+    )

+) else (

+    @echo Can't get the latest version. The install script may be invalid, try other install methods please.

+)
\ No newline at end of file
diff --git a/scripts/install.sh b/scripts/install.sh
new file mode 100644
index 0000000..a1ccef5
--- /dev/null
+++ b/scripts/install.sh
@@ -0,0 +1,84 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Treat unset variables and parameters other than the special parameters ‘@’ or ‘*’ as an error.
+set -u
+
+# Exit the script with a message.
+abort() {
+  printf "%s\n" "$@"
+  exit 1
+}
+
+# Check if there is a bash.
+if [ -z "${BASH_VERSION:-}" ]; then
+  abort "Bash is required to interpret this install script."
+fi
+
+# Check OS.
+OS="$(uname)"
+if [[ "$OS" != "Darwin" && "$OS" != "Linux" ]]; then
+  abort "The install script is only supported on macOS and Linux."
+fi
+
+check_cmd() {
+    if ! command -v "$@" &> /dev/null 
+    then
+        abort "You must install "$@" before running the install script."
+    fi
+}
+
+# Check if the commands to be used exist.
+for cmd in shasum curl tar awk; do
+  check_cmd $cmd
+done
+
+# Convert the string to lower case.
+OS=$(echo $OS | awk '{print tolower($0)}')
+
+# Get the latest version of swctl.
+VERSION=$(curl "https://raw.githubusercontent.com/apache/skywalking-website/master/data/releases.yml" | grep --after-context=7 "name: SkyWalking CLI" | grep "version" | grep -o "[0-9].[0-9].[0-9]")
+if [ "$VERSION" != "" ]; then
+    echo "The latest version of swctl is $VERSION"
+    
+    # Download the binary package.
+    curl -sSLO "https://apache.website-solution.net/skywalking/cli/$VERSION/skywalking-cli-$VERSION-bin.tgz" > /dev/null
+    if [ -f "skywalking-cli-$VERSION-bin.tgz" ]; then
+        # Verify the integrity of the downloaded file.
+        curl -sSLO "https://downloads.apache.org/skywalking/cli/$VERSION/skywalking-cli-$VERSION-bin.tgz.sha512" > /dev/null
+        VERIFY=$(shasum -a512 -c "skywalking-cli-$VERSION-bin.tgz.sha512")
+        if [ "${VERIFY#* }" = "OK" ]; then
+            echo "The downloaded file is complete."
+            tar -zxvf skywalking-cli-$VERSION-bin.tgz
+            
+            # Add swctl to the environment variable PATH.
+            sudo cp skywalking-cli-$VERSION-bin/bin/swctl-$VERSION-$OS-amd64 /usr/local/bin/swctl
+            
+            # Delete unnecessary files.
+            sudo rm -rf "./skywalking-cli-$VERSION-bin.tgz.sha512" "./skywalking-cli-$VERSION-bin.tgz" "./skywalking-cli-$VERSION-bin"
+ 
+            echo "Type 'swctl --help' to get more information."
+        else
+            abort "The downloaded file is incomplete."
+        fi
+    else
+        abort "Failed to download skywalking-cli-$VERSION-bin.tgz"
+    fi
+else
+    echo $VERSION
+    abort "Can't get the latest version. The install script may be invalid, try other install methods please."
+fi
\ No newline at end of file