Skip to content

Commit

Permalink
feat: github action enforce PR continuous integration rules
Browse files Browse the repository at this point in the history
* configure continuous integration pipeline that run with alfred.ci
* configure an equivalent of ./build.sh script that run with alfred.build
  • Loading branch information
FabienArcellier committed Feb 10, 2024
1 parent a524a84 commit 9c4cf6e
Show file tree
Hide file tree
Showing 6 changed files with 148 additions and 1 deletion.
13 changes: 13 additions & 0 deletions .alfred.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[alfred]
# name = "" # name of a subproject, use the name of the directory if not set
# description = "" # inline documentation for a sub project
# subprojects = []

# [alfred.project]
# command = [ "alfred/*.py" ]
# python_path_project_root = true
# python_path_extends = []
# venv = "src/.."

# more info about project manifest
# into https://alfred-cli.readthedocs.io/en/latest/project.html#setting-up-a-project-with-alfred-toml
33 changes: 33 additions & 0 deletions alfred/build.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import os.path
import shutil

import alfred


@alfred.command("build", help="build apps package for pypi")
@alfred.option("--ignore-ci", is_flag=True, help="ignore continuous integration pipeline")
def build(ignore_ci: bool = False):
if not ignore_ci:
alfred.invoke_command("ci")
else:
alfred.invoke_command("npm.build")

alfred.invoke_command("build.app_provisionning")
alfred.invoke_command("build.poetry")

@alfred.command("build.app_provisionning", help="update app templates using ./apps", hidden=True)
def build_app_provisionning():
if os.path.isdir('src/streamsync/app_templates'):
shutil.rmtree('src/streamsync/app_templates')

shutil.copytree( 'apps/default', 'src/streamsync/app_templates/default')
shutil.copytree( 'apps/hello', 'src/streamsync/app_templates/hello')

@alfred.command("build.poetry", help="build python packages with poetry", hidden=True)
def build_poetry():
removed_directories = ['dist', 'build']
for directory in removed_directories:
if os.path.isdir(directory):
shutil.rmtree(directory)

alfred.run("poetry build")
21 changes: 21 additions & 0 deletions alfred/ci.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import os

import alfred


@alfred.command("ci", help="continuous integration pipeline")
def ci():
alfred.invoke_command("ci.mypy")
alfred.invoke_command("ci.pytest")
alfred.invoke_command("npm.build")


@alfred.command("ci.mypy", help="typing checking with mypy on ./src/streamsync")
def ci_mypy():
alfred.run("mypy ./src/streamsync --exclude app_templates/*")


@alfred.command("ci.pytest", help="run pytest on ./tests")
def ci_test():
os.chdir("tests")
alfred.run("pytest")
12 changes: 12 additions & 0 deletions alfred/npm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import alfred
import os

@alfred.command("npm.build", help="build ui code")
def npm_build():
os.chdir("ui")
alfred.run("npm run build")

@alfred.command("npm.build_custom_components", help="build custom components")
def ui_build_custom():
os.chdir("ui")
alfred.run("npm run custom.build")
69 changes: 68 additions & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ pytest-asyncio = ">= 0.23.4, < 1"
pytest = ">= 7.0.0, < 8"
altair = ">= 5.2.0, < 6"
httpx = ">=0.26.0, < 1"
alfred-cli = "^2.2.6"

[tool.poetry.extras]
ds = ["pandas", "pyarrow", "plotly"]
Expand Down

0 comments on commit 9c4cf6e

Please sign in to comment.