From 2d64322739160886d2a485cfb049da77da6da3f8 Mon Sep 17 00:00:00 2001 From: Deepankumar Date: Mon, 22 Jun 2020 08:18:35 +0530 Subject: [PATCH] plugins: Multiple plugins implemented (#119) * Ansible plugin added * kubectl plugin added * NPM Plugin added * brew plugin added * shebang added --- plugins/brew/README.md | 22 ++++++ plugins/brew/brew.plugin.sh | 10 +++ plugins/kubectl/README.md | 107 ++++++++++++++++++++++++++ plugins/kubectl/kubectl.plugin.sh | 123 ++++++++++++++++++++++++++++++ plugins/npm/README.md | 27 +++++++ plugins/npm/npm.plugin.sh | 45 +++++++++++ 6 files changed, 334 insertions(+) create mode 100644 plugins/brew/README.md create mode 100644 plugins/brew/brew.plugin.sh create mode 100644 plugins/kubectl/README.md create mode 100644 plugins/kubectl/kubectl.plugin.sh create mode 100644 plugins/npm/README.md create mode 100644 plugins/npm/npm.plugin.sh diff --git a/plugins/brew/README.md b/plugins/brew/README.md new file mode 100644 index 0000000..b7ca8e8 --- /dev/null +++ b/plugins/brew/README.md @@ -0,0 +1,22 @@ +# brew plugin + +The plugin adds several aliases for common [brew](https://brew.sh) commands. + +To use it, add `brew` to the plugins array of your bashrc file: + +```bash +plugins=(... brew) +``` + +## Aliases + +| Alias | Command | Description | +|--------|----------------------|---------------| +| brewp | `brew pin` | Pin a specified formulae, preventing them from being upgraded when issuing the brew upgrade command. | +| brews | `brew list -1` | List installed formulae, one entry per line, or the installed files for a given formulae. | +| brewsp | `brew list --pinned` | Show the versions of pinned formulae, or only the specified (pinned) formulae if formulae are given. | +| bubo | `brew update && brew outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated formulae. | +| bubc | `brew upgrade && brew cleanup` | Upgrade outdated, unpinned brews (with existing install options), then removes stale lock files and outdated downloads for formulae and casks, and removes old versions of installed formulae. | +| bubu | `bubo && bubc` | Updates Homebrew, lists outdated formulae, upgrades oudated and unpinned formulae, and removes stale and outdated downloads and versions. | +| bcubo | `brew update && brew cask outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated casks. | +| bcubc | `brew cask reinstall $(brew cask outdated) && brew cleanup` | Updates outdated casks, then runs cleanup. | \ No newline at end of file diff --git a/plugins/brew/brew.plugin.sh b/plugins/brew/brew.plugin.sh new file mode 100644 index 0000000..d98bc8d --- /dev/null +++ b/plugins/brew/brew.plugin.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +alias brewp='brew pin' +alias brews='brew list -1' +alias brewsp='brew list --pinned' +alias bubo='brew update && brew outdated' +alias bubc='brew upgrade && brew cleanup' +alias bubu='bubo && bubc' +alias bcubo='brew update && brew cask outdated' +alias bcubc='brew cask reinstall $(brew cask outdated) && brew cleanup' \ No newline at end of file diff --git a/plugins/kubectl/README.md b/plugins/kubectl/README.md new file mode 100644 index 0000000..ee0429d --- /dev/null +++ b/plugins/kubectl/README.md @@ -0,0 +1,107 @@ +# Kubectl plugin + +This plugin adds completion for the [Kubernetes cluster manager](https://kubernetes.io/docs/reference/kubectl/kubectl/), +as well as some aliases for common kubectl commands. + +To use it, add `kubectl` to the plugins array in your bashrc file: + +```bash +plugins=(... kubectl) +``` + +## Aliases + +| Alias | Command | Description | +|:--------|:------------------------------------|:-------------------------------------------------------------------------------------------------| +| k | `kubectl` | The kubectl command | +| kca | `kubectl --all-namespaces` | The kubectl command targeting all namespaces | +| kaf | `kubectl apply -f` | Apply a YML file | +| keti | `kubectl exec -ti` | Drop into an interactive terminal on a container | +| | | **Manage configuration quickly to switch contexts between local, dev and staging** | +| kcuc | `kubectl config use-context` | Set the current-context in a kubeconfig file | +| kcsc | `kubectl config set-context` | Set a context entry in kubeconfig | +| kcdc | `kubectl config delete-context` | Delete the specified context from the kubeconfig | +| kccc | `kubectl config current-context` | Display the current-context | +| kcgc | `kubectl config get-contexts` | List of contexts available +| | | **General aliases** | +| kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector | +| kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument | +| | | **Pod management** | +| kgp | `kubectl get pods` | List all pods in ps output format | +| kgpw | `kgp --watch` | After listing/getting the requested object, watch for changes | +| kgpwide | `kgp -o wide` | Output in plain-text format with any additional information. For pods, the node name is included | +| kep | `kubectl edit pods` | Edit pods from the default editor | +| kdp | `kubectl describe pods` | Describe all pods | +| kdelp | `kubectl delete pods` | Delete all pods matching passed arguments | +| kgpl | `kgp -l` | Get pod by label. Example: `kgpl "app=myapp" -n myns` | +| | | **Service management** | +| kgs | `kubectl get svc` | List all services in ps output format | +| kgsw | `kgs --watch` | After listing all services, watch for changes | +| kgswide | `kgs -o wide` | After listing all services, output in plain-text format with any additional information | +| kes | `kubectl edit svc` | Edit services(svc) from the default editor | +| kds | `kubectl describe svc` | Describe all services in detail | +| kdels | `kubectl delete svc` | Delete all services matching passed argument | +| | | **Ingress management** | +| kgi | `kubectl get ingress` | List ingress resources in ps output format | +| kei | `kubectl edit ingress` | Edit ingress resource from the default editor | +| kdi | `kubectl describe ingress` | Describe ingress resource in detail | +| kdeli | `kubectl delete ingress` | Delete ingress resources matching passed argument | +| | | **Namespace management** | +| kgns | `kubectl get namespaces` | List the current namespaces in a cluster | +| kcn | `kubectl config set-context ...` | Change current namespace | +| kens | `kubectl edit namespace` | Edit namespace resource from the default editor | +| kdns | `kubectl describe namespace` | Describe namespace resource in detail | +| kdelns | `kubectl delete namespace` | Delete the namespace. WARNING! This deletes everything in the namespace | +| | | **ConfigMap management** | +| kgcm | `kubectl get configmaps` | List the configmaps in ps output format | +| kecm | `kubectl edit configmap` | Edit configmap resource from the default editor | +| kdcm | `kubectl describe configmap` | Describe configmap resource in detail | +| kdelcm | `kubectl delete configmap` | Delete the configmap | +| | | **Secret management** | +| kgsec | `kubectl get secret` | Get secret for decoding | +| kdsec | `kubectl describe secret` | Describe secret resource in detail | +| kdelsec | `kubectl delete secret` | Delete the secret | +| | | **Deployment management** | +| kgd | `kubectl get deployment` | Get the deployment | +| kgdw | `kgd --watch` | After getting the deployment, watch for changes | +| kgdwide | `kgd -o wide` | After getting the deployment, output in plain-text format with any additional information | +| ked | `kubectl edit deployment` | Edit deployment resource from the default editor | +| kdd | `kubectl describe deployment` | Describe deployment resource in detail | +| kdeld | `kubectl delete deployment` | Delete the deployment | +| ksd | `kubectl scale deployment` | Scale a deployment | +| krsd | `kubectl rollout status deployment` | Check the rollout status of a deployment | +| kres | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime | +| | | **Rollout management** | +| kgrs | `kubectl get rs` | To see the ReplicaSet `rs` created by the deployment | +| krh | `kubectl rollout history` | Check the revisions of this deployment | +| kru | `kubectl rollout undo` | Rollback to the previous revision | +| | | **Port forwarding** | +| kpf | `kubectl port-forward` | Forward one or more local ports to a pod | +| | | **Tools for accessing all information** | +| kga | `kubectl get all` | List all resources in ps format | +| kgaa | `kubectl get all --all-namespaces` | List the requested object(s) across all namespaces | +| | | **Logs** | +| kl | `kubectl logs` | Print the logs for a container or resource | +| klf | `kubectl logs -f` | Stream the logs for a container or resource (follow) | +| | | **File copy** | +| kcp | `kubectl cp` | Copy files and directories to and from containers | +| | | **Node management** | +| kgno | `kubectl get nodes` | List the nodes in ps output format | +| keno | `kubectl edit node` | Edit nodes resource from the default editor | +| kdno | `kubectl describe node` | Describe node resource in detail | +| kdelno | `kubectl delete node` | Delete the node | +| | | **Persistent Volume Claim management** | +| kgpvc | `kubectl get pvc` | List all PVCs | +| kgpvcw | `kgpvc --watch` | After listing/getting the requested object, watch for changes | +| kepvc | `kubectl edit pvc` | Edit pvcs from the default editor | +| kdpvc | `kubectl describe pvc` | Descirbe all pvcs | +| kdelpvc | `kubectl delete pvc` | Delete all pvcs matching passed arguments | +| | | | +| kgss | `kubectl get statefulset` | List the statefulsets in ps format | +| kgssw | `kgss --watch` | After getting the list of statefulsets, watch for changes | +| kgsswide| `kgss -o wide` | After getting the statefulsets, output in plain-text format with any additional information | +| kess | `kubectl edit statefulset` | Edit statefulset resource from the default editor | +| kdss | `kubectl describe statefulset` | Describe statefulset resource in detail | +| kdelss | `kubectl delete statefulset` | Delete the statefulset | +| ksss | `kubectl scale statefulset` | Scale a statefulset | +| krsss | `kubectl rollout status statefulset`| Check the rollout status of a deployment | \ No newline at end of file diff --git a/plugins/kubectl/kubectl.plugin.sh b/plugins/kubectl/kubectl.plugin.sh new file mode 100644 index 0000000..e53e8fa --- /dev/null +++ b/plugins/kubectl/kubectl.plugin.sh @@ -0,0 +1,123 @@ +#!/usr/bin/env bash +# This command is used a LOT both below and in daily life +alias k=kubectl + +# Execute a kubectl command against all namespaces +alias kca='f(){ kubectl "$@" --all-namespaces; unset -f f; }; f' + +# Apply a YML file +alias kaf='kubectl apply -f' + +# Drop into an interactive terminal on a container +alias keti='kubectl exec -ti' + +# Manage configuration quickly to switch contexts between local, dev ad staging. +alias kcuc='kubectl config use-context' +alias kcsc='kubectl config set-context' +alias kcdc='kubectl config delete-context' +alias kccc='kubectl config current-context' + +# List all contexts +alias kcgc='kubectl config get-contexts' + +# General aliases +alias kdel='kubectl delete' +alias kdelf='kubectl delete -f' + +# Pod management. +alias kgp='kubectl get pods' +alias kgpw='kgp --watch' +alias kgpwide='kgp -o wide' +alias kep='kubectl edit pods' +alias kdp='kubectl describe pods' +alias kdelp='kubectl delete pods' + +# get pod by label: kgpl "app=myapp" -n myns +alias kgpl='kgp -l' + +# Service management. +alias kgs='kubectl get svc' +alias kgsw='kgs --watch' +alias kgswide='kgs -o wide' +alias kes='kubectl edit svc' +alias kds='kubectl describe svc' +alias kdels='kubectl delete svc' + +# Ingress management +alias kgi='kubectl get ingress' +alias kei='kubectl edit ingress' +alias kdi='kubectl describe ingress' +alias kdeli='kubectl delete ingress' + +# Namespace management +alias kgns='kubectl get namespaces' +alias kens='kubectl edit namespace' +alias kdns='kubectl describe namespace' +alias kdelns='kubectl delete namespace' +alias kcn='kubectl config set-context $(kubectl config current-context) --namespace' + +# ConfigMap management +alias kgcm='kubectl get configmaps' +alias kecm='kubectl edit configmap' +alias kdcm='kubectl describe configmap' +alias kdelcm='kubectl delete configmap' + +# Secret management +alias kgsec='kubectl get secret' +alias kdsec='kubectl describe secret' +alias kdelsec='kubectl delete secret' + +# Deployment management. +alias kgd='kubectl get deployment' +alias kgdw='kgd --watch' +alias kgdwide='kgd -o wide' +alias ked='kubectl edit deployment' +alias kdd='kubectl describe deployment' +alias kdeld='kubectl delete deployment' +alias ksd='kubectl scale deployment' +alias krsd='kubectl rollout status deployment' +kres(){ + kubectl set env $@ REFRESHED_AT=$(date +%Y%m%d%H%M%S) +} + +# Rollout management. +alias kgrs='kubectl get rs' +alias krh='kubectl rollout history' +alias kru='kubectl rollout undo' + +# Statefulset management. +alias kgss='kubectl get statefulset' +alias kgssw='kgss --watch' +alias kgsswide='kgss -o wide' +alias kess='kubectl edit statefulset' +alias kdss='kubectl describe statefulset' +alias kdelss='kubectl delete statefulset' +alias ksss='kubectl scale statefulset' +alias krsss='kubectl rollout status statefulset' + +# Port forwarding +alias kpf="kubectl port-forward" + +# Tools for accessing all information +alias kga='kubectl get all' +alias kgaa='kubectl get all --all-namespaces' + +# Logs +alias kl='kubectl logs' +alias klf='kubectl logs -f' + +# File copy +alias kcp='kubectl cp' + +# Node Management +alias kgno='kubectl get nodes' +alias keno='kubectl edit node' +alias kdno='kubectl describe node' +alias kdelno='kubectl delete node' + +# PVC management. +alias kgpvc='kubectl get pvc' +alias kgpvcw='kgpvc --watch' +alias kepvc='kubectl edit pvc' +alias kdpvc='kubectl describe pvc' +alias kdelpvc='kubectl delete pvc' diff --git a/plugins/npm/README.md b/plugins/npm/README.md new file mode 100644 index 0000000..94d4cc8 --- /dev/null +++ b/plugins/npm/README.md @@ -0,0 +1,27 @@ +## npm plugin + +The npm plugin provides completion as well as adding many useful aliases. + +To use it, add npm to the plugins array of your bashrc file: + +```bash +plugins=(... npm) +``` + +## Aliases + +| Alias | Command | Descripton | +|:------ |:-----------------------------|:----------------------------------------------------------------| +| `npmg` | `npm i -g` | Install dependencies globally | +| `npmS` | `npm i -S` | Install and save to dependencies in your package.json | +| `npmD` | `npm i -D` | Install and save to dev-dependencies in your package.json | +| `npmE` | `PATH="$(npm bin)":"$PATH"` | Run command from node_modules folder based on current directory | +| `npmO` | `npm outdated` | Check which npm modules are outdated | +| `npmV` | `npm -v` | Check package versions | +| `npmL` | `npm list` | List installed packages | +| `npmL0` | `npm ls --depth=0` | List top-level installed packages | +| `npmst` | `npm start` | Run npm start | +| `npmt` | `npm test` | Run npm test | +| `npmR` | `npm run` | Run npm scripts | +| `npmP` | `npm publish` | Run npm publish | +| `npmI` | `npm init` | Run npm init | \ No newline at end of file diff --git a/plugins/npm/npm.plugin.sh b/plugins/npm/npm.plugin.sh new file mode 100644 index 0000000..d9b4cec --- /dev/null +++ b/plugins/npm/npm.plugin.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# Install dependencies globally +alias npmg="npm i -g " + +# npm package names are lowercase +# Thus, we've used camelCase for the following aliases: + +# Install and save to dependencies in your package.json +# npms is used by https://www.npmjs.com/package/npms +alias npmS="npm i -S " + +# Install and save to dev-dependencies in your package.json +# npmd is used by https://github.com/dominictarr/npmd +alias npmD="npm i -D " + +# Execute command from node_modules folder based on current directory +# i.e npmE gulp +alias npmE='PATH="$(npm bin)":"$PATH"' + +# Check which npm modules are outdated +alias npmO="npm outdated" + +# Check package versions +alias npmV="npm -v" + +# List packages +alias npmL="npm list" + +# List top-level installed packages +alias npmL0="npm ls --depth=0" + +# Run npm start +alias npmst="npm start" + +# Run npm test +alias npmt="npm test" + +# Run npm scripts +alias npmR="npm run" + +# Run npm publish +alias npmP="npm publish" + +# Run npm init +alias npmI="npm init" \ No newline at end of file