From 3436283375417b267e1ca9aea3ad0bae5e2df07f Mon Sep 17 00:00:00 2001 From: Deniz Altunkapan Date: Sat, 21 Jun 2025 00:10:18 +0200 Subject: [PATCH 1/4] Update directory generator workflow and auto-commit logic --- .github/workflows/update-directorymd.yml | 32 +++++++++ .github/workflows/update_directory.yml | 92 ------------------------ 2 files changed, 32 insertions(+), 92 deletions(-) create mode 100644 .github/workflows/update-directorymd.yml delete mode 100644 .github/workflows/update_directory.yml diff --git a/.github/workflows/update-directorymd.yml b/.github/workflows/update-directorymd.yml new file mode 100644 index 000000000000..a1fea5e978be --- /dev/null +++ b/.github/workflows/update-directorymd.yml @@ -0,0 +1,32 @@ +name: Generate Directory Markdown + +on: + push: + branches: [ master ] + workflow_dispatch: + +permissions: + contents: write + +jobs: + generate-directory: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Run Directory Tree Generator + uses: DenizAltunkapan/directory-tree-generator@v1 + with: + path: src + extensions: . + + - name: Commit and Push DIRECTORY.md + run: | + cat DIRECTORY.md + git config --global user.name "$GITHUB_ACTOR" + git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" + git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY + git add DIRECTORY.md + git commit -am "Update directory" || true + git push origin HEAD:$GITHUB_REF \ No newline at end of file diff --git a/.github/workflows/update_directory.yml b/.github/workflows/update_directory.yml deleted file mode 100644 index c811d244e54b..000000000000 --- a/.github/workflows/update_directory.yml +++ /dev/null @@ -1,92 +0,0 @@ -# This GitHub Action updates the DIRECTORY.md file (if needed) when doing a git push or pull_request -name: Update Directory -permissions: - contents: write -on: - push: - paths: - - 'src/**' - pull_request: - paths: - - 'src/**' - workflow_dispatch: - inputs: - logLevel: - description: 'Log level' - required: true - default: 'info' - type: choice - options: - - info - - warning - - debug -jobs: - update_directory_md: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - name: Update Directory - shell: python - run: | - import os - from typing import Iterator - - URL_BASE = "https://github.com/TheAlgorithms/Java/blob/master" - g_output = [] - - - def good_filepaths(top_dir: str = ".") -> Iterator[str]: - for dirpath, dirnames, filenames in os.walk(top_dir): - dirnames[:] = [d for d in dirnames if d[0] not in "._"] - for filename in filenames: - if os.path.splitext(filename)[1].lower() == ".java": - yield os.path.join(dirpath, filename).lstrip("./") - - - def md_prefix(i): - return f"{i * ' '}*" if i else "\n##" - - - def print_path(old_path: str, new_path: str) -> str: - global g_output - old_parts = old_path.split(os.sep) - mid_diff = False - new_parts = new_path.split(os.sep) - for i, new_part in enumerate(new_parts): - if i + 1 > len(old_parts) or old_parts[i] != new_part or mid_diff: - if i + 1 < len(new_parts): - mid_diff = True - if new_part: - g_output.append(f"{md_prefix(i)} {new_part.replace('_', ' ')}") - return new_path - - - def build_directory_md(top_dir: str = ".") -> str: - global g_output - old_path = "" - for filepath in sorted(good_filepaths(top_dir), key=str.lower): - filepath, filename = os.path.split(filepath) - if filepath != old_path: - old_path = print_path(old_path, filepath) - indent = (filepath.count(os.sep) + 1) if filepath else 0 - url = "/".join((URL_BASE, filepath, filename)).replace(" ", "%20") - filename = os.path.splitext(filename.replace("_", " "))[0] - g_output.append(f"{md_prefix(indent)} [{filename}]({url})") - return "\n".join(g_output) - - - with open("DIRECTORY.md", "w") as out_file: - out_file.write(build_directory_md(".") + "\n") - - - name: Update DIRECTORY.md - run: | - cat DIRECTORY.md - git config --global user.name "$GITHUB_ACTOR" - git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" - git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY - git add DIRECTORY.md - git commit -am "Update directory" || true - git push --force origin HEAD:$GITHUB_REF || true From d682f6b472d1046636d651a81b0aad9e4bb92bd5 Mon Sep 17 00:00:00 2001 From: Deniz Altunkapan Date: Thu, 26 Jun 2025 17:59:15 +0200 Subject: [PATCH 2/4] ci: hide .java extensions in generated DIRECTORY.md --- .github/workflows/update-directorymd.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update-directorymd.yml b/.github/workflows/update-directorymd.yml index a1fea5e978be..aada63feaf4f 100644 --- a/.github/workflows/update-directorymd.yml +++ b/.github/workflows/update-directorymd.yml @@ -2,7 +2,7 @@ name: Generate Directory Markdown on: push: - branches: [ master ] + branches: [master] workflow_dispatch: permissions: @@ -16,10 +16,11 @@ jobs: uses: actions/checkout@v4 - name: Run Directory Tree Generator - uses: DenizAltunkapan/directory-tree-generator@v1 + uses: DenizAltunkapan/directory-tree-generator@v1.1 with: path: src - extensions: . + extensions: .java + show-extensions: false - name: Commit and Push DIRECTORY.md run: | From 65fbb2eb19e4e526870aaaf0a97697a1764a984f Mon Sep 17 00:00:00 2001 From: Deniz Altunkapan Date: Thu, 26 Jun 2025 20:12:34 +0200 Subject: [PATCH 3/4] ci: hide .java extensions in generated DIRECTORY.md --- .github/workflows/update-directorymd.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-directorymd.yml b/.github/workflows/update-directorymd.yml index a1fea5e978be..c5c687d0a064 100644 --- a/.github/workflows/update-directorymd.yml +++ b/.github/workflows/update-directorymd.yml @@ -2,7 +2,7 @@ name: Generate Directory Markdown on: push: - branches: [ master ] + branches: [master] workflow_dispatch: permissions: @@ -16,10 +16,11 @@ jobs: uses: actions/checkout@v4 - name: Run Directory Tree Generator - uses: DenizAltunkapan/directory-tree-generator@v1 + uses: DenizAltunkapan/directory-tree-generator@v1.1 with: path: src extensions: . + show-extensions: false - name: Commit and Push DIRECTORY.md run: | From 18a5996df79a0d7d4ecb9555805a5b477af44053 Mon Sep 17 00:00:00 2001 From: Deniz Altunkapan <93663085+DenizAltunkapan@users.noreply.github.com> Date: Sat, 28 Jun 2025 11:49:28 +0200 Subject: [PATCH 4/4] Update update-directorymd.yml --- .github/workflows/update-directorymd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-directorymd.yml b/.github/workflows/update-directorymd.yml index 587552036edc..59b0565f1177 100644 --- a/.github/workflows/update-directorymd.yml +++ b/.github/workflows/update-directorymd.yml @@ -16,10 +16,10 @@ jobs: uses: actions/checkout@v4 - name: Run Directory Tree Generator - uses: DenizAltunkapan/directory-tree-generator@v1.1 + uses: DenizAltunkapan/directory-tree-generator@v2 with: path: src - extensions: . + extensions: .java show-extensions: false - name: Commit and Push DIRECTORY.md