Mike S.
11/06/2024, 3:58 PMZay Hanlon
11/06/2024, 4:09 PMMike S.
11/06/2024, 4:18 PMBrock Walters
11/06/2024, 5:14 PMBrock Walters
11/06/2024, 5:53 PMyq
is probably what you want for this...
https://github.com/mikefarah/yq
https://formulae.brew.sh/formula/yqBrock Walters
11/06/2024, 5:53 PMyq -i '
.a.b[0].c = "cool" |
.x.y.z = "foobar" |
.person.name = strenv(NAME)
' file.yaml
Zay Hanlon
11/06/2024, 6:02 PMMike S.
11/06/2024, 6:19 PMMike S.
11/06/2024, 6:21 PMBrock Walters
11/07/2024, 3:43 AM#!/bin/bash
sqlfile='/Users/brock/Desktop/sql.txt'
tmpfile='/private/tmp/tmp.yml'
ymlfile='/Users/brock/Desktop/sql.yml'
while read -r line
do
case "$line" in
*.sql ) sqlarry+=("$line") ;;
esac
done < "$sqlfile"
for i in "${sqlarry[@]}"
do
sqlrcrd="$(/usr/bin/sed -n "/$i/,/^----/p" "$sqlfile")"
sqlname="$(echo "$sqlrcrd" | /usr/bin/sed -n '1p')"
sqldesc="$(echo "$sqlrcrd" | /usr/bin/sed -n 's/-- //g;2p')"
sqlqrry="$(echo "$sqlrcrd" | /usr/bin/awk '/^-- platform:/{flag=1;next}/^----.*/{flag=0}flag' | /usr/bin/sed 's/[[:space:]]//g' | /usr/bin/tr '\n' ' ' | /usr/bin/sed 's/[[:space:]]*$//g')"
/usr/bin/touch "$tmpfile"
/opt/homebrew/bin/yq -i ".apiVersion=\"v1\" | .kind=\"query\" | .spec.description=\"$sqldesc\" | .spec.name=\"$sqlname\" | .spec.query=\"$sqlqrry\"" "$tmpfile"
cat "$tmpfile" >> "$ymlfile"
echo '---' >> "$ymlfile"
/bin/rm -f "$tmpfile"
done
Running the script on the text you posted above results in the following .yml output:
apiVersion: v1
kind: query
spec:
description: Retrieves the list of the latest logins with PID, username and timestamp.
name: last.sql
query: SELECT * FROM last;
---
apiVersion: v1
kind: query
spec:
description: Return the list of configured DNS servers on this system
name: dns_resolves.sql
query: SELECT * FROM dns_resolvers;
---
Mike S.
11/07/2024, 6:18 PM