diff --git a/.github/workflows/update-submodules.yml b/.github/workflows/update-submodules.yml index 5dbb895..a50da5c 100644 --- a/.github/workflows/update-submodules.yml +++ b/.github/workflows/update-submodules.yml @@ -1,39 +1,66 @@ name: Update Submodules on: + push: + branches: [ dev ] schedule: - cron: '0 0 * * *' jobs: - update_submodules: - name: Update Submodules + check_submodules: + name: Check Submodules runs-on: ubuntu-latest + outputs: + has_changes: ${{ steps.check.outputs.has_changes }} steps: - name: Checkout Code uses: actions/checkout@v3 + - name: Create new branch and push changes + run: | + git submodule update --remote + + - name: Check for changes + id: check + run: | + git diff --quiet || echo "::set-output name=has_changes::true" + + update_submodules: + name: Update Submodules + runs-on: ubuntu-latest + needs: [check_submodules] + if: needs.check_submodules.outputs.has_changes == 'true' + steps: + - name: Setup Python 3.10.4 uses: actions/setup-python@v3 with: python-version: '3.10.4' - - name: Changing naming convention - run: | - python3 naming.py + - name: Setup Poetry + uses: abatilo/actions-poetry@v3 + with: + poetry-version: 1.8.2 - - name: Create new branch and push changes + - name: Install Dependencies run: | - git config user.name github-actions - git config user.email github-actions@github.com - git submodule update --remote + poetry install --no-root - - name: Changing naming convention + - name: Update Submodule run: | - python3 naming.py - git checkout -b $GITHUB_RUN_ID + datamodel-codegen --input ./compose-spec/schema/compose-spec.json --output-model-type pydantic_v2.BaseModel --field-constraints --output ./compose_viz/spec/compose_spec.py + poetry run python ./update-submodules.py + + - name: Execute pre-commit + continue-on-error: true + run: | + poetry run python -m pre_commit run --all-files - name: Push changes run: | + git config user.name github-actions + git config user.email github-actions@github.com + git checkout -b $GITHUB_RUN_ID git commit -am "chore: update submodules" git push --set-upstream origin $GITHUB_RUN_ID @@ -48,5 +75,5 @@ jobs: head: process.env.GITHUB_RUN_ID, base: 'main', title: `chore: update submodules (${process.env.GITHUB_RUN_ID})`, - body: `chore: update submodules (${process.env.GITHUB_RUN_ID})`, + body: `Please add the version tag to trigger the release.`, }); diff --git a/compose_viz/__init__.py b/compose_viz/__init__.py index b5c97de..c8af50a 100644 --- a/compose_viz/__init__.py +++ b/compose_viz/__init__.py @@ -1,2 +1,2 @@ -__app_name__ = "compose_viz" -__version__ = "0.3.2" +__app_name__ = "compose_viz" +__version__ = "0.3.2" diff --git a/naming.py b/naming.py deleted file mode 100644 index f1ecc72..0000000 --- a/naming.py +++ /dev/null @@ -1,20 +0,0 @@ -def revise_naming_convention(): - name_mapping = { - "EnvFile1": "EnvFilePath", - "Volume1": "AdditionalVolumeOption", - "External": "ExternalVolumeNetwork", - "External1": "ExternalConfig", - } - - with open("./compose_viz/spec/compose_spec.py", "r") as spec_file: - spec_content = spec_file.read() - - for origin_name, new_name in name_mapping.items(): - spec_content.replace(origin_name, new_name) - - return - - -if __name__ == "__main__": - revise_naming_convention() - print("Revised naming convention successfully!") diff --git a/pyproject.toml b/pyproject.toml index c69ac6a..da0f26f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,36 +1,36 @@ -[tool.poetry] -name = "compose-viz" -version = "0.3.2" -description = "A compose file visualization tool that supports compose-spec and allows you to gernerate graph in several formats." -authors = ["Xyphuz Wu "] -readme = "README.md" -license = "MIT" -homepage = "https://github.com/compose-viz/compose-viz" -repository = "https://github.com/compose-viz/compose-viz" -include = [ - "LICENSE", -] - -[tool.poetry.dependencies] -python = "^3.9" -typer = "^0.4.1" -graphviz = "^0.20" -pydantic-yaml = "^1.3.0" - -[tool.poetry.group.dev.dependencies] -pytest = "^8.1.2" -pre-commit = "^3.7.0" -coverage = "^7.5.0" -pytest-cov = "^5.0.0" -datamodel-code-generator = "^0.25.6" - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" - -[tool.poetry.scripts] -cpv = "compose_viz.cli:start_cli" - -[tool.coverage.run] -source = ["compose_viz"] -omit = ["compose_viz/spec/*"] +[tool.poetry] +name = "compose-viz" +version = "0.3.2" +description = "A compose file visualization tool that supports compose-spec and allows you to gernerate graph in several formats." +authors = ["Xyphuz Wu "] +readme = "README.md" +license = "MIT" +homepage = "https://github.com/compose-viz/compose-viz" +repository = "https://github.com/compose-viz/compose-viz" +include = [ + "LICENSE", +] + +[tool.poetry.dependencies] +python = "^3.9" +typer = "^0.4.1" +graphviz = "^0.20" +pydantic-yaml = "^1.3.0" + +[tool.poetry.group.dev.dependencies] +pytest = "^8.1.2" +pre-commit = "^3.7.0" +coverage = "^7.5.0" +pytest-cov = "^5.0.0" +datamodel-code-generator = "^0.25.6" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.scripts] +cpv = "compose_viz.cli:start_cli" + +[tool.coverage.run] +source = ["compose_viz"] +omit = ["compose_viz/spec/*"] diff --git a/update-submodules.py b/update-submodules.py new file mode 100644 index 0000000..038ab7b --- /dev/null +++ b/update-submodules.py @@ -0,0 +1,54 @@ +import re + + +def revise_naming_convention(): + name_mapping = { + "EnvFile1": "EnvFilePath", + "Volume1": "AdditionalVolumeOption", + "External": "ExternalVolumeNetwork", + "External2": "ExternalConfig", + } + + spec_content: str + with open("./compose_viz/spec/compose_spec.py", "r+") as spec_file: + spec_content: str = spec_file.read() + + for origin_name, new_name in name_mapping.items(): + spec_content = re.sub(rf"\b{origin_name}\b", new_name, spec_content) + + spec_file.seek(0) + spec_file.write(spec_content) + + print("Revised naming convention successfully!") + + +def update_version_number(): + new_version_number: str + with open("./compose_viz/__init__.py", "r+") as init_file: + init_content: str = init_file.read() + + version_number = init_content.split(" ")[-1].replace('"', "").strip() + major, minor, patch = version_number.split(".") + new_version_number = f"{major}.{minor}.{int(patch) + 1}" + + init_file.seek(0) + init_file.write( + f"""__app_name__ = "compose_viz" +__version__ = "{new_version_number}" +""" + ) + + with open("./pyproject.toml", "r+") as pyproject_file: + pyproject_content: str = pyproject_file.read() + + pyproject_content = pyproject_content.replace(version_number, new_version_number) + + pyproject_file.seek(0) + pyproject_file.write(pyproject_content) + + print(f"Version number updated to {new_version_number} successfully!") + + +if __name__ == "__main__": + revise_naming_convention() + update_version_number()