github-hosts-sync: import 1.0.0 from painload
This commit is contained in:
parent
1ceae8b0e3
commit
4630d10b31
@ -3,7 +3,7 @@
|
|||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "github-hosts-sync";
|
name = "github-hosts-sync";
|
||||||
|
|
||||||
src = pkgs.painload;
|
src = ./src;
|
||||||
|
|
||||||
phases = [
|
phases = [
|
||||||
"unpackPhase"
|
"unpackPhase"
|
||||||
@ -29,7 +29,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
sed \
|
sed \
|
||||||
's,^main() {$,&\n export PATH=${path} GIT_SSL_CAINFO=${ca-bundle},' \
|
's,^main() {$,&\n export PATH=${path} GIT_SSL_CAINFO=${ca-bundle},' \
|
||||||
< ./retiolum/scripts/github_hosts_sync/hosts-sync \
|
< hosts-sync \
|
||||||
> $out/bin/github-hosts-sync
|
> $out/bin/github-hosts-sync
|
||||||
|
|
||||||
chmod +x $out/bin/github-hosts-sync
|
chmod +x $out/bin/github-hosts-sync
|
||||||
|
66
krebs/5pkgs/simple/github-hosts-sync/src/hosts-sync
Executable file
66
krebs/5pkgs/simple/github-hosts-sync/src/hosts-sync
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# TODO do_work should retry until success
|
||||||
|
set -euf
|
||||||
|
|
||||||
|
port=${port-1028}
|
||||||
|
local_painload=$HOME/painload
|
||||||
|
remote_painload="https://github.com/krebscode/painload"
|
||||||
|
local_hosts=$HOME/hosts
|
||||||
|
remote_hosts="git@github.com:krebscode/hosts.git"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
ensure_local_painload
|
||||||
|
ensure_local_hosts
|
||||||
|
is_worker && do_work || become_server
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_local_painload() {
|
||||||
|
test -d "$local_painload" || git clone "$remote_painload" "$local_painload"
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_local_hosts() {
|
||||||
|
test -d "$local_hosts" || git clone "$remote_hosts" "$local_hosts"
|
||||||
|
}
|
||||||
|
|
||||||
|
become_server() {
|
||||||
|
exec socat "TCP-LISTEN:$port,reuseaddr,fork" "EXEC:$0"
|
||||||
|
}
|
||||||
|
|
||||||
|
is_worker() {
|
||||||
|
test "${SOCAT_SOCKPORT-}" = "$port"
|
||||||
|
}
|
||||||
|
|
||||||
|
do_work() {
|
||||||
|
# read request
|
||||||
|
req_line="$(read line && echo "$line")"
|
||||||
|
req_hdrs="$(sed -n '/^\r$/q;p')"
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
cd "$local_hosts"
|
||||||
|
git pull >&2
|
||||||
|
|
||||||
|
cd "$local_hosts"
|
||||||
|
find . -name .git -prune -o -type f -exec git rm \{\} \; >/dev/null
|
||||||
|
|
||||||
|
cd "$local_painload"
|
||||||
|
git pull >&2
|
||||||
|
|
||||||
|
find "$local_painload/retiolum/hosts" -type f -exec cp \{\} "$local_hosts" \;
|
||||||
|
|
||||||
|
cd "$local_hosts"
|
||||||
|
find . -name .git -prune -o -type f -exec git add \{\} \; >&2
|
||||||
|
if git status --porcelain | grep -q .; then
|
||||||
|
git config user.email "$LOGNAME@$(hostname)"
|
||||||
|
git config user.name "$LOGNAME"
|
||||||
|
git commit -m bump >&2
|
||||||
|
git push >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "HTTP/1.1 200 OK"
|
||||||
|
echo
|
||||||
|
echo "https://github.com/krebscode/hosts/archive/master.tar.gz"
|
||||||
|
echo "https://github.com/krebscode/hosts/archive/master.zip"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
Loading…
Reference in New Issue
Block a user