From 9cc1d6528068d6552fd72461a2ad49987edd39da Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Mon, 31 Jul 2023 18:32:38 +1000 Subject: Add demo test variant We're piggybacking on our existing integration test framework to record demos that we can include in our docs --- demo/README.md | 2 + demo/config.yml | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ demo/record_demo.sh | 38 ++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 demo/README.md create mode 100644 demo/config.yml create mode 100755 demo/record_demo.sh (limited to 'demo') diff --git a/demo/README.md b/demo/README.md new file mode 100644 index 000000000..422ab37a8 --- /dev/null +++ b/demo/README.md @@ -0,0 +1,2 @@ +This directory contains stuff for recording lazygit demos. + diff --git a/demo/config.yml b/demo/config.yml new file mode 100644 index 000000000..856182b27 --- /dev/null +++ b/demo/config.yml @@ -0,0 +1,109 @@ +# Specify a command to be executed +# like `/bin/bash -l`, `ls`, or any other commands +# the default is bash for Linux +# or powershell.exe for Windows +command: echo "YOU NEED TO SPECIFY YOUR OWN COMMAND WITH THE -d ARG" + +# Specify the current working directory path +# the default is the current working directory path +cwd: null + +# Export additional ENV variables +env: + recording: true + +# Explicitly set the number of columns +# or use `auto` to take the current +# number of columns of your shell +cols: 120 # 100 + +# Explicitly set the number of rows +# or use `auto` to take the current +# number of rows of your shell +rows: 35 # 30 + +# Amount of times to repeat GIF +# If value is -1, play once +# If value is 0, loop indefinitely +# If value is a positive number, loop n times +repeat: 0 + +# Quality +# 1 - 100 +# Higher quality seems to make no difference, but running it through +# gifsicle ends up with a much better compressed version. +quality: 100 + +# Delay between frames in ms +# If the value is `auto` use the actual recording delays +frameDelay: auto + +# Maximum delay between frames in ms +# Ignored if the `frameDelay` isn't set to `auto` +# Set to `auto` to prevent limiting the max idle time +maxIdleTime: 2000 + +# The surrounding frame box +# The `type` can be null, window, floating, or solid` +# To hide the title use the value null +# Don't forget to add a backgroundColor style with a null as type +frameBox: + type: floating + title: Lazygit + style: + border: 0px black solid + backgroundColor: "#1d1d1d" + margin: -5px + +# Add a watermark image to the rendered gif +# You need to specify an absolute path for +# the image on your machine or a URL, and you can also +# add your own CSS styles +watermark: + imagePath: null + style: + position: absolute + right: 15px + bottom: 15px + width: 100px + opacity: 0.9 + +# Cursor style can be one of +# `block`, `underline`, or `bar` +cursorStyle: block + +# Font family +# You can use any font that is installed on your machine +# in CSS-like syntax +fontFamily: "DejaVuSansMono Nerd Font" + +# The size of the font +fontSize: 8 + +# The height of lines +lineHeight: 1 + +# The spacing between letters +letterSpacing: 0 + +# Theme +theme: + background: "transparent" + foreground: "#dddad6" + cursor: "#c7c7c7" + black: "#7a7a7a" + red: "#fc4384" + green: "#b3e33b" + yellow: "#ffa727" + blue: "#102895" + magenta: "#c930c7" + cyan: "#00c5c7" + white: "#c7c7c7" + brightBlack: "#676767" + brightRed: "#ff7fac" + brightGreen: "#c8ed71" + brightYellow: "#ebdf86" + brightBlue: "#6871ff" + brightMagenta: "#ff76ff" + brightCyan: "#5ffdff" + brightWhite: "#fffefe" diff --git a/demo/record_demo.sh b/demo/record_demo.sh new file mode 100755 index 000000000..92ab4033c --- /dev/null +++ b/demo/record_demo.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +TEST=$1 + +set -e + +if [ -z "$TEST" ] +then + echo "Usage: $0 " + exit 1 +fi + +if ! command -v terminalizer &> /dev/null +then + echo "terminalizer could not be found" + echo "Install it with: npm install -g terminalizer" + exit 1 +fi + +if ! command -v "gifsicle" &> /dev/null +then + echo "gifsicle could not be found" + echo "Install it with: npm install -g gifsicle" + exit 1 +fi + +# get last part of the test path and set that as the output name +# example test path: pkg/integration/tests/01_basic_test.go +# For that we want: NAME=01_basic_test +NAME=$(echo "$TEST" | sed -e 's/.*\///' | sed -e 's/\..*//') + +go generate pkg/integration/tests/tests.go + +terminalizer -c demo/config.yml record --skip-sharing -d "go run cmd/integration_test/main.go cli --slow $TEST" "demo/output/$NAME" +terminalizer render "demo/output/$NAME" -o "demo/output/$NAME.gif" +gifsicle --colors 256 --use-col=web -O3 < "demo/output/$NAME.gif" > "demo/output/$NAME-compressed.gif" + +echo "Demo recorded to demo/$NAME-compressed.gif" -- cgit v1.2.3