VHS Themes builds and hosts a gallery showcasing hundreds of themes from charmbracelet/vhs.
Visit the branch themes for viewing the complete list.
3024 Day |
3024 Night |
- VHS comes with hundreds of themes. Recording and publishing that many records should be done in less than 6 hours with GitHub Actions
- The shorter the better
- Same remote contents should not be generated and published unless forced
- Keep the size of the repository consistent over time by
- Publishing records to a dedicated orphan branch (that is deleted beforehand)
- As some file systems can be case-insensitive, records will be prefixed with a number which allows themes like
TokyoNight
andtokyonight
to be recorded to 2 different files - Themes with same name (case sensitive) will only be recorded once. For instance, with themes
TokyoNight
,tokyonight
, andtokyonight
, the secondtokyonight
theme will be ignored - Viewing the records in a browser should be a good experience
- Good balance between the number of records per page (loading time) versus the total number of pages to navigate
- Logs should be useful but concise so that generating many records won't output zillions of lines
- A single record should
- Be good enough to view the theme (ie: font size, content, and time)
- Be as small as possible which saves GitHub repository size, and time to record and publish
- Commands should run the same way
- Locally as well as with GitHub Actions
- For a private or public repository
This project follows the 3 Musketeers pattern
- Docker
- Compose
- Make
- GitHub account
- GitHub fine-grained personal access token
- Token access
- Only select repositories
- Contents: Read and Write
- Metadata: Read-only
- Token access
# Create a .env file and modify it with the correct values
# All variables are required but does not mean they are all used at once
make envfile
# Install dependencies
make deps
# Run the test (record and page)
make test
# Generate records
make record
# Create markdown pages
make page
# Test end-to-end (record, page, publish, and download)
# Requires GitHub token
make testE2E
# Publish the contents to a dedicated publish branch
# Requires GitHub token
make publish
# Download remote contents
# This is useful if minor change needs to be done without the need of recording
make download
# Check if remote and local contents are the same (based on metadata)
make checkMetadata
# Access shell container. Useful for testing/troubleshooting scripts
make shell
# Prune the current dir from generated files
make prune