diff --git a/.mise.toml b/.mise.toml index 1457634..5b2afe7 100644 --- a/.mise.toml +++ b/.mise.toml @@ -1,3 +1,4 @@ [tools] lefthook = "latest" +task = "latest" uv = "latest" diff --git a/Taskfile.yaml b/Taskfile.yaml new file mode 100644 index 0000000..b078bc3 --- /dev/null +++ b/Taskfile.yaml @@ -0,0 +1,37 @@ +version: '3' + +vars: + # If you run bare environment or activated venv, set '' (blank string) + RUN_PYTHON: 'uv run' + +tasks: + setup: + desc: 'Setup workspace' + cmds: + - 'uv sync --frozen --all-extras' + - 'lefthook install' + - task: 'docs:apidoc' + verify: + desc: 'Verify environment by all procs' + cmds: + - 'lefthook run pre-commit --all-files' + - '{{.RUN_PYTHON}} pytest' + - task: 'docs:intl' + - task: 'docs:apidoc' + - task: 'docs:build-linkcheck' + - task: 'docs:build-dirhtml' + - task: 'demo:intl' + - task: 'docs:build-linkcheck' + - task: 'demo:build' + - 'uv build' + release-*: + desc: 'Run release process' + vars: + VERSION: '{{index .MATCH 0}}' + cmds: + - 'age update {{.VERSION}}' + - 'uv sync --all-extras' # To write out as lock-file + +includes: + docs: './doc' + demo: './demo' diff --git a/demo/Taskfile.yaml b/demo/Taskfile.yaml new file mode 100644 index 0000000..3e6b8ae --- /dev/null +++ b/demo/Taskfile.yaml @@ -0,0 +1,46 @@ +version: '3' + +vars: + # If you run bare environment or activated venv, set '' (blank string) + # RUN_PYTHON: '' + SPHINX_DEFAULT_BUILD: 'mini18n-dirrevealjs' + SPHINX_SOURCE_DIR: '.' + SPHINX_OUTPUT_DIR: '_build' + SPHINX_OPTIONS: '' + SPHINX_LANGUAGES: + - 'ja' + +env: + SPHINXINTL_TRANSLATOR: "Kazuya Takei " + +tasks: + intl: + desc: 'Sync i18n environment' + dir: '{{.TASKFILE_DIR}}' + cmds: + - '{{.RUN_PYTHON}} sphinx-build -M gettext {{.SPHINX_SOURCE_DIR}} {{.SPHINX_OUTPUT_DIR}} {{.SPHINX_OPTIONS}}' + - '{{.RUN_PYTHON}} sphinx-intl update --language={{.SPHINX_LANGUAGES | join ","}}' + dev: + desc: 'Run docs server' + dir: '{{.TASKFILE_DIR}}' + cmds: + - '{{.RUN_PYTHON}} sphinx-autobuild -b dirrevealjs {{.SPHINX_SOURCE_DIR}} {{.SPHINX_OUTPUT_DIR}}/dirrevealjs' + build-*: + desc: 'Make docs' + dir: '{{.TASKFILE_DIR}}' + vars: + TARGET: '{{index .MATCH 0}}' + cmds: + - '{{.RUN_PYTHON}} sphinx-build -M {{.TARGET}} {{.SPHINX_SOURCE_DIR}} {{.SPHINX_OUTPUT_DIR}}' + build: + desc: 'Make docs (default target)' + deps: + - 'build-{{.SPHINX_DEFAULT_BUILD}}' + help: + desc: 'Display help of docs' + deps: + - 'build-help' + clean: + desc: 'Clean build files of docs' + deps: + - 'build-clean' diff --git a/doc/Taskfile.yaml b/doc/Taskfile.yaml new file mode 100644 index 0000000..74fdbac --- /dev/null +++ b/doc/Taskfile.yaml @@ -0,0 +1,52 @@ +version: '3' + +vars: + # If you run bare environment or activated venv, set '' (blank string) + # RUN_PYTHON: '' + SPHINX_DEFAULT_BUILD: 'dirhtml' + SPHINX_SOURCE_DIR: '.' + SPHINX_OUTPUT_DIR: '_build' + SPHINX_OPTIONS: '' + SPHINX_LANGUAGES: + - 'ja' + +env: + SPHINXINTL_TRANSLATOR: "Kazuya Takei " + +tasks: + intl: + desc: 'Sync i18n environment' + dir: '{{.TASKFILE_DIR}}' + cmds: + - '{{.RUN_PYTHON}} sphinx-build -M gettext {{.SPHINX_SOURCE_DIR}} {{.SPHINX_OUTPUT_DIR}} {{.SPHINX_OPTIONS}}' + - '{{.RUN_PYTHON}} sphinx-intl update --language={{.SPHINX_LANGUAGES | join ","}}' + dev: + desc: 'Run docs server' + dir: '{{.TASKFILE_DIR}}' + cmds: + - '{{.RUN_PYTHON}} sphinx-autobuild -b dirhtml {{.SPHINX_SOURCE_DIR}} {{.SPHINX_OUTPUT_DIR}}/dirhtml' + apidoc: + desc: 'Update apidoc' + dir: '{{.TASKFILE_DIR}}' + cmds: + - 'rm -rf api' + - '{{.RUN_PYTHON}} sphinx-apidoc -f -e -T -o=api/ ../sphinx_revealjs' + build-*: + desc: 'Make docs' + dir: '{{.TASKFILE_DIR}}' + vars: + TARGET: '{{index .MATCH 0}}' + cmds: + - '{{.RUN_PYTHON}} sphinx-build -M {{.TARGET}} {{.SPHINX_SOURCE_DIR}} {{.SPHINX_OUTPUT_DIR}}' + build: + desc: 'Make docs (default target)' + deps: + - 'build-{{.SPHINX_DEFAULT_BUILD}}' + help: + desc: 'Display help of docs' + deps: + - 'build-help' + clean: + desc: 'Clean build files of docs' + deps: + - 'build-clean' diff --git a/doc/conf.py b/doc/conf.py index 8117434..6395140 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -72,6 +72,15 @@ epub_title = project epub_exclude_files = ["search.html"] +# -- Options for Linkcheck output +linkcheck_ignore = [ + r"./docs/migrations", # TODO: Fix after. + # TODO: Migrate ``linkcheck_anchors_ignore_for_url`` + r"https://attakei.github.io/sphinx-revealjs/en/#/5/1", + r"https://revealjs.com/#/", + r"https://revealjs.com/code/#line-numbers-%26-highlights", +] + # -- Extension configuration ------------------------------------------------- # For sphinx.ext.intersphinx intersphinx_mapping = {