v0.2.0
This commit is contained in:
parent
5a77aea485
commit
43c79e1682
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
|
||||||
|
|
||||||
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
|
- Create a DNS record
|
||||||
- Edit record
|
- Edit record
|
||||||
@ -11,13 +12,44 @@ Currently piglet can:
|
|||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
Just copy `piglet` to your PATH. For example:
|
1. Clone this Git-repository.
|
||||||
|
2. Install files.
|
||||||
|
|
||||||
|
Installation with Makefile:
|
||||||
|
|
||||||
```sh
|
```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
|
# Getting started
|
||||||
|
|
||||||
@ -27,30 +59,30 @@ For first step setup the configuration file:
|
|||||||
piglet config
|
piglet config
|
||||||
```
|
```
|
||||||
|
|
||||||
piglet creates `~/.config/piglet.conf` file with API credentials.
|
piglet creates `~/.config/piglet/piglet.conf` file with API credentials.
|
||||||
|
|
||||||
Retrieve DNS records:
|
Retrieve DNS records:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
piglet -d example.org retrieve
|
piglet retrieve example.com
|
||||||
```
|
```
|
||||||
|
|
||||||
Create A-record on subdomain `mail`:
|
Create A-record on subdomain `mail`:
|
||||||
|
|
||||||
```sh
|
```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):
|
Edit A-record for `example.org` (change to 127.0.0.1):
|
||||||
|
|
||||||
```sh
|
```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:
|
Delete DNS record by id:
|
||||||
|
|
||||||
```sh
|
```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
|
57
piglet
57
piglet
@ -27,11 +27,15 @@
|
|||||||
#
|
#
|
||||||
# For more information, please refer to <http://unlicense.org/>
|
# 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="${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() {
|
print_help() {
|
||||||
cat <<- 'EOF'
|
cat <<- 'EOF'
|
||||||
Porkbun DNS API client.
|
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:
|
Options:
|
||||||
-c, --config path to configuration file [default: ~/.config/piglet.conf]
|
-c, --config path to configuration file [default: ~/.config/piglet.conf]
|
||||||
@ -237,6 +241,15 @@ _init_piglet() {
|
|||||||
fi
|
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() {
|
piglet_config() {
|
||||||
mkdir -p "$HOME"/.config
|
mkdir -p "$HOME"/.config
|
||||||
|
|
||||||
@ -247,12 +260,13 @@ piglet_config() {
|
|||||||
printf 'API_Key: '; read -r api_key
|
printf 'API_Key: '; read -r api_key
|
||||||
printf 'Secret_API_Key: '; read -r secret_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
|
# Porkbun DNS API credentials
|
||||||
API_Key=$api_key
|
API_Key=$api_key
|
||||||
Secret_API_Key=$secret_api_key
|
Secret_API_Key=$secret_api_key
|
||||||
EOF
|
EOF
|
||||||
printf 'Config saved as %s\n' "$piglet_conf"
|
printf 'Config saved as %s\n' "$piglet_conf_alt"
|
||||||
}
|
}
|
||||||
|
|
||||||
piglet_create() {
|
piglet_create() {
|
||||||
@ -299,9 +313,13 @@ piglet_create() {
|
|||||||
echo "Unknown option: $1" >&2
|
echo "Unknown option: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*=*)
|
||||||
echo "Unknown key: $1" >&2
|
echo "Unknown key: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
split_name "$1"
|
||||||
|
shift
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -359,9 +377,13 @@ piglet_edit() {
|
|||||||
echo "Unknown option: $1" >&2
|
echo "Unknown option: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*=*)
|
||||||
echo "Unknown key: $1" >&2
|
echo "Unknown key: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
split_name "$1"
|
||||||
|
shift
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -399,9 +421,13 @@ piglet_delete() {
|
|||||||
echo "Unknown option: $1" >&2
|
echo "Unknown option: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*=*)
|
||||||
echo "Unknown key: $1" >&2
|
echo "Unknown key: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
split_name "$1"
|
||||||
|
shift
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -444,9 +470,13 @@ piglet_retrieve() {
|
|||||||
echo "Unknown option: $1" >&2
|
echo "Unknown option: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*=*)
|
||||||
echo "Unknown key: $1" >&2
|
echo "Unknown key: $1" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
split_name "$1"
|
||||||
|
shift
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -574,7 +604,12 @@ while [ "$#" -ne 0 ]; do
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown command: $1" >&2
|
if echo "$1" | grep -E '.+\..+' >/dev/null 2>&1; then
|
||||||
exit 1
|
split_name "$1"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
echo "Unknown command: $1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
Loading…
Reference in New Issue
Block a user