Skip to content

Commit

Permalink
update ci + footer (#9)
Browse files Browse the repository at this point in the history
* update to new template

* Update README.md

* update ci

* Revert "update to new template"

This reverts commit 8a21c5c.

* update original template

* update authors

* Update FSDigitaltechnik-detailed-version-ws2012-13.tex

* fix footer in extended fs
  • Loading branch information
dariusptrs authored Jul 14, 2024
1 parent 2d7d4ab commit bff6dfb
Show file tree
Hide file tree
Showing 12 changed files with 321 additions and 28 deletions.
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/inhaltlicher_fehler.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
name: Inhaltlicher Fehler
description: Hilf uns Fehler zu Verbessern
title: ''
labels: [bug]
assignees: []

Expand Down
32 changes: 27 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,56 @@ name: CI

on:
push:
branches: [ master ]
branches: [ master, main ]
pull_request:
branches: [ master ]

branches: [ master, main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12.2'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r scripts/requirements.txt
- name: Run pytest
run: pytest

build:
runs-on: ubuntu-latest
container: makeappdev/uselatex:latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Configure Git safe directory with GITHUB_WORKSPACE
run: git config --global --add safe.directory $GITHUB_WORKSPACE

- name: Build
run: |
cmake --version; pdflatex --version
mkdir -p build && cd build
cmake ..
make
- name: Prepare Deployment
if: github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
run: |
mkdir -p export
echo "# This branch is for deployment only" >> export/README.md
cp build/*.pdf export
cp build/git.id export
- name: Deploy
if: github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
uses: JamesIves/[email protected]
with:
branch: gh-pages
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Update README and LaTeX Build File

on:
workflow_dispatch:

jobs:
update-and-create-pr:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12.2'

- name: Run update script
run: python scripts/update_files.py

- name: Configure Git
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Commit changes to a new branch
run: |
git checkout -b changes/${{ github.run_id }}
git add .
git commit -m "Apply automated updates"
git push -u origin changes/${{ github.run_id }}
- name: Create Pull Request
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr create --base main --head changes/${{ github.run_id }} --title "Specify project URLs and CMake project" --body "Please review the changes applied by the automated script."
73 changes: 63 additions & 10 deletions FSDigitaltechnik-detailed-version-ws2012-13.tex
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,69 @@
\definecolor{lightgray}{rgb}{0.8,0.8,0.8}
\definecolor{gray}{rgb}{0.9,0.9,0.9}

%Kopf- und Fußzeile
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

\fancyfoot[C]{von Emanuel Regnath ([email protected]), Martin Zellner ([email protected]) und Hendrik Böttcher ([email protected])}
\renewcommand{\headrulewidth}{0.0pt} %obere Linie ausblenden
\renewcommand{\footrulewidth}{0.1pt} %obere Linie ausblenden
\fancyfoot[R]{Stand: \todayV \ um \thistime \ Uhr \qquad \thepage}
\fancyfoot[L]{Homepage: www.latex4ei.de - Fehler bitte \emph{sofort} melden.}
% UPDATE WITHOUT CLASS CHANGE
% ----------------------------------------------------------------------

% LastPage
\usepackage{lastpage}

% Allow hyperlinks
\RequirePackage[pagebackref=true,pdfpagelabels]{hyperref}

% Colors
\RequirePackage{latex4ei/latex4ei_colors}
\colorlet{col_link}{tum_blue_dark}
\hypersetup{
colorlinks=true,
linkcolor=col_link,
urlcolor=col_link,
citecolor=col_link,
}

% set pdfoptions
\AtBeginDocument{
\hypersetup{
pdftitle={Digitaltechnik},
pdfauthor={Emanuel Regnath, Martin Zellner, Hendrik Böttcher},
pdfcreator={LaTeX4EI template (www.latex4ei.de)},
pdfkeywords={latex4ei}
}
}

% Date with git commit number
\newcommand{\themydate}{\today} % Default URL placeholder
\newcommand{\mydate}[1]{\renewcommand{\themydate}{#1}}

% Header and Footer
\RequirePackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{}

\AtBeginDocument{
\IfFileExists{git.id}{\input{git.id}}{}
\ifdefined\GitNiceDate\mydate{\GitNiceDate\ (git \GitRevision)}\fi
\ifdefined\GitIssuesURL
\ifdefined\setissueslinkurl
\setissueslinkurl{\GitIssuesURL} % Set the actual URL
\fi
\fi
}

% Define Email
\providecommand{\email}[1]{\href{mailto:#1}{\nolinkurl{#1}}}

%
\fancyfoot[C]{von Emanuel Regnath (\email{[email protected]}), Martin Zellner (\email{[email protected]}), Hendrik Böttcher (\email{[email protected]})}
\fancyfoot[R]{Stand: \themydate \qquad \thepage/\pageref{LastPage}}
\fancyfoot[L]{Homepage: \url{www.latex4ei.de} -- Fehler bitte \emph{sofort} \href{\issueslinkurl}{melden}.}

\renewcommand{\headrulewidth}{0.0pt} %obere Linie ausblenden
\renewcommand{\footrulewidth}{0.1pt} %obere Linie ausblenden

\newcommand{\issueslinkurl}{https://github.com/latex4ei/Allgemein/issues} % Default URL placeholder
\newcommand{\setissueslinkurl}[1]{\renewcommand{\issueslinkurl}{#1}}
% ----------------------------------------------------------------------

% Schriftart SANS für bessere Lesbarkeit bei kleiner Schrift
\renewcommand{\familydefault}{\sfdefault}
Expand Down
73 changes: 63 additions & 10 deletions FSDigitaltechnik.tex
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,69 @@
\definecolor{lightgray}{rgb}{0.8,0.8,0.8}
\definecolor{gray}{rgb}{0.9,0.9,0.9}

%Kopf- und Fußzeile
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

\fancyfoot[C]{Emanuel Regnath ([email protected]), Martin Zellner ([email protected]), Hendrik Böttcher ([email protected])}
\renewcommand{\headrulewidth}{0.0pt} %obere Linie ausblenden
\renewcommand{\footrulewidth}{0.1pt} %obere Linie ausblenden
\fancyfoot[R]{(Gekürzt, überarbeitet - [email protected]) Stand: \todayV \qquad \thepage}
\fancyfoot[L]{Homepage: www.latex4ei.de - Fehler bitte \emph{sofort} melden.}
% UPDATE WITHOUT CLASS CHANGE
% ----------------------------------------------------------------------

% LastPage
\usepackage{lastpage}

% Allow hyperlinks
\RequirePackage[pagebackref=true,pdfpagelabels]{hyperref}

% Colors
\RequirePackage{latex4ei/latex4ei_colors}
\colorlet{col_link}{tum_blue_dark}
\hypersetup{
colorlinks=true,
linkcolor=col_link,
urlcolor=col_link,
citecolor=col_link,
}

% set pdfoptions
\AtBeginDocument{
\hypersetup{
pdftitle={Digitaltechnik},
pdfauthor={Emanuel Regnath, Martin Zellner, Hendrik Böttcher},
pdfcreator={LaTeX4EI template (www.latex4ei.de)},
pdfkeywords={latex4ei}
}
}

% Date with git commit number
\newcommand{\themydate}{\today} % Default URL placeholder
\newcommand{\mydate}[1]{\renewcommand{\themydate}{#1}}

% Header and Footer
\RequirePackage{fancyhdr}

\pagestyle{fancy}
\fancyhf{}

\AtBeginDocument{
\IfFileExists{git.id}{\input{git.id}}{}
\ifdefined\GitNiceDate\mydate{\GitNiceDate\ (git \GitRevision)}\fi
\ifdefined\GitIssuesURL
\ifdefined\setissueslinkurl
\setissueslinkurl{\GitIssuesURL} % Set the actual URL
\fi
\fi
}

% Define Email
\providecommand{\email}[1]{\href{mailto:#1}{\nolinkurl{#1}}}

%
\fancyfoot[C]{von Emanuel Regnath (\email{[email protected]}), Martin Zellner (\email{[email protected]}), Hendrik Böttcher (\email{[email protected]}) }
\fancyfoot[R]{Stand: \themydate \qquad \thepage/\pageref{LastPage}}
\fancyfoot[L]{Homepage: \url{www.latex4ei.de} -- Fehler bitte \emph{sofort} \href{\issueslinkurl}{melden}.}

\renewcommand{\headrulewidth}{0.0pt} %obere Linie ausblenden
\renewcommand{\footrulewidth}{0.1pt} %obere Linie ausblenden

\newcommand{\issueslinkurl}{https://github.com/latex4ei/Allgemein/issues} % Default URL placeholder
\newcommand{\setissueslinkurl}[1]{\renewcommand{\issueslinkurl}{#1}}
% ----------------------------------------------------------------------

% Schriftart SANS für bessere Lesbarkeit bei kleiner Schrift
\renewcommand{\familydefault}{\sfdefault}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#
# Digitaltechnik

[![Actions Status](https://github.com/latex4ei/Digitaltechnik/workflows/CI/badge.svg)](https://github.com/latex4ei/Digitaltechnik)
[![Join the chat at https://gitter.im/LaTeX4Ei/Lobby](https://badges.gitter.im/LaTeX4Ei/Lobby.svg)](https://gitter.im/LaTeX4Ei/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Expand Down
Empty file added scripts/__init__.py
Empty file.
2 changes: 2 additions & 0 deletions scripts/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pyfakefs==5.3.5
pytest==8.1.1
Empty file added scripts/tests/__init__.py
Empty file.
75 changes: 75 additions & 0 deletions scripts/tests/test_update_files.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import pytest
from scripts.update_files import check_tex_file_exists, update_readme_content, update_cmake_content
from pathlib import Path
import os

@pytest.fixture
def fake_base_path(fs):
"""Fixture to create a base path and mock environment variable."""
base_path = Path("/test/project")
fs.create_dir(base_path)
os.environ['GITHUB_REPOSITORY'] = 'user/correct_title'
return base_path

def test_check_tex_file_exists__file_does_not_exist__should_raise(fake_base_path, fs):
repo_name = "correct_title"
fs.create_file(fake_base_path / f"{repo_name}.tex")
check_tex_file_exists(repo_name, fake_base_path)

with pytest.raises(FileNotFoundError):
check_tex_file_exists("nonexistent_repo", Path(fake_base_path))

def test_update_readme_content(fake_base_path, fs):
initial_readme_content = """
# WrongTitle
Some content in the README file.
[![Actions Status](https://github.com/latex4ei/WrongCheatsheetTemplate/workflows/CI/badge.svg)](https://github.com/latex4ei/WrongCheatsheetTemplate)
## Section
More details here.
""".strip()
fs.create_file(fake_base_path / "README.md", contents=initial_readme_content)
repo_name = "correct_title"
github_repository = 'user/correct_title'

updated_content = update_readme_content(initial_readme_content, repo_name, github_repository)

expected_content = """
# correct_title
Some content in the README file.
[![Actions Status](https://github.com/user/correct_title/workflows/CI/badge.svg)](https://github.com/user/correct_title)
## Section
More details here.
""".strip()
assert updated_content == expected_content, "README.md content was not updated correctly."

def test_update_cmake_content(fake_base_path, fs):
initial_cmake_content = """
cmake_minimum_required(VERSION 3.12)
project(WrongProjectName NONE)
# Add the main LaTeX document
add_latex_document(
CheatsheetTemplate.tex
AnotherDoc.tex
FORCE_PDF
IMAGE_DIRS img
DEPENDS writegitid
)
""".strip()
fs.create_file(fake_base_path / "CMakeLists.txt", contents=initial_cmake_content)
repo_name = "correct_title"

updated_content = update_cmake_content(initial_cmake_content, repo_name)

expected_content = """
cmake_minimum_required(VERSION 3.12)
project(correct_title NONE)
# Add the main LaTeX document
add_latex_document(
correct_title.tex
AnotherDoc.tex
FORCE_PDF
IMAGE_DIRS img
DEPENDS writegitid
)
""".strip()
assert updated_content == expected_content, "CMakeLists.txt content was not updated correctly."
42 changes: 42 additions & 0 deletions scripts/update_files.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from pathlib import Path
import re
import os
import sys

def check_tex_file_exists(repo_name: str, base_path: Path):
"""Check if a .tex file with the same name as the repository exists."""
tex_file_path = base_path / f"{repo_name}.tex"
if not tex_file_path.exists():
msg = f"No .tex file found with the name {tex_file_path.name}. File name must match repo name."
raise FileNotFoundError(msg)

def update_readme_content(content: str, repo_name: str, github_repository: str) -> str:
"""Updates the README.md content."""
content = re.sub(r'^# .+', f'# {repo_name}', content, count=1, flags=re.MULTILINE)
actions_status_line = f'[![Actions Status](https://github.com/{github_repository}/workflows/CI/badge.svg)](https://github.com/{github_repository})'
return re.sub(r'\[!\[Actions Status\].*', actions_status_line, content)

def update_cmake_content(content: str, repo_name: str) -> str:
"""Updates the CMakeLists.txt content."""
content = re.sub(r'project\(([^ ]*)', f'project({repo_name}', content, count=1)
return re.sub(r'^( *)[^\s#].*?\.tex', r'\1' + f'{repo_name}.tex', content, flags=re.MULTILINE, count=1)

def main(github_repository: str):
repo_name = Path(github_repository).name
base_path = Path(__file__).parent.parent

check_tex_file_exists(repo_name, base_path)

readme_path = base_path / 'README.md'
cmake_path = base_path / 'CMakeLists.txt'

readme_content = readme_path.read_text()
updated_readme_content = update_readme_content(readme_content, repo_name, github_repository)
readme_path.write_text(updated_readme_content)

cmake_content = cmake_path.read_text()
updated_cmake_content = update_cmake_content(cmake_content, repo_name)
cmake_path.write_text(updated_cmake_content)

if __name__ == "__main__":
main(os.getenv('GITHUB_REPOSITORY'))
Loading

0 comments on commit bff6dfb

Please sign in to comment.