141 lines
3.2 KiB
TOML
141 lines
3.2 KiB
TOML
[env]
|
|
LAST_FM_USER = 'change-me'
|
|
LAST_FM_API_KEY = 'change-me'
|
|
OPENAI_KEY = 'change-me'
|
|
FLUXON_KEY_FINGERPRINT = 'change-me'
|
|
FLUXON_LICENSE_KEY = 'change-me'
|
|
|
|
[tools]
|
|
hurl = 'latest'
|
|
flyctl = 'latest'
|
|
sqlite = 'latest'
|
|
gh = 'latest'
|
|
|
|
# BUILDING BLOCKS
|
|
|
|
# NPM DEPS
|
|
|
|
[tasks.npm-install]
|
|
run = 'npm install'
|
|
hide = true
|
|
dir = 'assets'
|
|
|
|
[tasks.npm-update]
|
|
run = 'npm update'
|
|
hide = true
|
|
dir = 'assets'
|
|
|
|
[tasks.npm-outdated]
|
|
run = 'npm outdated'
|
|
hide = true
|
|
dir = 'assets'
|
|
|
|
# TAILWIND DEP
|
|
|
|
[tasks.tailwind-update]
|
|
description = 'Update the Tailwind version configured in the project'
|
|
run = 'mix tailwind.update_version'
|
|
hide = true
|
|
|
|
[tasks.tailwind-outdated]
|
|
description = 'Checks that the Tailwind version is up to date'
|
|
run = 'mix tailwind.check_version'
|
|
hide = true
|
|
|
|
# MIX DEPS
|
|
|
|
[tasks.mix-update]
|
|
description = 'Update mix dependencies'
|
|
run = ['mix deps.update --all']
|
|
hide = true
|
|
|
|
[tasks.mix-outdated]
|
|
description = 'Show outdated mix dependencies'
|
|
run = ['mix hex.outdated --all']
|
|
hide = true
|
|
|
|
# PUBLIC TASKS
|
|
|
|
# DEPENDENCIES
|
|
|
|
[tasks."deps:outdated"]
|
|
depends = ['npm-outdated', 'tailwind-outdated', 'mix-outdated']
|
|
description = 'Show outdated dependencies'
|
|
|
|
[tasks."deps:update"]
|
|
depends = ['npm-update', 'tailwind-update', 'mix-update']
|
|
description = 'Update dependencies'
|
|
|
|
# SETUP
|
|
|
|
[tasks.fluxon-add-repo]
|
|
description = "Add the fluxon repo"
|
|
run = """
|
|
mix hex.repo add fluxon https://repo.fluxonui.com \
|
|
--fetch-public-key $FLUXON_KEY_FINGERPRINT \
|
|
--auth-key $FLUXON_LICENSE_KEY
|
|
"""
|
|
|
|
[tasks."dev:setup"]
|
|
depends = ['npm-install', 'fluxon-add-repo']
|
|
description = 'Install dependencies and setup the database'
|
|
run = ['mix setup']
|
|
|
|
# PRODUCTION
|
|
|
|
[tasks."prod:console"]
|
|
description = 'Open an ssh console to the production env'
|
|
run = 'fly ssh console'
|
|
|
|
[tasks."prod:migrate"]
|
|
description = 'Run migrations against production'
|
|
run = 'mix music_library.prod.db_migrate'
|
|
|
|
[tasks."prod:backup"]
|
|
description = 'Backup the production database to the local development env'
|
|
run = 'mix music_library.prod.db_backup'
|
|
|
|
[tasks."prod:prune-backups"]
|
|
confirm = 'Are you sure you want to delete all downloaded database backups?'
|
|
description = 'Deletes all downloaded database backups'
|
|
run = 'rm data/music_library_prod*'
|
|
|
|
[tasks."prod:test"]
|
|
description = 'Run HTTP tests against production'
|
|
run = 'hurl --test test/prod.hurl'
|
|
|
|
# GIT TOOLING
|
|
|
|
[tasks.static-checks-hook]
|
|
description = '''
|
|
Pre-commit task to ensure code conforms to static checks policies.
|
|
|
|
Install with `mise generate git-pre-commit --write --task=static-checks-hook`
|
|
'''
|
|
run = 'mix do format --check-formatted, credo --strict, gettext.extract --check-up-to-date'
|
|
hide = true
|
|
|
|
# DEVELOPMENT/TEST
|
|
|
|
[tasks."dev:static-checks"]
|
|
description = 'Run static checks for code formatting, translations, quality'
|
|
run = 'mix do format, credo, gettext.extract'
|
|
|
|
[tasks.test]
|
|
description = 'Run project tests'
|
|
run = 'mix test'
|
|
|
|
[tasks."dev:console"]
|
|
description = 'Run the application attached to an IEx console'
|
|
run = 'iex -S mix phx.server'
|
|
|
|
# DOCKER
|
|
|
|
[tasks."docker:build"]
|
|
description = 'Builds and tags the application Docker image'
|
|
run = 'docker build -t fullyforged/music_library .'
|
|
|
|
[tasks."docker:push"]
|
|
description = 'Push the image to the registry'
|
|
run = 'docker push fullyforged/music_library'
|