@@ -4,21 +4,24 @@ version: "3"
44
55env :
66 UV_LOCKED : 1
7+ vars :
78 SOURCE_CODE : " browsr"
9+ DOCKER_REPO : juftin/browsr
10+
811tasks :
12+ # ######################################
913 default :
1014 desc : Install Project, List Tasks
1115 cmds :
1216 - task --list-all
1317 deps : [sync]
14- # ################################
15- # REQUIRED TASKS
16- # ################################
18+ # ######################################
1719 install :
1820 desc : Install Project + Dev Dependencies
1921 cmds :
2022 - task : pre-commit-install
2123 - task : sync
24+ # ######################################
2225 test :
2326 desc : Run Tests
2427 cmds :
3134 env :
3235 GITHUB_TOKEN : placeholder
3336 UV_PYTHON : " {{.UV_PYTHON}}"
37+ # ######################################
3438 test:matrix :
3539 desc : Run Tests with different Python versions
3640 cmds :
4044 task : test
4145 vars :
4246 UV_PYTHON : " {{.ITEM.PYTHON}}"
47+ # ######################################
4348 lint :
4449 desc : Run Code Linters
4550 cmds :
@@ -48,48 +53,82 @@ tasks:
4853 vars :
4954 CLI_ARGS : --check
5055 deps : [sync]
56+ # ######################################
57+ fmt :
58+ desc : Run Code Formatters
59+ cmds :
60+ - uv run -- ruff format {{.CLI_ARGS | default .ROOT_DIR}}
61+ deps : [sync]
62+ # ######################################
5163 fix :
5264 desc : Fix Code with Linters and Formatters
5365 cmds :
5466 - task : fmt
5567 - uv run -- ruff check --fix {{.CLI_ARGS | default .ROOT_DIR}}
5668 deps : [sync]
57- build :
69+ # ######################################
70+ check :
71+ desc : Run Static Type Checkers
72+ cmds :
73+ - |
74+ uv run -- \
75+ mypy \
76+ --ignore-missing-imports \
77+ {{.CLI_ARGS | default .SOURCE_CODE}}
78+ status :
79+ - ' [$(uv tree --package mypy) != ""]'
80+ requires :
81+ vars : [SOURCE_CODE]
82+ # ######################################
83+ dist :
5884 desc : Build the Project Artifacts
5985 cmds :
6086 - cmd : rm -rf {{.ROOT_DIR}}/dist
6187 - cmd : uv build
88+ # ######################################
89+ docker :
90+ desc : Build Docker Image
91+ cmd : |
92+ docker buildx build \
93+ --tag {{.DOCKER_REPO}}:{{.RELEASE_VERSION}} \
94+ --tag {{.DOCKER_REPO}}:latest \
95+ --file {{.ROOT_DIR}}/Dockerfile \
96+ {{.CLI_ARGS | default ""}} \
97+ {{.ROOT_DIR}}
98+ vars :
99+ RELEASE_VERSION :
100+ ref : .RELEASE_VERSION | default "local"
101+ requires :
102+ vars : [DOCKER_REPO]
103+ status :
104+ - test ! -f {{.ROOT_DIR}}/{{.DOCKERFILE | default "Dockerfile"}}
105+ # ######################################
106+ build :
107+ desc : Build the Project Artifacts
108+ cmds :
109+ - task : dist
110+ - task : docker
111+ # ######################################
62112 publish :
63113 desc : Publish the Project Artifacts
64114 cmds :
65- - task : build
115+ - task : docker
116+ vars :
117+ CLI_ARGS : --push
66118 requires :
67119 vars : [CI, RELEASE_VERSION]
68- # ################################
69- # NON-REQUIRED + COMPOSITE TASKS
70- # ################################
120+ # ######################################
121+ docs :
122+ desc : Generate Documentation
123+ cmds :
124+ - uv run --group docs -- mkdocs {{.CLI_ARGS | default "serve"}}
125+ # ######################################
71126 run :
72127 desc : Run Command within Project (requires "--")
73128 interactive : true
74129 cmds :
75130 - uv run -- {{.CLI_ARGS}}
76- fmt :
77- desc : Run Code Formatters
78- cmds :
79- - uv run -- ruff format {{.CLI_ARGS | default .ROOT_DIR}}
80- deps : [sync]
81- check :
82- desc : Run Static Type Checkers
83- cmds :
84- - |
85- uv run -- \
86- mypy \
87- --ignore-missing-imports \
88- {{.CLI_ARGS | default .SOURCE_CODE}}
89- status :
90- - ' [$(uv tree --package mypy) != ""]'
91- requires :
92- vars : [SOURCE_CODE]
131+ # ######################################
93132 docker-run :
94133 desc : Run Command within Docker Container (supports "--" for command)
95134 interactive : true
@@ -107,26 +146,24 @@ tasks:
107146 - test ! -f {{.ROOT_DIR}}/{{.DOCKERFILE | default "Dockerfile"}}
108147 requires :
109148 vars : [DOCKER_REPO]
149+ # ######################################
110150 lock :
111151 desc : Regenerate the Project Lockfile
112152 cmds :
113153 - uv lock
114154 env :
115155 UV_LOCKED : " 0"
116- docs :
117- desc : Generate Documentation
118- cmds :
119- - uv run --group docs -- mkdocs {{.CLI_ARGS | default "serve"}}
120- # #######################
156+ # ######################################
121157 # INTERNAL TASKS
122- # #######################
158+ # ######################################
123159 sync :
124160 desc : Install Project Dependencies
125161 internal : true
126162 cmds :
127163 - uv sync --all-extras {{.CLI_ARGS}}
128164 env :
129165 UV_PYTHON : " {{.UV_PYTHON}}"
166+ # ######################################
130167 pre-commit-install :
131168 desc : Install Pre-Commit Hooks
132169 internal : true
0 commit comments