#!/bin/bash # jrq - jrunner query wrapper for piping to visidata # Usage: jrq [format] # Example: jrq query.sql # jrq query.sql tsv set -e # Configuration # Override these with environment variables or create ~/.jrqrc CONFIG_FILE="${HOME}/.jrqrc" # Default values SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" JR_BIN="${JR_BIN:-${SCRIPT_DIR}/jrunner}" JR_URL="${JR_URL:-}" JR_USER="${JR_USER:-}" JR_PASS="${JR_PASS:-}" JR_FORMAT="${JR_FORMAT:-csv}" # Load config file if it exists if [ -f "$CONFIG_FILE" ]; then source "$CONFIG_FILE" fi # Parse arguments if [ $# -lt 1 ]; then echo "Usage: jrq [format]" echo "" echo "Configuration (via environment variables or ~/.jrqrc):" echo " JR_URL - JDBC connection URL (required)" echo " JR_USER - Database username (required)" echo " JR_PASS - Database password (required)" echo " JR_BIN - Path to jrunner binary (default: /opt/jrunner/jrunner/build/install/jrunner/bin/jrunner)" echo " JR_FORMAT - Output format: csv or tsv (default: csv)" echo "" echo "Example ~/.jrqrc:" echo " JR_URL=\"jdbc:as400://s7830956\"" echo " JR_USER=\"username\"" echo " JR_PASS=\"password\"" echo "" echo "Example usage:" echo " jrq query.sql # outputs CSV to stdout" echo " jrq query.sql | vd # pipe to visidata" echo " jrq query.sql tsv # output TSV format" exit 1 fi SQL_FILE="$1" FORMAT="${2:-$JR_FORMAT}" # Validate configuration if [ -z "$JR_URL" ] || [ -z "$JR_USER" ] || [ -z "$JR_PASS" ]; then echo "Error: Missing database connection configuration" >&2 echo "Set JR_URL, JR_USER, and JR_PASS environment variables or create ~/.jrqrc" >&2 exit 1 fi # Validate SQL file exists if [ ! -f "$SQL_FILE" ]; then echo "Error: SQL file not found: $SQL_FILE" >&2 exit 1 fi # Execute jrunner "$JR_BIN" -scu "$JR_URL" -scn "$JR_USER" -scp "$JR_PASS" -sq "$SQL_FILE" -f "$FORMAT"