diff --git a/README.md b/README.md index 7a7a5c7..a621613 100644 --- a/README.md +++ b/README.md @@ -1,71 +1,112 @@ # Utility Scripts Collection -> Comprehensive documentation with usage examples and demos +> Comprehensive collection of bash utility scripts for various tasks -This documentation was auto-generated using [`doc_bash_generate.sh`](https://github.com/yourusername/yourrepo). +This repository contains a curated collection of bash scripts for repository management, color manipulation, documentation generation, artifact handling, and more. ## Table of Contents -- [`artifact_github_download.sh`](#artifact-github-download-sh) -- [`artifact_postgres_export.sh`](#artifact-postgres-export-sh) -- [`css_color_filter.sh`](#css-color-filter-sh) -- [`css_color_palette.sh`](#css-color-palette-sh) -- [`css_json_convert.sh`](#css-json-convert-sh) -- [`doc_bash_generate.sh`](#doc-bash-generate-sh) -- [`doc_rust_generate.sh`](#doc-rust-generate-sh) -- [`jinja_template_render.sh`](#jinja-template-render-sh) -- [`mime_mp4_gif.sh`](#mime-mp4-gif-sh) +- [`arty.sh`](#artysh) - Repository and Release Management +- [`artifact_github_download.sh`](#artifact_github_downloadsh) - GitHub Artifact Downloader +- [`artifact_postgres_export.sh`](#artifact_postgres_exportsh) - PostgreSQL Code Export +- [`css_color_filter.sh`](#css_color_filtersh) - CSS Filter Generator +- [`css_color_palette.sh`](#css_color_palettesh) - Color Palette Generator +- [`css_json_convert.sh`](#css_json_convertsh) - CSS Variable Converter +- [`doc_bash_generate.sh`](#doc_bash_generatesh) - Bash Documentation Generator +- [`doc_rust_generate.sh`](#doc_rust_generatesh) - Rust Documentation Generator +- [`jinja_template_render.sh`](#jinja_template_rendersh) - Jinja2 Template Renderer +- [`mime_mp4_gif.sh`](#mime_mp4_gifsh) - MP4 to GIF Converter +--- + +## `arty.sh` + +**A bash library repository and release management system** + +Combined functionality from arty.sh (repository management) and whip.sh (release cycle management). + +### Usage + +```bash +arty [arguments] [--dry-run] [-v|--verbose] +``` + +### Commands + +#### Repository Commands +- `install [name]` - Install a library from git repository +- `deps [--dry-run]` - Install all dependencies from arty.yml +- `list` - List installed libraries with dependency tree +- `remove ` - Remove an installed library +- `init [name]` - Initialize a new arty.yml project +- `source [file]` - Source a library (for use in scripts) +- `exec [args]` - Execute a library's main script with arguments +- `` - Execute a script defined in arty.yml + +#### Release Commands +- `release [major|minor|patch]` - Full release workflow (default: patch) + - Bumps version in arty.yml + - Updates CHANGELOG.md from git history + - Creates git commit + - Creates and pushes git tag +- `version` - Show current version from arty.yml +- `bump ` - Bump version in arty.yml (no commit/tag) +- `changelog` - Generate changelog from git history +- `tag ` - Create and push git tag + +#### Hook Commands +- `hooks install` - Install git commit hooks (includes shellcheck validation) +- `hooks uninstall` - Remove git commit hooks +- `hooks create` - Create default hook templates + +#### Monorepo Commands +- `mono list [root] [pattern]` - List arty.yml projects +- `mono version [root] [pattern]` - Show versions of all projects +- `mono bump [root] [pattern]` - Bump version for all projects +- `mono status [root] [pattern]` - Show git status for all projects +- `mono exec [root] [pattern]` - Execute bash command on all projects +- `mono help` - Show detailed mono help + +### Examples + +```bash +# Repository Management +arty install https://github.com/user/bash-utils.git +arty deps +arty list + +# Release Cycle +arty release # Patch release +arty release major # Major version release +arty bump minor # Just bump version +arty hooks install # Install commit hooks + +# Monorepo Management +arty mono list # List all projects +arty mono version # Show all project versions +arty mono exec "git status" # Run command on all projects +``` --- ## `artifact_github_download.sh` -GitHub Artifact Downloader +**GitHub Artifact Downloader** -### Demo - -![Demo of artifact_github_download.sh](docs/img/artifact_github_download.gif) +Download artifacts from GitHub Actions workflows with interactive selection or automatic matching. ### Usage ```bash -artifact_github_download.sh [OPTIONS] [ARGUMENTS] +artifact_github_download.sh [OPTIONS] ``` +### Arguments +- `REPO` - GitHub repository (owner/repo) + ### Options - -
-Click to expand full help output - -``` -GitHub Artifact Downloader - -USAGE: - artifact_github_download.sh [OPTIONS] - -ARGUMENTS: - REPO GitHub repository (owner/repo) - -OPTIONS: - -n, --name NAME Artifact name to download (preselect) - -o, --output DIR Output directory (default: current directory) - -h, --help Show this help message - -EXAMPLES: - # Interactive mode - list and select artifacts - artifact_github_download.sh valknarness/awesome - - # Preselect artifact by name - artifact_github_download.sh valknarness/awesome -n awesome-database-latest - - # Download to specific directory - artifact_github_download.sh valknarness/awesome -o ~/downloads - - # Combine options - artifact_github_download.sh valknarness/awesome -n awesome-database-latest -o ~/downloads -``` - -
+- `-n, --name NAME` - Artifact name to download (preselect) +- `-o, --output DIR` - Output directory (default: current directory) +- `-h, --help` - Show help message ### Examples @@ -78,16 +119,15 @@ artifact_github_download.sh valknarness/awesome -n awesome-database-latest # Download to specific directory artifact_github_download.sh valknarness/awesome -o ~/downloads - -# Combine options -artifact_github_download.sh valknarness/awesome -n awesome-database-latest -o ~/downloads ``` --- ## `artifact_postgres_export.sh` -Export code artifacts from Open WebUI PostgreSQL database +**Export code artifacts from Open WebUI PostgreSQL database** + +Extract code artifacts from chat conversations stored in PostgreSQL, preserving directory structure and file names. ### Usage @@ -96,39 +136,24 @@ artifact_postgres_export.sh [OPTIONS] ``` ### Arguments - - `chat_id` - Chat ID from Open WebUI URL (UUID format) -- `output_dir` - Directory to save extracted code files (optional, defaults to current directory) +- `output_dir` - Directory to save extracted code files ### Options +- `-H, --host HOST` - PostgreSQL host (default: ai_postgres via Docker) +- `-u, --user USER` - PostgreSQL user (default: ai) +- `-d, --db DATABASE` - PostgreSQL database (default: openwebui) +- `-v, --verbose` - Verbose output +- `--remote HOST` - SSH remote host for Docker access (default: vps) +- `-f, --force` - Force export even if output directory is not empty -
-Click to expand full help output - -``` -artifact_postgres_export.sh - Export code artifacts from Open WebUI PostgreSQL database - -Usage: artifact_postgres_export.sh [OPTIONS] - -Arguments: - chat_id Chat ID from Open WebUI URL (e.g., e135d74e-5b43-4b24-a651-e999f103942b) - output_dir Directory to save extracted code files - -Options: - -h, --help Show this help message - -H, --host HOST PostgreSQL host (default: ai_postgres via Docker) - -u, --user USER PostgreSQL user (default: ai) - -d, --db DATABASE PostgreSQL database (default: openwebui) - -v, --verbose Verbose output - --remote HOST SSH remote host for Docker access (default: vps) - -f, --force Force export even if output directory is not empty - -Examples: - artifact_postgres_export.sh e135d74e-5b43-4b24-a651-e999f103942b ~/Projects/rust/piglet - artifact_postgres_export.sh --remote vps abc123def456 ./output -``` - -
+### Features +- **Direct PostgreSQL access** via Docker exec (SSH-enabled for remote servers) +- **Automatic filename detection** from markdown headers +- **Directory structure preservation** - maintains original paths +- **Safety checks** - validates chat ID format and checks for empty output directory +- **Smart code extraction** - parses markdown code blocks with language detection +- **File extension mapping** - supports 20+ file types ### Examples @@ -141,79 +166,30 @@ artifact_postgres_export.sh --remote vps abc123def456 ./output # Force export to non-empty directory artifact_postgres_export.sh -f e135d74e-5b43-4b24-a651-e999f103942b ./output - -# Verbose output with custom database -artifact_postgres_export.sh -v -d custom_db abc123def456 ./output ``` -### Features - -- **Direct PostgreSQL access** via Docker exec (SSH-enabled for remote servers) -- **Automatic filename detection** from markdown headers (e.g., `### src/main.rs`) -- **Directory structure preservation** - maintains original paths like `src/parser/duration.rs` -- **Safety checks** - validates chat ID format and checks for empty output directory -- **Colored output** - uses ANSI colors for better readability -- **Smart code extraction** - parses markdown code blocks with language detection -- **File extension mapping** - supports 20+ file types (Rust, Python, JavaScript, etc.) - --- ## `css_color_filter.sh` -CSS Color Filter Generator +**CSS Color Filter Generator** -### Demo - -![Demo of css_color_filter.sh](docs/img/css_color_filter.gif) +Generate CSS filter values to transform black elements into any target color using SPSA optimization. ### Usage ```bash -css_color_filter.sh [OPTIONS] [ARGUMENTS] +css_color_filter.sh [OPTIONS] [COLOR] ``` +### Arguments +- `COLOR` - Hex color (e.g., #FF0000, ff0000) or RGB (e.g., 255,0,0) + ### Options - -
-Click to expand full help output - -``` -CSS Color Filter Generator - -Generate CSS filter values to transform black elements into any target color. - -USAGE: - css_color_filter.sh [OPTIONS] [COLOR] - -ARGUMENTS: - COLOR Hex color (e.g., #FF0000, ff0000) or RGB (e.g., 255,0,0) - -OPTIONS: - -i, --interactive Interactive mode with colored preview - -r, --raw Output only the CSS filter (for piping) - -c, --copy Copy result to clipboard automatically - -h, --help Show this help message - -EXAMPLES: - css_color_filter.sh "#FF5733" - css_color_filter.sh ff5733 - css_color_filter.sh "255,87,51" - css_color_filter.sh -i - -NOTE: - This tool generates filters that work on black elements. - To use with non-black elements, prepend: brightness(0) saturate(100%) - -ALGORITHM: - Uses SPSA (Simultaneous Perturbation Stochastic Approximation) to find - optimal filter combinations that minimize color difference in RGB and HSL. - -DEPENDENCIES: - bc For floating-point arithmetic - jq For JSON formatting (optional) -``` - -
+- `-i, --interactive` - Interactive mode with colored preview +- `-r, --raw` - Output only the CSS filter (for piping) +- `-c, --copy` - Copy result to clipboard automatically +- `-h, --help` - Show help message ### Examples @@ -224,60 +200,39 @@ css_color_filter.sh "255,87,51" css_color_filter.sh -i ``` +### Algorithm +Uses SPSA (Simultaneous Perturbation Stochastic Approximation) to find optimal filter combinations that minimize color difference in RGB and HSL color spaces. + +### Dependencies +- `bc` - For floating-point arithmetic +- `jq` - For JSON formatting (optional) + --- ## `css_color_palette.sh` -CSS Color Palette Generator (Pure Bash) +**CSS Color Palette Generator (Pure Bash)** -### Demo - -![Demo of css_color_palette.sh](docs/img/css_color_palette.gif) +Generate comprehensive color palettes without Node.js dependencies. Supports multiple harmony types and color scales. ### Usage ```bash -css_color_palette.sh [OPTIONS] [ARGUMENTS] +css_color_palette.sh COLOR [OPTIONS] ``` +### Arguments +- `COLOR` - Base hex color (e.g., #3498db, 3498db) + ### Options - -
-Click to expand full help output - -``` -CSS Color Palette Generator (Pure Bash) - -Generate comprehensive color palettes without Node.js dependencies. - -USAGE: - css_color_palette.sh COLOR [OPTIONS] - -ARGUMENTS: - COLOR Base hex color (e.g., #3498db, 3498db) - -OPTIONS: - -p, --palette TYPE Palette type: monochromatic, analogous, complementary, - split-complementary, triadic, tetradic - -o, --output FILE Output file (default: ./colors.yaml) - -m, --mode MODE Color mode: light, dark (default: light) - -s, --style STYLE Style: shades, tints, tones, all (default: all) - -n, --name NAME Palette name (default: auto-generated) - --scales N Number of scale steps (default: 11) - -i, --interactive Interactive mode - -v, --verbose Verbose output with color preview - -h, --help Show this help message - -DEPENDENCIES: - bc For floating-point arithmetic - -EXAMPLES: - css_color_palette.sh "#3498db" - css_color_palette.sh "#3498db" -p triadic -o palette.json - css_color_palette.sh "ff5733" -p analogous -m dark -``` - -
+- `-p, --palette TYPE` - Palette type: monochromatic, analogous, complementary, split-complementary, triadic, tetradic +- `-o, --output FILE` - Output file (default: ./colors.yaml) +- `-m, --mode MODE` - Color mode: light, dark (default: light) +- `-s, --style STYLE` - Style: shades, tints, tones, all (default: all) +- `-n, --name NAME` - Palette name (default: auto-generated) +- `--scales N` - Number of scale steps (default: 11) +- `-i, --interactive` - Interactive mode +- `-v, --verbose` - Verbose output with color preview ### Examples @@ -287,81 +242,31 @@ css_color_palette.sh "#3498db" -p triadic -o palette.json css_color_palette.sh "ff5733" -p analogous -m dark ``` +### Dependencies +- `bc` - For floating-point arithmetic + --- ## `css_json_convert.sh` -USAGE: +**CSS Variable to JSON/YAML Converter** -### Demo - -![Demo of css_json_convert.sh](docs/img/css_json_convert.gif) +Extract CSS custom properties (variables) from a CSS file and convert them to JSON or YAML format. ### Usage ```bash -css_json_convert.sh [OPTIONS] [ARGUMENTS] +css_json_convert.sh [OPTIONS] ``` +### Arguments +- `` - Input CSS file containing CSS variables + ### Options - -
-Click to expand full help output - -``` - -================================================================ - CSS Variable to JSON/YAML Converter - Extract CSS custom properties with ease -================================================================ - -USAGE: - css_json_convert.sh [OPTIONS] - -DESCRIPTION: - Extracts CSS custom properties (variables) from a CSS file and converts - them to JSON or YAML format. Automatically detects output format from - file extension. - -ARGUMENTS: - Input CSS file containing CSS variables - -OPTIONS: - -o, --output FILE Output file path (default: ./output.yaml) - Format auto-detected from extension (.json/.yaml/.yml) - -c, --camel-case Convert variable names to camelCase - (e.g., --main-color -> mainColor) - -v, --verbose Enable verbose output - -h, --help Show this help message - -EXAMPLES: - # Extract CSS vars to YAML (default) - css_json_convert.sh styles.css - - # Extract to JSON with custom output - css_json_convert.sh styles.css -o theme.json - - # Convert variable names to camelCase - css_json_convert.sh styles.css -o vars.json --camel-case - -CSS VARIABLE FORMAT: - The script extracts CSS custom properties in the format: - --variable-name: value; - - Example input: - :root { - --main-color: #e8eaed; - --font-size: 16px; - } - - Example JSON output: - { - "main-color": "#e8eaed", - "font-size": "16px" - } -``` - -
+- `-o, --output FILE` - Output file path (default: ./output.yaml) +- `-c, --camel-case` - Convert variable names to camelCase +- `-v, --verbose` - Enable verbose output +- `-h, --help` - Show help message ### Examples @@ -380,61 +285,25 @@ css_json_convert.sh styles.css -o vars.json --camel-case ## `doc_bash_generate.sh` -Bash Documentation Generator with Animated GIFs +**Bash Documentation Generator with Animated GIFs** -### Demo - -![Demo of doc_bash_generate.sh](docs/img/doc_bash_generate.gif) +Generate comprehensive README.md files with embedded asciinema GIFs for bash scripts. ### Usage ```bash -doc_bash_generate.sh [OPTIONS] [ARGUMENTS] +doc_bash_generate.sh [OPTIONS] [executable...] ``` +### Arguments +- `executable` - One or more executables or glob patterns + ### Options - -
-Click to expand full help output - -``` - -================================================================ - Bash Documentation Generator -================================================================ - -Bash Documentation Generator with Animated GIFs - -Generate sexy, comprehensive README.md files with embedded asciinema GIFs. - -USAGE: - doc_bash_generate.sh [OPTIONS] [executable...] - -ARGUMENTS: - executable One or more executables or glob patterns - -OPTIONS: - -o, --output FILE Output README.md path (default: ./README.md) - -t, --title TITLE Documentation title (default: auto-generated) - --no-gif Skip GIF generation (faster, text only) - --gif-only Only generate GIFs, don't update README - -h, --help Show this help message - -EXAMPLES: - doc_bash_generate.sh css_*.sh - doc_bash_generate.sh -o docs/README.md *.sh - doc_bash_generate.sh --title "My Awesome Tools" script1.sh script2.sh - -DEPENDENCIES: - asciinema Terminal session recorder - agg Asciinema to GIF converter (cargo install agg) - -NOTES: - Demos are automatically generated by running --help on each command. - GIF recordings are created in a temporary directory and cleaned up after. -``` - -
+- `-o, --output FILE` - Output README.md path (default: ./README.md) +- `-t, --title TITLE` - Documentation title (default: auto-generated) +- `--no-gif` - Skip GIF generation (faster, text only) +- `--gif-only` - Only generate GIFs, don't update README +- `-h, --help` - Show help message ### Examples @@ -444,88 +313,43 @@ doc_bash_generate.sh -o docs/README.md *.sh doc_bash_generate.sh --title "My Awesome Tools" script1.sh script2.sh ``` +### Dependencies +- `asciinema` - Terminal session recorder +- `agg` - Asciinema to GIF converter (cargo install agg) + --- ## `doc_rust_generate.sh` -Rust Documentation Generator with Custom Themes +**Rust Documentation Generator with Custom Themes** -### Demo - -![Demo of doc_rust_generate.sh](docs/img/doc_rust_generate.gif) +Generate beautiful Rust documentation with custom color schemes and styling. ### Usage ```bash -doc_rust_generate.sh [OPTIONS] [ARGUMENTS] +doc_rust_generate.sh [OPTIONS] ``` +### Arguments +- `` - Input file(s) or pattern(s) to document: + - Rust project directories (containing Cargo.toml) + - Individual .rs files + - Markdown files (.md) + - JSON/TOML configuration files + - Glob patterns (e.g., src/**/*.rs) + ### Options - -
-Click to expand full help output - -``` -Rust Documentation Generator with Custom Themes - -USAGE: - doc_rust_generate.sh [OPTIONS] - -DESCRIPTION: - Generate beautiful Rust documentation with custom color schemes and styling. - Supports various input types including Rust projects, individual files, and more. - -ARGUMENTS: - Input file(s) or pattern(s) to document: - - Rust project directories (containing Cargo.toml) - - Individual .rs files - - Markdown files (.md) - - JSON/TOML configuration files - - Glob patterns (e.g., src/**/*.rs) - -OPTIONS: - -o, --output DIR Output directory for generated docs - (default: $PWD/output) - -c, --color COLOR Primary accent color (hex format) - (default: #ff69b4) - Examples: #3498db, #10b981, #8b5cf6 - -s, --style STYLE Background style theme - Options: slate, zinc, neutral, stone, gray - (default: slate) - --font-sans FONT Google Font for body text (default: Inter) - --font-mono FONT Google Font for code blocks - (default: JetBrains Mono) - --serve Start HTTP server after generation - --open Open documentation in browser (implies --serve) - -p, --port PORT Port for HTTP server (default: 8000) - -v, --verbose Enable verbose output - -d, --dry-run Show what would be done without executing - -h, --help Show this help message - -EXAMPLES: - # Generate docs for current Rust project - doc_rust_generate.sh . - - # Custom color scheme - doc_rust_generate.sh . -c "#3498db" -s zinc -o ./docs - - # Document specific files - doc_rust_generate.sh src/lib.rs src/main.rs -o ./api-docs - - # Use custom fonts - doc_rust_generate.sh . --font-sans "Roboto" --font-mono "Fira Code" - - # Generate and open in browser - doc_rust_generate.sh . --open - -NOTES: - - Requires: cargo, rustdoc, bc, yq, jq, python3 with jinja2 - - Colors are automatically generated in light and dark variants - - Google Fonts are automatically imported - - Mermaid.js diagrams are automatically rendered -``` - -
+- `-o, --output DIR` - Output directory for generated docs (default: $PWD/output) +- `-c, --color COLOR` - Primary accent color (hex format, default: #ff69b4) +- `-s, --style STYLE` - Background style theme: slate, zinc, neutral, stone, gray (default: slate) +- `--font-sans FONT` - Google Font for body text (default: Inter) +- `--font-mono FONT` - Google Font for code blocks (default: JetBrains Mono) +- `--serve` - Start HTTP server after generation +- `--open` - Open documentation in browser (implies --serve) +- `-p, --port PORT` - Port for HTTP server (default: 8000) +- `-v, --verbose` - Enable verbose output +- `-d, --dry-run` - Show what would be done without executing ### Examples @@ -546,93 +370,35 @@ doc_rust_generate.sh . --font-sans "Roboto" --font-mono "Fira Code" doc_rust_generate.sh . --open ``` +### Dependencies +- cargo, rustdoc, bc, yq, jq, python3 with jinja2 + --- ## `jinja_template_render.sh` -JINJA2 TEMPLATE RENDERER - NINJA EDITION +**Jinja2 Template Renderer - Ninja Edition** -### Demo - -![Demo of jinja_template_render.sh](docs/img/jinja_template_render.gif) +A sophisticated Jinja2 template rendering engine with support for multiple variable sources, glob patterns, and ninja-style operations. ### Usage ```bash -jinja_template_render.sh [OPTIONS] [ARGUMENTS] +jinja_template_render.sh [OPTIONS]