hotpocket/services/apple/tasks.py
Tomek Wójcik 80fbbcddf3 BTHLABS-0000: bump-version task
Enough with manual version bumps :D
Co-authored-by: Tomek Wójcik <labs@tomekwojcik.pl>
Co-committed-by: Tomek Wójcik <labs@tomekwojcik.pl>
2025-09-17 20:27:20 +02:00

125 lines
2.3 KiB
Python

# -*- coding: utf-8 -*-
# type: ignore
from __future__ import annotations
import re
from invoke import Context, task
from invoke.exceptions import UnexpectedExit
from hotpocket_workspace_tools import get_workspace_mode
import hotpocket_workspace_tools.tasks
WORKSPACE_MODE = get_workspace_mode()
@task
def clean(ctx: Context):
ctx.run('rm -rf DerivedData/')
@task
def test(ctx: Context):
print('NOOP')
@task
def flake8(ctx: Context):
ctx.run('flake8')
@task
def isort(ctx, check=False, diff=False):
command_parts = [
'isort',
]
if check is True:
command_parts.append('--check')
if diff is True:
command_parts.append('--diff')
command_parts.append('.')
ctx.run(' '.join(command_parts))
@task
def eslint(ctx: Context):
print('NOOP')
@task
def lint(ctx: Context):
ihazsuccess = True
try:
flake8(ctx)
except UnexpectedExit:
ihazsuccess = False
try:
isort(ctx, check=True)
except UnexpectedExit:
ihazsuccess = False
if ihazsuccess is False:
raise RuntimeError('FIAL')
@task
def typecheck(ctx: Context):
ctx.run('mypy .')
@task
def django_shell(ctx: Context):
raise NotImplementedError()
@task
def ci(ctx: Context):
ihazsuccess = True
ci_tasks = [test, lint, typecheck]
for ci_task in ci_tasks:
try:
ci_task(ctx)
except UnexpectedExit:
ihazsuccess = False
if ihazsuccess is False:
raise RuntimeError('FIAL')
@task
def setup(ctx: Context):
print('NOOP')
@task
def start_web(ctx: Context):
raise NotImplementedError()
@task
def bump_version(ctx: Context, next_version: str, build: str | None = None):
hotpocket_workspace_tools.tasks.utils.bump_version(
ctx, next_version, build=build,
)
pbxproj_content = None
with open('HotPocket.xcodeproj/project.pbxproj', 'r', encoding='utf-8') as pbxproj_content_f:
pbxproj_content = pbxproj_content_f.read()
pbxproj_content = re.sub(
r'CURRENT_PROJECT_VERSION = [0-9]{10};',
f'CURRENT_PROJECT_VERSION = {build};',
pbxproj_content,
flags=re.MULTILINE,
)
with open('HotPocket.xcodeproj/project.pbxproj', 'w', encoding='utf-8') as pbxproj_content_f:
pbxproj_content_f.write(pbxproj_content)