v0.2.0
This commit is contained in:
		
							
								
								
									
										9
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| PREFIX ?= /usr/local | ||||
|  | ||||
| install: | ||||
| 	install -Dm755 piglet $(PREFIX)/bin/piglet | ||||
| 	install -Dm644 completion.bash $(PREFIX)/share/bash-completion/completions/piglet | ||||
|  | ||||
| uninstall: | ||||
| 	rm -v $(PREFIX)/bin/piglet | ||||
| 	rm -v $(PREFIX)/share/bash-completion/completions/piglet | ||||
							
								
								
									
										54
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,8 +1,9 @@ | ||||
| # piglet | ||||
|  | ||||
| piglet is a [Porkbun DNS API](https://porkbun.com/api/json/v3/documentation) CLI client. | ||||
| **piglet** is a [Porkbun DNS API](https://porkbun.com/api/json/v3/documentation) | ||||
| CLI client. | ||||
|  | ||||
| Currently piglet can: | ||||
| Currently **piglet** can: | ||||
|  | ||||
| - Create a DNS record | ||||
| - Edit record | ||||
| @@ -11,13 +12,44 @@ Currently piglet can: | ||||
|  | ||||
| # Installation | ||||
|  | ||||
| Just copy `piglet` to your PATH. For example: | ||||
| 1. Clone this Git-repository. | ||||
| 2. Install files. | ||||
|  | ||||
| Installation with Makefile: | ||||
|  | ||||
| ```sh | ||||
| install -Dm755 piglet /usr/local/bin/piglet | ||||
| # System-wide installation | ||||
| sudo make install | ||||
| # Local installation (into user's home dir) | ||||
| PREFIX=~/.local make install | ||||
| ``` | ||||
|  | ||||
| Install [jq](https://stedolan.github.io/jq/) to enable pretty output. | ||||
| Manual installation: | ||||
|  | ||||
| ```sh | ||||
| # Just copy files into your PATH, for example: | ||||
| sudo install -Dm755 piglet /usr/local/bin/piglet | ||||
| sudo install -Dm644 completion.bash /usr/share/bash-completion/completions/piglet | ||||
| ``` | ||||
|  | ||||
| Make sure your shell loads files from `/usr/local/share/bash-completion/completions` | ||||
| or `~/.local/share/bash-completion/completions` for Bash completion. | ||||
|  | ||||
| Add to your **~/.bashrc**: | ||||
|  | ||||
| ```sh | ||||
| for completion in {/usr/local,~/.local}/share/bash-completion/completions/*; do | ||||
|    [ -f "$completion" ] && . "$completion" | ||||
| done | ||||
| ``` | ||||
|  | ||||
| Create file `~/.config/piglet/domains.list` with your domains list (each domain on | ||||
| new line) for complete domains names. For example: | ||||
|  | ||||
| ``` | ||||
| example.com | ||||
| another-domain.tld | ||||
| ``` | ||||
|  | ||||
| # Getting started | ||||
|  | ||||
| @@ -27,30 +59,30 @@ For first step setup the configuration file: | ||||
| piglet config | ||||
| ``` | ||||
|  | ||||
| piglet creates `~/.config/piglet.conf` file with API credentials. | ||||
| piglet creates `~/.config/piglet/piglet.conf` file with API credentials. | ||||
|  | ||||
| Retrieve DNS records: | ||||
|  | ||||
| ```sh | ||||
| piglet -d example.org retrieve | ||||
| piglet retrieve example.com | ||||
| ``` | ||||
|  | ||||
| Create A-record on subdomain `mail`: | ||||
|  | ||||
| ```sh | ||||
| piglet -d example.org create name=mail type=a content=127.0.0.1 ttl=3600 | ||||
| piglet create mail.example.com type=a content=127.0.0.1 ttl=3600 | ||||
| ``` | ||||
|  | ||||
| Edit A-record for `example.org` (change to 127.0.0.1): | ||||
|  | ||||
| ```sh | ||||
| piglet -d example.org edit id=220755500 type=a content=127.0.0.1 | ||||
| piglet edit example.org id=220755500 type=a content=127.0.0.1 | ||||
| ``` | ||||
|  | ||||
| Delete DNS record by id: | ||||
|  | ||||
| ```sh | ||||
| piglet -d example.org delete id=220755592 | ||||
| piglet delete example.org id=220755592 | ||||
| ``` | ||||
|  | ||||
| See `piglet --help` for more info. | ||||
| See **piglet --help** for more info. | ||||
|   | ||||
							
								
								
									
										5
									
								
								completion.bash
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								completion.bash
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| # Bash completion for piglet | ||||
| # https://git.nxhs.cloud/ge/piglet | ||||
|  | ||||
| complete -W "create edit delete retrieve \ | ||||
|     $(cat ~/.config/piglet/domains.list | tr '\n' ' ')" piglet | ||||
							
								
								
									
										53
									
								
								piglet
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								piglet
									
									
									
									
									
								
							| @@ -27,11 +27,15 @@ | ||||
| # | ||||
| # For more information, please refer to <http://unlicense.org/> | ||||
|  | ||||
| piglet_version='0.1.3' | ||||
| piglet_version='0.2.0' | ||||
| piglet_conf="${HOME}/.config/piglet.conf" | ||||
| piglet_conf_dir="${HOME}/.config/piglet" | ||||
| piglet_conf_alt="$piglet_conf_dir/piglet.conf" | ||||
|  | ||||
| [ -f "$piglet_conf_alt" ] && piglet_conf="$piglet_conf_alt" | ||||
|  | ||||
| print_help() { | ||||
| cat <<- 'EOF' | ||||
|     cat <<- 'EOF' | ||||
| Porkbun DNS API client. | ||||
|  | ||||
| /\ ____ /\ | ||||
| @@ -40,7 +44,7 @@ Porkbun DNS API client. | ||||
| \        /&" | ||||
|  |_|--|_| | ||||
|  | ||||
| Usage: piglet [-cdjhv] command [arg=value ...] | ||||
| Usage: piglet [-cdjhv] command <domain> [arg=value ...] | ||||
|  | ||||
| Options: | ||||
|     -c, --config    path to configuration file [default: ~/.config/piglet.conf] | ||||
| @@ -237,6 +241,15 @@ _init_piglet() { | ||||
|     fi | ||||
| } | ||||
|  | ||||
| split_name() { | ||||
|     if [ "$(echo "$1" | tr . ' ' | wc -w)" -gt 2 ]; then | ||||
|         name="$(echo "$1" | awk -F. '{NF-=2} 1' | sed 's/ /\./g')" | ||||
|         domain="$(echo "$1" | awk -F. 'END {print $(NF-1), $NF}' | sed 's/ /\./g')" | ||||
|     else | ||||
|         domain="$1" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| piglet_config() { | ||||
|     mkdir -p "$HOME"/.config | ||||
|  | ||||
| @@ -247,12 +260,13 @@ piglet_config() { | ||||
|     printf 'API_Key: '; read -r api_key | ||||
|     printf 'Secret_API_Key: '; read -r secret_api_key | ||||
|  | ||||
|     cat > "$piglet_conf" <<- EOF | ||||
|     mkdir -p "$piglet_conf_dir" | ||||
|     cat > "$piglet_conf_alt" <<- EOF | ||||
| # Porkbun DNS API credentials | ||||
| API_Key=$api_key | ||||
| Secret_API_Key=$secret_api_key | ||||
| EOF | ||||
|     printf 'Config saved as %s\n' "$piglet_conf" | ||||
|     printf 'Config saved as %s\n' "$piglet_conf_alt" | ||||
| } | ||||
|  | ||||
| piglet_create() { | ||||
| @@ -299,9 +313,13 @@ piglet_create() { | ||||
|                 echo "Unknown option: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|             *=*) | ||||
|                 echo "Unknown key: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|                 split_name "$1" | ||||
|                 shift | ||||
|         esac | ||||
|     done | ||||
|  | ||||
| @@ -359,9 +377,13 @@ piglet_edit() { | ||||
|                 echo "Unknown option: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|             *=*) | ||||
|                 echo "Unknown key: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|                 split_name "$1" | ||||
|                 shift | ||||
|         esac | ||||
|     done | ||||
|  | ||||
| @@ -399,9 +421,13 @@ piglet_delete() { | ||||
|                 echo "Unknown option: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|             *=*) | ||||
|                 echo "Unknown key: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|                 split_name "$1" | ||||
|                 shift | ||||
|         esac | ||||
|     done | ||||
|  | ||||
| @@ -444,9 +470,13 @@ piglet_retrieve() { | ||||
|                 echo "Unknown option: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|             *=*) | ||||
|                 echo "Unknown key: $1" >&2 | ||||
|                 exit 1 | ||||
|                 ;; | ||||
|             *) | ||||
|                 split_name "$1" | ||||
|                 shift | ||||
|         esac | ||||
|     done | ||||
|  | ||||
| @@ -574,7 +604,12 @@ while [ "$#" -ne 0 ]; do | ||||
|             exit 1 | ||||
|             ;; | ||||
|         *) | ||||
|             if echo "$1" | grep -E '.+\..+' >/dev/null 2>&1; then | ||||
|                 split_name "$1" | ||||
|                 shift | ||||
|             else | ||||
|                 echo "Unknown command: $1" >&2 | ||||
|                 exit 1 | ||||
|             fi | ||||
|     esac | ||||
| done | ||||
|   | ||||
		Reference in New Issue
	
	Block a user