The One Eyed Fighting Kirby: A Fun Vim Substitution Trick

The One Eyed Fighting Kirby is basically a Vim substitution command that uses capture groups to transform text. The name comes from the way the regex capture group looks like a one-eyed Kirby (you know, the pink puffball from Nintendo games) when written in Vim. It’s a fun name for a powerful regex capture group technique that can save you tons of time when editing text. Here’s the basic syntax: ...

June 6, 2025 · 1 min · Elvin Guti

Script to run tests in Jest and get the coverage for a specific file

I needed to automate the process of running tests in Jest and getting the coverage for a specific file. I created this script to help me with that. #!/bin/bash # Color definitions BLUE='\033[0;34m' GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' # No Color BOLD='\033[1m' # Function to display usage show_usage() { echo -e "${YELLOW}Usage:${NC} $0 [--find-by-name] <relative-file-path> [additional test options]" echo -e "${YELLOW}Examples:${NC}" echo -e " $0 src/components/Button.tsx --watch" echo -e " $0 src/components/Button.tsx --find-by-name --watch" exit 1 } # Initialize variables FIND_BY_NAME=false RELATIVE_FILE_PATH="" # Parse arguments while [[ $# -gt 0 ]]; do case $1 in --find-by-name) FIND_BY_NAME=true shift ;; *) if [ -z "$RELATIVE_FILE_PATH" ]; then RELATIVE_FILE_PATH="$1" else break # Stop parsing and keep remaining args for test options fi shift ;; esac done # Check if a file name is provided if [ -z "$RELATIVE_FILE_PATH" ]; then show_usage fi # Check if the file exists if [ ! -f "$RELATIVE_FILE_PATH" ]; then echo -e "${RED}Error: ${NC}File '${YELLOW}${RELATIVE_FILE_PATH}${NC}' not found. 😕" exit 1 fi FILE_PATH=$(echo "$RELATIVE_FILE_PATH" | cut -d'/' -f3-) # Get just the file name without extension for --find-by-name mode FILE_NAME=$(basename "$RELATIVE_FILE_PATH") FILE_NAME_NO_EXT="${FILE_NAME%.*}" # Construct the corresponding test file path TEST_FILE_NAME="${FILE_PATH%.*}.test" if [ "$FIND_BY_NAME" = true ]; then # Search by file name TEST_PATH=$(find "tests" -type f \( -name "${FILE_NAME_NO_EXT}.test.tsx" -o -name "${FILE_NAME_NO_EXT}.test.ts" \)) else # Original search by path TEST_PATH=$(find "tests" -type f \( -path "*/${TEST_FILE_NAME}.tsx" -o -path "*/${TEST_FILE_NAME}.ts" \)) fi # Check if the test file exists if [ -z "$TEST_PATH" ]; then echo -e "${RED}Error: ${NC}Test file for '${YELLOW}${RELATIVE_FILE_PATH}${NC}' not found in 'tests' directory. 😕" echo -e "Test file name: ${YELLOW}${FILE_NAME_NO_EXT}.test.tsx${NC}" echo -e "${YELLOW}Hint:${NC} If you're looking for a file by name, try using the --find-by-name flag." exit 1 fi # Print test information with styling echo -e "\n${BLUE}╔════════════════════════════════════════════════════════════╗${NC}" echo -e "${GREEN}▶ Running Coverage Test${NC}" echo -e "${CYAN}📁 Source file:${NC} ${RELATIVE_FILE_PATH}" echo -e "${CYAN}🧪 Test file:${NC} ${TEST_PATH}" echo -e "${CYAN}⚙️ Options:${NC} $@" echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}\n" yarn test "$TEST_PATH" --coverage --collectCoverageFrom="$RELATIVE_FILE_PATH" "$@" Usage Test cases are in the tests folder. The script will search for the test file by path by default, if you want to search by name, you can use the --find-by-name flag. ...

March 3, 2025 · 2 min · Elvin Guti

Create pull requests descriptions using Aider and OpenRouter

In order to reduce the amount of time I spend on writing pull request instructions, I’ve been using Aider with OpenRouter to generate them. Requirements OpenRouter key Aider .env file with OPENROUTER_API_KEY variable How does it work? Aider is a tool that uses AI to help you write code. It’s a chatbot that can help you write code, fix bugs, and even write tests. OpenRouter is a tool that allows you to route requests to different APIs. In this case, we’ll use it to route the request to Aider. ...

March 3, 2025 · 4 min · Elvin Guti

Map array in server side Google tag manager

Sometimes you need to send to a third party service a different array structure than the one specified on Google Analytics 4 (GA4). So, in case you don’t want to create a new event only for this service and you want to reuse as much as posible a GA4 event like add_to_cart, then you need to map the GA4 built in array on GTM. This sounds pretty easy if you have used GTM (no server side) before, basically you create a new custom javascript variable and return the mapped array. However, on GTM using a server side container, the custom javascript variable is no longer available. ...

May 8, 2024 · 2 min · Elvin Guti

Show full branch name on powerlevel10k theme

powerlevel10k is a popular zsh theme and my favorite one. However, branch names are truncated if these are pretty long. Although, you can remove this limitation by updating its config file: vim ~/.p10k.zsh Search for the branch name and comment the line that’s doing the truncation: # Tip: To always show local branch name in full without truncation, delete the next line. # (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line You might need to restart zsh ...

April 16, 2024 · 1 min · Elvin Guti