--- /dev/null
+#!/bin/bash -l
+#(chr,entity,name)
+http_get https://www.w3schools.com/cssref/css_entities.asp | \
+xmllint --html --xpath "/html/body//div[@id=\"main\"]//table" - 2>/dev/null | \
+xml2csv - | \
+tail -n+2 | \
+sed -E "s,(\\\\),\1\1," \
+| awk 'BEGIN{FS="\t"}{print $2"\t"$1"\t"$3}' \
chr varchar(2),
name varchar(200)
);
-BEGIN TRANSACTION;
-DELETE FROM css_entity;
-COPY css_entity (chr,entity,name) FROM PROGRAM '. /etc/profile && \
-http_get https://www.w3schools.com/cssref/css_entities.asp | \
-xmllint --html --xpath "/html/body//div[@id=\"main\"]//table" - 2>/dev/null | \
-xml2csv - | \
-tail -n+2 | \
-sed -E "s,(\\\\),\\\\\1," \
-' WITH (format 'text', NULL '');
-COMMIT;
--- /dev/null
+#!/bin/bash -l
+http_get https://www.w3schools.com/cssref/css_functions.asp | \
+xmllint --html --xpath "/html/body//div[@id=\"main\"]//table" - 2>/dev/null | \
+sed -E "s, href=\"([^\"]+)\",>https://www.w3schools.com/cssref/\1|</a><a,g" | \
+xml2csv - | \
+grep "|" | \
+sed "s/|/\t/" \
+| awk 'BEGIN{FS="\t"}{print $2"\t"$3"\t"$1}' \
description varchar(500),
link varchar(300)
);
-BEGIN TRANSACTION;
-DELETE FROM css_function;
-COPY css_function (link,name,description) FROM PROGRAM '. /etc/profile && \
-http_get https://www.w3schools.com/cssref/css_functions.asp | \
-xmllint --html --xpath "/html/body//div[@id=\"main\"]//table" - 2>/dev/null | \
-sed -E "s, href=\"([^\"]+)\",>https://www.w3schools.com/cssref/\1|</a><a,g" | \
-xml2csv - | \
-grep "|" | \
-sed "s/|/\t/" \
-' WITH (format 'text', NULL '');
-COMMIT;
--- /dev/null
+#!/bin/bash -l
+http_get https://www.w3schools.com/cssref/ \
+| html2txt \
+| perl -ne " \
+next unless /^align-content .*Specifies/ .. /^z-index/ and /^[a-z]/; \
+s/\s+/\t/; \
+chomp; /^(\S+)/; \
+print qq|\$_\thttps://www.w3schools.com/cssref/pr_\$1.asp\n|" \
description varchar(500),
link varchar(300)
);
-BEGIN TRANSACTION;
-DELETE FROM css_reference;
-COPY css_reference (name,description,link) FROM PROGRAM '. /etc/profile && \
-http_get https://www.w3schools.com/cssref/ | \
-html2txt | \
-perl -ne " \
-next unless /^align-content .*Specifies/ .. /^z-index/ and /^[a-z]/; \
-s/\s+/\t/; \
-chomp; /^(\S+)/; \
-print qq|\$_\thttps://www.w3schools.com/cssref/pr_\$1.asp\n|" \
-' WITH (format 'text', NULL '');
--- NB 22.06.18 COPY css_reference (link,name,description) FROM PROGRAM '. /etc/profile && \
--- NB 22.06.18 http_get https://www.w3schools.com/cssref/ | \
--- NB 22.06.18 sed -E "s,<a href=\"([a-z][^\"]+)\">(.*?)</a>,https://www.w3schools.com/cssref/\1</td><td>\2,g" | \
--- NB 22.06.18 html2txt | \
--- NB 22.06.18 perl -ne "s/\s+/\t/ and s/\s+/\t/ and print if /^https.* [a-z]/"
--- NB 22.06.18 ' WITH (format 'text', NULL '');
-COMMIT;
--- /dev/null
+#!/bin/bash -l
+http_get https://www.w3schools.com/cssref/css_selectors.asp \
+| xmllint --html --xpath "/html/body//div[@id=\"main\"]//table" - 2>/dev/null \
+| sed -E "s, href=\"([^\"]+)\",>https://www.w3schools.com/cssref/\1|</a><a,g" \
+| xml2csv - \
+| grep "|" \
+| sed "s/|/\t/" \
+| awk 'BEGIN{FS="\t"}{print $2"\t"$3"\t"$4"\t"$1}' \
description varchar(500),
link varchar(300)
);
-BEGIN TRANSACTION;
-DELETE FROM css_selector;
-COPY css_selector (link,name,example,description) FROM PROGRAM '. /etc/profile && \
-http_get https://www.w3schools.com/cssref/css_selectors.asp | \
-xmllint --html --xpath "/html/body//div[@id=\"main\"]//table" - 2>/dev/null | \
-sed -E "s, href=\"([^\"]+)\",>https://www.w3schools.com/cssref/\1|</a><a,g" | \
-xml2csv - | \
-grep "|" | \
-sed "s/|/\t/" \
-' WITH (format 'text', NULL '');
-COMMIT;
--- /dev/null
+#!/bin/bash -l
+http_get https://html.com/attributes/ \
+| sed -E "s,<(thrive_headline|header)[^.>]+>([^<]+)</\1>,<div>\2</div>," \
+| xmllint --html --xpath //table - 2>/dev/null \
+| xml2csv - \
+| sed -E \
+ -e "s/”/\"/g" -e "s,^[^<]+(<[^>]+>)[^\t]+,\L\1," \
+ -e "s,^(<([^ ]+) ([^=>]+)),https://html.com/attributes/\2-\3/\t\1," \
+| awk 'BEGIN{FS="\t"}{print $2"\t"$3"\t"$1}' \
description varchar(500),
link varchar(200)
);
-DELETE FROM html_attribute;
-BEGIN;
-COPY html_attribute (link,name,description) FROM PROGRAM '. /etc/profile && \
-http_get https://html.com/attributes/ | \
-sed -E "s,<(thrive_headline|header)[^.>]+>([^<]+)</\1>,<div>\2</div>," | \
-xmllint --html --xpath //table - 2>/dev/null | \
-xml2csv - | \
-sed -E \
- -e "s/”/\"/g" -e "s,^[^<]+(<[^>]+>)[^\t]+,\L\1," \
- -e "s,^(<([^ ]+) ([^=>]+)),https://html.com/attributes/\2-\3/\t\1," \
-' WITH (format 'text', NULL '');
-COMMIT;
--- /dev/null
+#!/bin/bash -l
+html2txt https://html.com/tags/ \
+| grep "^<" \
+| sed -E -e "s/ *HTML Tag *//" -e "s,^<([^>]+)>,\1\thttps://www.w3schools.com/TAGS/tag_\1.asp\t," \
+| awk 'BEGIN{FS="\t"}{print $1"\t"$3"\t"$2}' \
description varchar(500),
link varchar(100)
);
-BEGIN TRANSACTION;
-DELETE FROM html_tag;
-COPY html_tag (name,link,description) FROM PROGRAM '. /etc/profile && html2txt https://html.com/tags/ \
-| grep "^<" \
-| sed -E -e "s/ *HTML Tag *//" -e "s,^<([^>]+)>,\1\thttps://www.w3schools.com/TAGS/tag_\1.asp\t," \
-' WITH (format 'text', NULL '');
-COMMIT;
-
--- /dev/null
+#!/bin/bash -l
+http_get https://nginx.org/en/docs/varindex.html \
+| xmllint --html --xpath "/html/body//div[@id=\"content\"]//p" - 2>/dev/null \
+| sed -E -e "s,<a href=\"([^\"]+)\">([^<]+)</a> *(\(([^\)]+)\))?,https://nginx.org/en/docs/\1\t\2\t\4\n,g" -e "s,<[^>]+>,,g" \
+| grep -v "^ *$" sed "s,(\([^(]\+\))$,\1,g" \
+| awk 'BEGIN{FS="\t"}{print $2"\t"$3"\t"$1}' \
-DROP TABLE IF EXISTS nginx_vars;
DROP TABLE IF EXISTS nginx_var;
CREATE TABLE IF NOT EXISTS nginx_var (
name varchar(200),
);
CREATE INDEX IF NOT EXISTS nginx_var_name ON nginx_var USING btree (name);
CREATE INDEX IF NOT EXISTS nginx_var_module ON nginx_var USING btree (module);
-BEGIN TRANSACTION;
-DELETE FROM nginx_var;
-COPY nginx_var (link,name,module) FROM PROGRAM '. /etc/profile && http_get https://nginx.org/en/docs/varindex.html | \
-xmllint --html --xpath "/html/body//div[@id=\"content\"]//p" - 2>/dev/null | \
-sed -E -e "s,<a href=\"([^\"]+)\">([^<]+)</a> *(\(([^\)]+)\))?,https://nginx.org/en/docs/\1\t\2\t\4\n,g" -e "s,<[^>]+>,,g" | \
-grep -v "^ *$" | sed "s,(\([^(]\+\))$,\1,g" \
-' WITH (format 'text', NULL '');
-COMMIT;
-#!/bin/sh
+#!/bin/bash -l
#
# lib/postgres/update.sh DB_NAME
# Update table present in a db
cd "$(dirname "$0")"
DB=${1:?Db name missing}
+EREG="${2:-.}"
+#exec echo $EREG
-psql "$DB" -Atc '\dt' | grep '^public|' | cut -d'|' -f2 | while read t; do
+#export PATH="$PATH:$(pwd)"
+#export PATH="$PATH:."
+psql "$DB" -Atc '\dt' | grep '^public|' | cut -d'|' -f2 | grep -E "$EREG" | while read t; do
+#echo "$t" >&2; continue
[ -r "$t.sql" ] || continue
echo "SELECT 'Update $t' as Comment;"
grep -vE '^DROP' "$t.sql"
+ copy=""
+ if [ -e "$t.txt" ]; then
+ copy="'$PWD/$t.txt'"
+ elif [ -x "$t.sh" ]; then
+ copy="PROGRAM '$PWD/$t.sh'"
+ fi
+
+ if [ -n "$copy" ]; then
+ cat <<EOF
+BEGIN TRANSACTION;
+DELETE FROM $t;
+COPY $t FROM $copy WITH (format 'text', NULL '');
+COMMIT;
+EOF
+ fi
+
done | PGOPTIONS='--client-min-messages=warning' psql "$DB" -qAt