49 lines
1.5 KiB
Bash
Executable File
49 lines
1.5 KiB
Bash
Executable File
#! /usr/bin/env nix-shell
|
|
#! nix-shell -i bash -p imagemagick libwebp
|
|
# shellcheck shell=bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Get the absolute path to the script file
|
|
SCRIPT_DIR="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" && pwd)"
|
|
SCREENSHOT_DIR="${SCRIPT_DIR}"/../screenshots
|
|
|
|
function generate_grid() {
|
|
local MONTAGE_INPUT BACKGROUND_COLOR OUTPUT_FILE
|
|
MONTAGE_INPUT="$(mktemp)"
|
|
OUTPUT_FILE="${1:?}"
|
|
BACKGROUND_COLOR="${2:?}"
|
|
# Run the Maestro flow to generate the screenshots
|
|
"${SCRIPT_DIR}"/run-maestro-flows.sh feature_graphic.yml
|
|
|
|
# Fill out the input files with padding
|
|
printf "%s\n%s\n%s\n%s\n%s\n%s\n" \
|
|
"${SCREENSHOT_DIR}"/HottestPosts.png \
|
|
"${SCREENSHOT_DIR}"/CommentsPage.png \
|
|
"${SCREENSHOT_DIR}"/SavedPosts.png \
|
|
"${SCREENSHOT_DIR}"/SearchPage.png \
|
|
"xc:${BACKGROUND_COLOR}" \
|
|
"${SCREENSHOT_DIR}"/SettingsPage.png \
|
|
>> "${MONTAGE_INPUT}"
|
|
|
|
# Use imagemagick to stitch the screenshots in a grid
|
|
# Dimensions are of my Pixel 4a which I use for this purpose
|
|
montage @"${MONTAGE_INPUT}" -tile 3x0 -geometry 1080x2340+0.0! \
|
|
-border 0 -density 300 \
|
|
"${OUTPUT_FILE}.png" || true
|
|
|
|
# Convert the resulting PNG to WebP
|
|
cwebp "${OUTPUT_FILE}.png" -o "${OUTPUT_FILE}.webp"
|
|
|
|
# Remove the now-useless PNG and montage input text
|
|
rm "${OUTPUT_FILE}.png" "${MONTAGE_INPUT}"
|
|
}
|
|
|
|
adb shell "cmd uimode night no"
|
|
|
|
generate_grid "${SCRIPT_DIR}"/../.github/readme_feature_light white
|
|
|
|
adb shell "cmd uimode night yes"
|
|
|
|
generate_grid "${SCRIPT_DIR}"/../.github/readme_feature_dark black
|