188 lines
4.3 KiB
TOML
188 lines
4.3 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'
|
|
DBUI_URL = 'sqlite:data/music_library_dev.db'
|
|
|
|
[tools]
|
|
hurl = 'latest'
|
|
flyctl = 'latest'
|
|
sqlite = 'latest'
|
|
gh = 'latest'
|
|
|
|
# BUILDING BLOCKS
|
|
|
|
# NPM DEPS
|
|
|
|
[tasks.npm-install]
|
|
run = 'npm install --prefix assets'
|
|
hide = true
|
|
|
|
[tasks.npm-update]
|
|
run = 'npm update --prefix assets'
|
|
hide = true
|
|
|
|
[tasks.npm-outdated]
|
|
run = 'npm outdated --prefix assets'
|
|
hide = true
|
|
|
|
# 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
|
|
|
|
# ESBUILD DEP
|
|
|
|
[tasks.esbuild-update]
|
|
description = 'Update the esbuild version configured in the project'
|
|
run = 'mix esbuild.update_version'
|
|
hide = true
|
|
|
|
[tasks.esbuild-outdated]
|
|
description = 'Checks that the esbuild version is up to date'
|
|
run = 'mix esbuild.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
|
|
|
|
# TOOLING
|
|
|
|
[tasks.gh-markdown-preview-extension-install]
|
|
description = 'Install a gh extension to preview GH-flavoured markdown files locally'
|
|
run = ['gh extension install thiagokokada/gh-gfm-preview']
|
|
hide = true
|
|
|
|
[tasks.gh-markdown-preview-extension-update]
|
|
description = 'Update the gh extension to preview GH-flavoured markdown files locally'
|
|
run = ['gh extension upgrade gfm-preview']
|
|
hide = true
|
|
|
|
# PUBLIC TASKS
|
|
|
|
# DEPENDENCIES
|
|
|
|
[tasks."deps:outdated"]
|
|
depends = [
|
|
'npm-outdated',
|
|
'tailwind-outdated',
|
|
'esbuild-outdated',
|
|
'mix-outdated',
|
|
]
|
|
description = 'Show outdated dependencies'
|
|
|
|
[tasks."deps:update"]
|
|
depends = [
|
|
'npm-update',
|
|
'tailwind-update',
|
|
'esbuild-update',
|
|
'mix-update',
|
|
'gh-markdown-preview-extension-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',
|
|
'gh-markdown-preview-extension-install',
|
|
]
|
|
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 --merge'
|
|
|
|
[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'
|
|
|
|
[tasks."dev:readme-preview"]
|
|
description = 'Preview the README file via a GH flavoured markdown rendered'
|
|
run = 'gh gfm-preview README.md'
|
|
|
|
# DOCKER
|
|
|
|
[tasks."docker:build"]
|
|
description = 'Builds and tags the application Docker image'
|
|
run = """
|
|
docker build \
|
|
-t fullyforged/music_library \
|
|
--secret id=FLUXON_KEY_FINGERPRINT \
|
|
--secret id=FLUXON_LICENSE_KEY \
|
|
.
|
|
"""
|
|
|
|
[tasks."docker:push"]
|
|
description = 'Push the image to the registry'
|
|
run = 'docker push fullyforged/music_library'
|