mirror of https://github.com/eyhc1/rendercv.git
use Hatch as the project manager (#92)
This commit is contained in:
parent
4066f9e4b9
commit
c76c7207eb
|
@ -31,5 +31,5 @@ jobs:
|
||||||
|
|
||||||
- name: Deploy documentation
|
- name: Deploy documentation
|
||||||
run: |
|
run: |
|
||||||
pip install .[docs]
|
pip install hatch
|
||||||
mkdocs gh-deploy --force
|
hatch run docs:deploy
|
||||||
|
|
|
@ -36,8 +36,8 @@ jobs:
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
pip install -U build
|
pip install hatch
|
||||||
python -m build
|
hatch build
|
||||||
|
|
||||||
- name: Upload package to PyPI
|
- name: Upload package to PyPI
|
||||||
uses: pypa/gh-action-pypi-publish@release/v1
|
uses: pypa/gh-action-pypi-publish@release/v1
|
||||||
|
|
|
@ -27,8 +27,8 @@ jobs:
|
||||||
|
|
||||||
- name: Lint with Ruff
|
- name: Lint with Ruff
|
||||||
run: |
|
run: |
|
||||||
pip install .[dev]
|
pip install hatch
|
||||||
ruff --output-format=github .
|
hatch run lint
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
test:
|
test:
|
||||||
|
@ -51,13 +51,10 @@ jobs:
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Test
|
||||||
run: |
|
run: |
|
||||||
pip install .[tests]
|
pip install hatch
|
||||||
|
hatch run test:run-with-coverage
|
||||||
- name: Test with pytest
|
|
||||||
run: |
|
|
||||||
coverage run -m pytest tests/
|
|
||||||
mv .coverage .coverage.${{ matrix.python-version }}.${{ matrix.os }}
|
mv .coverage .coverage.${{ matrix.python-version }}.${{ matrix.os }}
|
||||||
|
|
||||||
- name: Store coverage files
|
- name: Store coverage files
|
||||||
|
@ -89,10 +86,10 @@ jobs:
|
||||||
|
|
||||||
- name: Combine coverage files
|
- name: Combine coverage files
|
||||||
run: |
|
run: |
|
||||||
pip install .[tests]
|
pip install hatch
|
||||||
coverage combine coverage
|
hatch run test:coverage combine coverage
|
||||||
coverage report
|
hatch run test:coverage report
|
||||||
coverage html --show-contexts --title "RenderCV coverage for ${{ github.sha }}"
|
hatch run test:coverage html --show-contexts --title "RenderCV coverage for ${{ github.sha }}"
|
||||||
|
|
||||||
- name: Upload the coverage report to smokeshow
|
- name: Upload the coverage report to smokeshow
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -7,37 +7,45 @@ The source code is thoroughly documented and well-commented, making it an enjoya
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
1. Ensure that you have Python version 3.10 or higher.
|
1. Ensure that you have Python version 3.10 or higher.
|
||||||
|
2. Install [Hatch](https://hatch.pypa.io/latest/), as it is the project manager for RenderCV. The installation guide for Hatch can be found [here](https://hatch.pypa.io/latest/install/#installation).
|
||||||
2. Then, clone the repository recursively (because TinyTeX is being used as a submodule) with the following command.
|
3. Clone the repository recursively (because TinyTeX is being used as a submodule) with the following command.
|
||||||
```bash
|
```bash
|
||||||
git clone --recursive https://github.com/sinaatalay/rendercv.git
|
git clone --recursive https://github.com/sinaatalay/rendercv.git
|
||||||
```
|
```
|
||||||
|
4. Go to the `rendercv` directory.
|
||||||
3. Go to the `rendercv` directory.
|
|
||||||
```bash
|
```bash
|
||||||
cd rendercv
|
cd rendercv
|
||||||
```
|
```
|
||||||
|
5. RenderCV uses three virtual environments:
|
||||||
|
- `default`: For the development. It contains packages like [Ruff](https://github.com/astral-sh/ruff), [Black](https://github.com/psf/black), etc.
|
||||||
|
- `docs`: For building the documentation.
|
||||||
|
- `test`: For testing RenderCV.
|
||||||
|
|
||||||
4. Create a virtual environment.
|
|
||||||
```bash
|
```bash
|
||||||
python -m venv .venv
|
hatch env create default
|
||||||
|
hatch env create docs
|
||||||
|
hatch env create test
|
||||||
```
|
```
|
||||||
|
6. To use the virtual environments, either
|
||||||
|
|
||||||
5. Activate the virtual environment.
|
- Activate one of the virtual environments with the following command.
|
||||||
|
|
||||||
=== "Windows (PowerShell)"
|
|
||||||
```powershell
|
|
||||||
.venv\Scripts\Activate.ps1
|
|
||||||
```
|
|
||||||
=== "MacOS/Linux"
|
|
||||||
```bash
|
```bash
|
||||||
source .venv/bin/activate
|
hatch shell default
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Install the dependencies.
|
- Select one of the virtual environments in your Integrated Development Environment (IDE).
|
||||||
```bash
|
|
||||||
pip install --editable ".[docs,tests,dev]"
|
=== "Visual Studio Code"
|
||||||
```
|
|
||||||
|
- Press `Ctrl+Shift+P`.
|
||||||
|
- Type `Python: Select Interpreter`.
|
||||||
|
- Select one of the virtual environments created by Hatch.
|
||||||
|
|
||||||
|
=== "Other"
|
||||||
|
|
||||||
|
To be added.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## How RenderCV works?
|
## How RenderCV works?
|
||||||
|
|
||||||
|
@ -56,6 +64,51 @@ flowchart TD
|
||||||
AA[(Jinja2 Templates)] --> E
|
AA[(Jinja2 Templates)] --> E
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Available Commands
|
||||||
|
|
||||||
|
These commands are defined in the [`pyproject.toml`](https://github.com/sinaatalay/rendercv/blob/main/pyproject.toml) file.
|
||||||
|
|
||||||
|
- Format the code with [Black](https://github.com/psf/black):
|
||||||
|
```bash
|
||||||
|
hatch run format
|
||||||
|
```
|
||||||
|
- Lint the code with [Ruff](https://github.com/astral-sh/ruff):
|
||||||
|
```bash
|
||||||
|
hatch run lint
|
||||||
|
```
|
||||||
|
- Run the tests:
|
||||||
|
```bash
|
||||||
|
hatch run test:run
|
||||||
|
```
|
||||||
|
- Run the tests and generate a coverage report:
|
||||||
|
```bash
|
||||||
|
hatch run test:run-and-report
|
||||||
|
```
|
||||||
|
- Start the development server for the documentation:
|
||||||
|
```bash
|
||||||
|
hatch run docs:serve
|
||||||
|
```
|
||||||
|
- Build the documentation:
|
||||||
|
```bash
|
||||||
|
hatch run docs:build
|
||||||
|
```
|
||||||
|
- Deploy the documentation to GitHub Pages:
|
||||||
|
```bash
|
||||||
|
hatch run docs:deploy
|
||||||
|
```
|
||||||
|
- Update [schema.json](https://github.com/sinaatalay/rendercv/blob/main/schema.json):
|
||||||
|
```bash
|
||||||
|
hatch run docs:update-schema
|
||||||
|
```
|
||||||
|
- Update [`examples`](https://github.com/sinaatalay/rendercv/tree/main/examples) folder:
|
||||||
|
```bash
|
||||||
|
hatch run docs:update-examples
|
||||||
|
```
|
||||||
|
- Update figures of the entry types in the "[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)":
|
||||||
|
```bash
|
||||||
|
hatch run docs:update-entry-figures
|
||||||
|
```
|
||||||
|
|
||||||
## About [`pyproject.toml`](https://github.com/sinaatalay/rendercv/blob/main/pyproject.toml)
|
## About [`pyproject.toml`](https://github.com/sinaatalay/rendercv/blob/main/pyproject.toml)
|
||||||
|
|
||||||
[`pyproject.toml`](https://github.com/sinaatalay/rendercv/blob/main/pyproject.toml) contains all the metadata, dependencies, and tools required for the project. Please read through the file to understand the project's technical details.
|
[`pyproject.toml`](https://github.com/sinaatalay/rendercv/blob/main/pyproject.toml) contains all the metadata, dependencies, and tools required for the project. Please read through the file to understand the project's technical details.
|
|
@ -3,12 +3,20 @@
|
||||||
After updating the code, ensure that all tests pass. To run the tests, use the following command.
|
After updating the code, ensure that all tests pass. To run the tests, use the following command.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pytest
|
hatch run test:run
|
||||||
|
```
|
||||||
|
|
||||||
|
If you would like to run the tests in your IDE, use the `test` virtual environment.
|
||||||
|
|
||||||
|
To generate a coverage report with the tests, run the following command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hatch run test:run-and-report
|
||||||
```
|
```
|
||||||
|
|
||||||
Once new commits are pushed to the `main` branch, the [`test.yaml`](https://github.com/sinaatalay/rendercv/blob/main/.github/workflows/test.yaml) workflow will be automatically triggered, and the tests will run.
|
Once new commits are pushed to the `main` branch, the [`test.yaml`](https://github.com/sinaatalay/rendercv/blob/main/.github/workflows/test.yaml) workflow will be automatically triggered, and the tests will run.
|
||||||
|
|
||||||
## [`testdata`](https://github.com/sinaatalay/rendercv/tree/main/tests/testdata) folder
|
## About [`testdata`](https://github.com/sinaatalay/rendercv/tree/main/tests/testdata) folder
|
||||||
|
|
||||||
In some of the tests:
|
In some of the tests:
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
The documentation's source files are located in the [`docs`](https://github.com/sinaatalay/rendercv/tree/main/docs) directory and it is built using the [MkDocs](https://github.com/mkdocs/mkdocs) package. To work on the documentation and see the changes in real-time, run the following command.
|
The documentation's source files are located in the [`docs`](https://github.com/sinaatalay/rendercv/tree/main/docs) directory and it is built using the [MkDocs](https://github.com/mkdocs/mkdocs) package. To work on the documentation and see the changes in real-time, run the following command.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdocs serve
|
hatch run docs:serve
|
||||||
```
|
```
|
||||||
|
|
||||||
Once the changes are pushed to the `main` branch, the [`deploy-docs`](https://github.com/sinaatalay/rendercv/blob/main/.github/workflows/deploy-docs.yaml) workflow will be automatically triggered, and [docs.rendercv.com](https://docs.rendercv.com/) will be updated to the most recent version.
|
Once the changes are pushed to the `main` branch, the [`deploy-docs`](https://github.com/sinaatalay/rendercv/blob/main/.github/workflows/deploy-docs.yaml) workflow will be automatically triggered, and [docs.rendercv.com](https://docs.rendercv.com/) will be updated to the most recent version.
|
||||||
|
@ -12,34 +12,34 @@ Once the changes are pushed to the `main` branch, the [`deploy-docs`](https://gi
|
||||||
|
|
||||||
The `examples` folder includes example YAML files for all the built-in themes, along with their corresponding PDF outputs. Also, there are PNG files of the first pages of each theme in [`docs/assets/images`](https://github.com/sinaatalay/rendercv/tree/main/docs/assets/images). These examples are shown in [`README.md`](https://github.com/sinaatalay/rendercv/blob/main/README.md).
|
The `examples` folder includes example YAML files for all the built-in themes, along with their corresponding PDF outputs. Also, there are PNG files of the first pages of each theme in [`docs/assets/images`](https://github.com/sinaatalay/rendercv/tree/main/docs/assets/images). These examples are shown in [`README.md`](https://github.com/sinaatalay/rendercv/blob/main/README.md).
|
||||||
|
|
||||||
These files are generated using [`docs/update_rendercv_files.py`](https://github.com/sinaatalay/rendercv/blob/main/docs/update_rendercv_files.py). The contents of the examples are taken from the [`get_a_sample_data_model`](https://docs.rendercv.com/reference/data_models/#rendercv.data_models.get_a_sample_data_model) function from [`data_models.py`](https://docs.rendercv.com/reference/data_models/).
|
These files are generated using [`docs/update_examples.py`](https://github.com/sinaatalay/rendercv/blob/main/docs/update_examples.py). The contents of the examples are taken from the [`get_a_sample_data_model`](https://docs.rendercv.com/reference/data_models/#rendercv.data_models.get_a_sample_data_model) function from [`data_models.py`](https://docs.rendercv.com/reference/data_models/).
|
||||||
|
|
||||||
Run the following command to update the `examples` folder.
|
Run the following command to update the `examples` folder.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python docs/update_rendercv_files.py
|
hatch run docs:update-examples
|
||||||
```
|
```
|
||||||
|
|
||||||
## Updating figures of the entry types in the "[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)"
|
## Updating figures of the entry types in the "[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)"
|
||||||
|
|
||||||
There are example figures for each entry type for each theme in the "[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)" page.
|
There are example figures for each entry type for each theme in the "[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)" page.
|
||||||
|
|
||||||
The figures are generated using [`docs/update_rendercv_files.py`](https://github.com/sinaatalay/rendercv/blob/main/docs/update_rendercv_files.py).
|
The figures are generated using [`docs/update_entry_figures.py`](https://github.com/sinaatalay/rendercv/blob/main/docs/update_entry_figures.py).
|
||||||
|
|
||||||
Run the following command to update the figures.
|
Run the following command to update the figures.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python docs/update_rendercv_files.py
|
hatch run docs:update-entry-figures
|
||||||
```
|
```
|
||||||
|
|
||||||
## Updating the [JSON Schema](https://github.com/sinaatalay/rendercv/blob/main/schema.json)
|
## Updating the [JSON Schema](https://github.com/sinaatalay/rendercv/blob/main/schema.json)
|
||||||
|
|
||||||
The schema of RenderCV's input file is defined using [Pydantic](https://docs.pydantic.dev/latest/). Pydantic allows automatic creation and customization of JSON schemas from Pydantic models.
|
The schema of RenderCV's input file is defined using [Pydantic](https://docs.pydantic.dev/latest/). Pydantic allows automatic creation and customization of JSON schemas from Pydantic models.
|
||||||
|
|
||||||
The JSON Schema is also generated using [`docs/update_rendercv_files.py`](https://github.com/sinaatalay/rendercv/blob/main/docs/update_rendercv_files.py). It uses [`generate_json_schema`](https://docs.rendercv.com/reference/data_models/#rendercv.data_models.generate_json_schema) function from [`data_models.py`](https://docs.rendercv.com/reference/data_models/).
|
The JSON Schema is also generated using [`docs/update_schema.py`](https://github.com/sinaatalay/rendercv/blob/main/docs/update_schema.py). It uses [`generate_json_schema`](https://docs.rendercv.com/reference/data_models/#rendercv.data_models.generate_json_schema) function from [`data_models.py`](https://docs.rendercv.com/reference/data_models/).
|
||||||
|
|
||||||
Run the following command to update the JSON Schema.
|
Run the following command to update the JSON Schema.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python docs/update_rendercv_files.py
|
hatch run docs:update-schema
|
||||||
```
|
```
|
|
@ -1,14 +1,19 @@
|
||||||
|
"""This script generates the example entry figures and creates an environment for
|
||||||
|
documentation templates using `mkdocs-macros-plugin`. For example, the content of the
|
||||||
|
example entries found in
|
||||||
|
"[Structure of the YAML Input File](https://docs.rendercv.com/user_guide/structure_of_the_yaml_input_file/)"
|
||||||
|
are coming from this script.
|
||||||
|
"""
|
||||||
|
|
||||||
import tempfile
|
import tempfile
|
||||||
import pathlib
|
import pathlib
|
||||||
import io
|
import io
|
||||||
import os
|
|
||||||
import shutil
|
import shutil
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import pdfCropMargins
|
|
||||||
import ruamel.yaml
|
import ruamel.yaml
|
||||||
|
import pdfCropMargins
|
||||||
|
|
||||||
import rendercv.cli as cli
|
|
||||||
import rendercv.data_models as dm
|
import rendercv.data_models as dm
|
||||||
import rendercv.renderer as r
|
import rendercv.renderer as r
|
||||||
|
|
||||||
|
@ -237,77 +242,6 @@ def generate_entry_figures():
|
||||||
output_pdf_file_path.unlink()
|
output_pdf_file_path.unlink()
|
||||||
|
|
||||||
|
|
||||||
def generate_examples():
|
|
||||||
"""Generate example YAML and PDF files."""
|
|
||||||
examples_directory_path = pathlib.Path(__file__).parent.parent / "examples"
|
|
||||||
|
|
||||||
# check if the examples directory exists, if not create it
|
|
||||||
if not examples_directory_path.exists():
|
|
||||||
examples_directory_path.mkdir()
|
|
||||||
|
|
||||||
os.chdir(examples_directory_path)
|
|
||||||
themes = dm.available_themes
|
|
||||||
for theme in themes:
|
|
||||||
cli.cli_command_new(
|
|
||||||
"John Doe",
|
|
||||||
theme,
|
|
||||||
dont_create_theme_source_files=True,
|
|
||||||
dont_create_markdown_source_files=True,
|
|
||||||
)
|
|
||||||
yaml_file_path = examples_directory_path / "John_Doe_CV.yaml"
|
|
||||||
|
|
||||||
# Rename John_Doe_CV.yaml:
|
|
||||||
proper_theme_name = theme.capitalize() + "Theme"
|
|
||||||
new_yaml_file_path = (
|
|
||||||
examples_directory_path / f"John_Doe_{proper_theme_name}_CV.yaml"
|
|
||||||
)
|
|
||||||
if new_yaml_file_path.exists():
|
|
||||||
new_yaml_file_path.unlink()
|
|
||||||
yaml_file_path.rename(new_yaml_file_path)
|
|
||||||
yaml_file_path = new_yaml_file_path
|
|
||||||
|
|
||||||
# Generate the PDF file:
|
|
||||||
cli.cli_command_render(yaml_file_path)
|
|
||||||
|
|
||||||
output_pdf_file = (
|
|
||||||
examples_directory_path / "rendercv_output" / "John_Doe_CV.pdf"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Move pdf file to the examples directory:
|
|
||||||
new_pdf_file_path = examples_directory_path / f"{yaml_file_path.stem}.pdf"
|
|
||||||
if new_pdf_file_path.exists():
|
|
||||||
new_pdf_file_path.unlink()
|
|
||||||
output_pdf_file.rename(new_pdf_file_path)
|
|
||||||
|
|
||||||
# Remove the rendercv_output directory:
|
|
||||||
rendercv_output_directory = examples_directory_path / "rendercv_output"
|
|
||||||
|
|
||||||
shutil.rmtree(rendercv_output_directory)
|
|
||||||
|
|
||||||
# convert first page of the pdf to an image:
|
|
||||||
png_file_paths = r.pdf_to_pngs(new_pdf_file_path)
|
|
||||||
firt_page_png_file_path = png_file_paths[0]
|
|
||||||
if len(png_file_paths) > 1:
|
|
||||||
# remove the other pages
|
|
||||||
for png_file_path in png_file_paths[1:]:
|
|
||||||
png_file_path.unlink()
|
|
||||||
|
|
||||||
desired_png_file_path = image_assets_directory / f"{theme}.png"
|
|
||||||
|
|
||||||
# If the image exists, remove it
|
|
||||||
if desired_png_file_path.exists():
|
|
||||||
desired_png_file_path.unlink()
|
|
||||||
|
|
||||||
# Move the image to the desired location
|
|
||||||
firt_page_png_file_path.rename(desired_png_file_path)
|
|
||||||
|
|
||||||
|
|
||||||
def generate_schema():
|
|
||||||
"""Generate the schema."""
|
|
||||||
json_schema_file_path = repository_root / "schema.json"
|
|
||||||
dm.generate_json_schema_file(json_schema_file_path)
|
|
||||||
|
|
||||||
|
|
||||||
def update_index():
|
def update_index():
|
||||||
"""Update the index.md file by copying the README.md file."""
|
"""Update the index.md file by copying the README.md file."""
|
||||||
index_file_path = repository_root / "docs" / "index.md"
|
index_file_path = repository_root / "docs" / "index.md"
|
||||||
|
@ -317,6 +251,4 @@ def update_index():
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
generate_entry_figures()
|
generate_entry_figures()
|
||||||
generate_examples()
|
print("Entry figures generated successfully.")
|
||||||
generate_schema()
|
|
||||||
# update_index() # currently index.md should be updated manually
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
"""This script generates the `examples` folder in the repository root."""
|
||||||
|
|
||||||
|
import pathlib
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
import rendercv.cli as cli
|
||||||
|
import rendercv.data_models as dm
|
||||||
|
import rendercv.renderer as r
|
||||||
|
|
||||||
|
repository_root = pathlib.Path(__file__).parent.parent
|
||||||
|
rendercv_path = repository_root / "rendercv"
|
||||||
|
image_assets_directory = pathlib.Path(__file__).parent / "assets" / "images"
|
||||||
|
|
||||||
|
|
||||||
|
def generate_examples():
|
||||||
|
"""Generate example YAML and PDF files."""
|
||||||
|
examples_directory_path = pathlib.Path(__file__).parent.parent / "examples"
|
||||||
|
|
||||||
|
# check if the examples directory exists, if not create it
|
||||||
|
if not examples_directory_path.exists():
|
||||||
|
examples_directory_path.mkdir()
|
||||||
|
|
||||||
|
os.chdir(examples_directory_path)
|
||||||
|
themes = dm.available_themes
|
||||||
|
for theme in themes:
|
||||||
|
cli.cli_command_new(
|
||||||
|
"John Doe",
|
||||||
|
theme,
|
||||||
|
dont_create_theme_source_files=True,
|
||||||
|
dont_create_markdown_source_files=True,
|
||||||
|
)
|
||||||
|
yaml_file_path = examples_directory_path / "John_Doe_CV.yaml"
|
||||||
|
|
||||||
|
# Rename John_Doe_CV.yaml:
|
||||||
|
proper_theme_name = theme.capitalize() + "Theme"
|
||||||
|
new_yaml_file_path = (
|
||||||
|
examples_directory_path / f"John_Doe_{proper_theme_name}_CV.yaml"
|
||||||
|
)
|
||||||
|
if new_yaml_file_path.exists():
|
||||||
|
new_yaml_file_path.unlink()
|
||||||
|
yaml_file_path.rename(new_yaml_file_path)
|
||||||
|
yaml_file_path = new_yaml_file_path
|
||||||
|
|
||||||
|
# Generate the PDF file:
|
||||||
|
cli.cli_command_render(yaml_file_path)
|
||||||
|
|
||||||
|
output_pdf_file = (
|
||||||
|
examples_directory_path / "rendercv_output" / "John_Doe_CV.pdf"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Move pdf file to the examples directory:
|
||||||
|
new_pdf_file_path = examples_directory_path / f"{yaml_file_path.stem}.pdf"
|
||||||
|
if new_pdf_file_path.exists():
|
||||||
|
new_pdf_file_path.unlink()
|
||||||
|
output_pdf_file.rename(new_pdf_file_path)
|
||||||
|
|
||||||
|
# Remove the rendercv_output directory:
|
||||||
|
rendercv_output_directory = examples_directory_path / "rendercv_output"
|
||||||
|
|
||||||
|
shutil.rmtree(rendercv_output_directory)
|
||||||
|
|
||||||
|
# convert first page of the pdf to an image:
|
||||||
|
png_file_paths = r.pdf_to_pngs(new_pdf_file_path)
|
||||||
|
firt_page_png_file_path = png_file_paths[0]
|
||||||
|
if len(png_file_paths) > 1:
|
||||||
|
# remove the other pages
|
||||||
|
for png_file_path in png_file_paths[1:]:
|
||||||
|
png_file_path.unlink()
|
||||||
|
|
||||||
|
desired_png_file_path = image_assets_directory / f"{theme}.png"
|
||||||
|
|
||||||
|
# If the image exists, remove it
|
||||||
|
if desired_png_file_path.exists():
|
||||||
|
desired_png_file_path.unlink()
|
||||||
|
|
||||||
|
# Move the image to the desired location
|
||||||
|
firt_page_png_file_path.rename(desired_png_file_path)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
generate_examples()
|
||||||
|
print("Examples generated successfully.")
|
|
@ -0,0 +1,18 @@
|
||||||
|
"""This script generates the JSON schema (schema.json) in the repository root."""
|
||||||
|
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
import rendercv.data_models as dm
|
||||||
|
|
||||||
|
repository_root = pathlib.Path(__file__).parent.parent
|
||||||
|
|
||||||
|
|
||||||
|
def generate_schema():
|
||||||
|
"""Generate the schema."""
|
||||||
|
json_schema_file_path = repository_root / "schema.json"
|
||||||
|
dm.generate_json_schema_file(json_schema_file_path)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
generate_schema()
|
||||||
|
print("Schema generated successfully.")
|
|
@ -95,7 +95,7 @@ markdown_extensions:
|
||||||
plugins:
|
plugins:
|
||||||
- search
|
- search
|
||||||
- macros: # mkdocs-macros-plugin
|
- macros: # mkdocs-macros-plugin
|
||||||
module_name: docs/update_rendercv_files
|
module_name: docs/update_entry_figures
|
||||||
- mkdocstrings:
|
- mkdocstrings:
|
||||||
handlers:
|
handlers:
|
||||||
python:
|
python:
|
||||||
|
|
159
pyproject.toml
159
pyproject.toml
|
@ -9,14 +9,20 @@
|
||||||
# called building.
|
# called building.
|
||||||
|
|
||||||
# Python packages need to be built too, even though they are not compiled (mostly). At
|
# Python packages need to be built too, even though they are not compiled (mostly). At
|
||||||
# the end of the building process, a source Distribution Package, `sdist`, is created.
|
# the end of the building process, a source distribution package (sdist) and a built
|
||||||
# This sdist is a compressed archive of the source code, and it is ready to be uploaded
|
# distribution package (in Wheel format) are created.
|
||||||
# to PyPI. See https://packaging.python.org/en/latest/tutorials/packaging-projects/
|
# See https://packaging.python.org/en/latest/tutorials/packaging-projects/ for details.
|
||||||
|
# Built Distribution:
|
||||||
|
# https://packaging.python.org/en/latest/glossary/#term-Built-Distribution
|
||||||
|
# Source Distribution:
|
||||||
|
# https://packaging.python.org/en/latest/glossary/#term-Source-Distribution-or-sdist
|
||||||
|
|
||||||
# To build RenderCV, we need to specify which build package we want to use. There are
|
# To build RenderCV, we need to specify which build package we want to use. There are
|
||||||
# many build packages like `setuptools`, `flit`, `poetry`, `hatchling`, etc. We will use
|
# many build packages like `setuptools`, `flit`, `poetry`, `hatchling`, etc. We will use
|
||||||
# `hatchling`.
|
# `hatchling`.
|
||||||
requires = ["hatchling==1.21.1"] # Our dependency to build RenderCV
|
requires = [
|
||||||
|
"hatchling==1.21.1",
|
||||||
|
] # List of packages that are needed to build RenderCV
|
||||||
|
|
||||||
# Python has a standard object format called build-backend object. Python standard asks
|
# Python has a standard object format called build-backend object. Python standard asks
|
||||||
# this object to have some specific methods that do a specific job. For example, it
|
# this object to have some specific methods that do a specific job. For example, it
|
||||||
|
@ -25,34 +31,42 @@ requires = ["hatchling==1.21.1"] # Our dependency to build RenderCV
|
||||||
# See https://peps.python.org/pep-0517/
|
# See https://peps.python.org/pep-0517/
|
||||||
build-backend = "hatchling.build" # A build-backend object for building RenderCV
|
build-backend = "hatchling.build" # A build-backend object for building RenderCV
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.sdist]
|
||||||
|
# In the sdist, what do we want to exclude?
|
||||||
|
exclude = [
|
||||||
|
"rendercv/tinytex-release/download_and_minimize_tinytex_for_rendercv.py",
|
||||||
|
"rendercv/tinytex-release/.gitignore",
|
||||||
|
"rendercv/tinytex-release/.git",
|
||||||
|
".github/",
|
||||||
|
".devcontainer/",
|
||||||
|
# GIF files are too big:
|
||||||
|
"*.gif",
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel]
|
||||||
|
# In wheel, what do we want to include and exclude?
|
||||||
|
packages = ["rendercv"]
|
||||||
|
exclude = [
|
||||||
|
"rendercv/tinytex-release/download_and_minimize_tinytex_for_rendercv.py",
|
||||||
|
"rendercv/tinytex-release/.gitignore",
|
||||||
|
"rendercv/tinytex-release/.git",
|
||||||
|
"rendercv/tinytex-release/README.md",
|
||||||
|
]
|
||||||
|
|
||||||
[tool.hatch.version]
|
[tool.hatch.version]
|
||||||
# We will use hatchling to generate the version number of RenderCV. It will go to the
|
# We will use hatchling to generate the version number of RenderCV. It will go to the
|
||||||
# `path` below and get the version number from there.
|
# `path` below and get the version number from there.
|
||||||
# See https://hatch.pypa.io/latest/version/
|
# See https://hatch.pypa.io/latest/version/
|
||||||
path = "rendercv/__init__.py"
|
path = "rendercv/__init__.py"
|
||||||
|
|
||||||
[tool.hatch.build]
|
|
||||||
# In the sdist package, what do we want to include and exclude? For example, we don't
|
|
||||||
# want to include `docs` and `tests` because they are not needed to run RenderCV.
|
|
||||||
include = ["/README.md", "/rendercv"]
|
|
||||||
|
|
||||||
# We use tinytex-release as a git submodule, so it's a seperate repository. We don't
|
|
||||||
# want to ship all the files from that repository with RenderCV.
|
|
||||||
exclude = [
|
|
||||||
"/rendercv/tinytex-release/download_and_minimize_tinytex_for_rendercv.py",
|
|
||||||
"/rendercv/tinytex-release/.gitignore",
|
|
||||||
]
|
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
# Under the `project` section, we specify the metadata about RenderCV.
|
# Under the `project` section, we specify the metadata about RenderCV.
|
||||||
name = 'rendercv'
|
name = 'rendercv'
|
||||||
description = 'A LaTeX CV/resume framework'
|
description = 'A LaTeX CV/resume framework'
|
||||||
dynamic = [
|
|
||||||
"version",
|
|
||||||
] # We will use hatchling to generate the version number
|
|
||||||
authors = [{ name = 'Sina Atalay', email = 'dev@atalay.biz' }]
|
authors = [{ name = 'Sina Atalay', email = 'dev@atalay.biz' }]
|
||||||
requires-python = '>=3.10'
|
license = "MIT"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
requires-python = '>=3.10'
|
||||||
# RenderCV depends on these packages. They will be installed automatically when RenderCV
|
# RenderCV depends on these packages. They will be installed automatically when RenderCV
|
||||||
# is installed:
|
# is installed:
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
@ -78,12 +92,16 @@ classifiers = [
|
||||||
"License :: OSI Approved :: MIT License",
|
"License :: OSI Approved :: MIT License",
|
||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
] # go to https://pypi.org/classifiers/ to see all classifiers
|
] # go to https://pypi.org/classifiers/ to see all classifiers
|
||||||
|
dynamic = [
|
||||||
|
"version",
|
||||||
|
] # We will use hatchling to generate the version number
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
# Here, we can specify the URLs related to RenderCV. They will be listed under the
|
# Here, we can specify the URLs related to RenderCV. They will be listed under the
|
||||||
# "Project links" section in PyPI. See https://pypi.org/project/rendercv/
|
# "Project links" section in PyPI. See https://pypi.org/project/rendercv/
|
||||||
Documentation = 'https://docs.rendercv.com'
|
|
||||||
Source = 'https://github.com/sinaatalay/rendercv'
|
Source = 'https://github.com/sinaatalay/rendercv'
|
||||||
|
Documentation = 'https://docs.rendercv.com'
|
||||||
|
Changelog = 'https://docs.rendercv.com/changelog'
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
# Here, we specify the entry points of RenderCV.
|
# Here, we specify the entry points of RenderCV.
|
||||||
|
@ -91,34 +109,88 @@ Source = 'https://github.com/sinaatalay/rendercv'
|
||||||
# See https://hatch.pypa.io/latest/config/metadata/#cli
|
# See https://hatch.pypa.io/latest/config/metadata/#cli
|
||||||
|
|
||||||
# The key and value below mean this: If someone installs RenderCV, then running
|
# The key and value below mean this: If someone installs RenderCV, then running
|
||||||
# `rendercv` in the terminal will run the function `app` in the module `__main__` in the
|
# `rendercv` in the terminal will run the function `app` in the module `cli` in the
|
||||||
# package `rendercv`.
|
# package `rendercv`.
|
||||||
rendercv = 'rendercv.__main__:app'
|
rendercv = 'rendercv.cli:app'
|
||||||
|
|
||||||
[project.optional-dependencies]
|
# ======================================================================================
|
||||||
# RenderCV depends on other packages. However, some of these packages are not required
|
# Virtual Environments Below ===========================================================
|
||||||
# to run RenderCV, but they are required to develop RenderCV. For example, to build the
|
# ======================================================================================
|
||||||
# documentation of RenderCV, we need to install some packages. However, not all the
|
|
||||||
# users of RenderCV will build the documentation, so these are optional dependencies.
|
|
||||||
|
|
||||||
docs = [
|
# RenderCV depends on other packages, which are listed under the `project` section as
|
||||||
|
# `dependencies`. However, for the development of RenderCV, we need some other packages
|
||||||
|
# too (like `black`, `ruff`, `mkdocs`, etc.). We need these packages in our virtual
|
||||||
|
# environments and we handle the environments with `hatchling`.
|
||||||
|
|
||||||
|
# There will be three virtual environments for RenderCV: `default`, `docs`, and `test`.
|
||||||
|
|
||||||
|
# `default` is the default virtual environment needed to develop RenderCV.
|
||||||
|
# `docs` is the virtual environment needed to build the documentation of RenderCV.
|
||||||
|
# `test` is the virtual environment needed to run the tests of RenderCV.
|
||||||
|
|
||||||
|
[tool.hatch.envs.default]
|
||||||
|
# Dependencies to be installed in the `default` virtual environment.
|
||||||
|
dependencies = [
|
||||||
|
"ruff==0.4.5", # to lint the code
|
||||||
|
"black==24.4.2", # to format the code
|
||||||
|
]
|
||||||
|
path = ".venv"
|
||||||
|
[tool.hatch.envs.default.scripts]
|
||||||
|
# Hatch allows us to define scripts that can be run in the activated virtual environment
|
||||||
|
# with `hatch run ENV_NAME:SCRIPT_NAME`.
|
||||||
|
# Format all the code in the `rendercv` package with `black`:
|
||||||
|
format = "black rendercv" # hatch run format
|
||||||
|
# Lint the code in the `rendercv` package with `ruff`:
|
||||||
|
lint = "ruff check rendercv" # hatch run lint
|
||||||
|
|
||||||
|
|
||||||
|
[tool.hatch.envs.docs]
|
||||||
|
# Dependencies to be installed in the `docs` virtual environment.
|
||||||
|
dependencies = [
|
||||||
"mkdocs-material==9.5.24", # to build docs
|
"mkdocs-material==9.5.24", # to build docs
|
||||||
"mkdocstrings-python==1.10.3", # to build reference documentation from docstrings
|
"mkdocstrings-python==1.10.3", # to build reference documentation from docstrings
|
||||||
"pdfCropMargins==2.1.3", # to generate entry figures for the documentation
|
"pdfCropMargins==2.1.3", # to generate entry figures for the documentation
|
||||||
"pillow==10.3.0", # lock the dependency of pdfCropMargins
|
"pillow==10.3.0", # lock the dependency of pdfCropMargins
|
||||||
"mkdocs-macros-plugin==1.0.5", # to be able to have dynamic content in the documentation
|
"mkdocs-macros-plugin==1.0.5", # to be able to have dynamic content in the documentation
|
||||||
]
|
]
|
||||||
tests = [
|
path = ".venv-docs"
|
||||||
|
[tool.hatch.envs.docs.scripts]
|
||||||
|
# Build the documentation with `mkdocs`:
|
||||||
|
build = "mkdocs build --clean --strict" # hatch run docs:build
|
||||||
|
# Start the development server for the documentation with `mkdocs`:
|
||||||
|
serve = "mkdocs serve" # hatch run docs:serve
|
||||||
|
# Deploy the documentation to docs.rendercv.com with `mkdocs`:
|
||||||
|
deploy = "mkdocs gh-deploy --force" # hatch run docs:deploy
|
||||||
|
# Update schema.json:
|
||||||
|
update-schema = "python docs/update_schema.py" # hatch run docs:update-schema
|
||||||
|
# Update `examples` folder:
|
||||||
|
update-examples = "python docs/update_examples.py" # hatch run docs:update-examples
|
||||||
|
# Update entry figures in "Structure of the YAML File" page:
|
||||||
|
update-entry-figures = "python docs/update_entry_figures.py" # hatch run docs:update-entry-figures
|
||||||
|
|
||||||
|
[tool.hatch.envs.test]
|
||||||
|
# Dependencies to be installed in the `test` virtual environment.
|
||||||
|
dependencies = [
|
||||||
"pytest==8.2.1", # to run the tests
|
"pytest==8.2.1", # to run the tests
|
||||||
"coverage==7.5.1", # to generate coverage reports
|
"coverage==7.5.1", # to generate coverage reports
|
||||||
"time-machine==2.14.1", # to select an arbitrary date and time for testing
|
"time-machine==2.14.1", # to select an arbitrary date and time for testing
|
||||||
"pypdf==4.2.0", # to read PDF files
|
"pypdf==4.2.0", # to read PDF files
|
||||||
]
|
]
|
||||||
dev = [
|
path = ".venv-test"
|
||||||
"ruff==0.4.5", # to lint the code
|
# [[tool.hatch.envs.test.matrix]]
|
||||||
"black==24.4.2", # to format the code
|
# # We can specify the Python versions that we want to test RenderCV with. Hatch will
|
||||||
]
|
# # create three different virtual environments for each Python version.
|
||||||
|
# # They will be named as test.py3.10, test.py3.11, and test.py3.12.
|
||||||
|
# python = ["3.10", "3.11", "3.12"]
|
||||||
|
[tool.hatch.envs.test.scripts]
|
||||||
|
# Run the tests:
|
||||||
|
run = "pytest" # hatch run test:run
|
||||||
|
# Run the tests and generate the coverage report as HTML:
|
||||||
|
run-and-report = "coverage run -m pytest && coverage report && coverage html --show-contexts" # hatch run test:coverage
|
||||||
|
|
||||||
|
# ======================================================================================
|
||||||
|
# Virtual Environments Above ===========================================================
|
||||||
|
# ======================================================================================
|
||||||
|
|
||||||
# RenderCV uses different tools to check the code quality, format the code, build the
|
# RenderCV uses different tools to check the code quality, format the code, build the
|
||||||
# documentation, build the package, etc. We can specify the settings for these tools in
|
# documentation, build the package, etc. We can specify the settings for these tools in
|
||||||
|
@ -126,18 +198,29 @@ dev = [
|
||||||
# these tools easily. Generally, popular IDEs grab these settings from `pyproject.toml`
|
# these tools easily. Generally, popular IDEs grab these settings from `pyproject.toml`
|
||||||
# file automatically.
|
# file automatically.
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
exclude = [
|
||||||
|
"rendercv/tinytex-release/download_and_minimize_tinytex_for_rendercv.py",
|
||||||
|
]
|
||||||
|
output-format = "github"
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
line-length = 88 # maximum line length
|
line-length = 88 # maximum line length
|
||||||
preview = true # to allow enable-unstable-feature
|
preview = true # to allow enable-unstable-feature
|
||||||
enable-unstable-feature = [
|
enable-unstable-feature = [
|
||||||
"string_processing",
|
"string_processing",
|
||||||
] # breaking strings into multiple lines
|
] # to break strings into multiple lines
|
||||||
|
|
||||||
[tool.coverage.run]
|
[tool.coverage.run]
|
||||||
source = ['rendercv']
|
source = ['rendercv'] # The source to measure during execution
|
||||||
# use relative paths instead of absolute paths, this is useful for combining coverage
|
|
||||||
|
# Use relative paths instead of absolute paths, this is useful for combining coverage
|
||||||
# reports from different OSes:
|
# reports from different OSes:
|
||||||
relative_files = true
|
relative_files = true
|
||||||
|
|
||||||
# don't include jinja templates in the coverage report:
|
[tool.coverage.report]
|
||||||
|
# Don't include jinja templates in the coverage report:
|
||||||
omit = ["*.j2.*", "rendercv/__main__.py"]
|
omit = ["*.j2.*", "rendercv/__main__.py"]
|
||||||
|
|
||||||
|
# Don't include these lines in the coverage report:
|
||||||
|
exclude_lines = ["if __name__ == .__main__.:"]
|
||||||
|
|
79
schema.json
79
schema.json
|
@ -123,6 +123,18 @@
|
||||||
"title": "Text Alignment",
|
"title": "Text Alignment",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"seperator_between_connections": {
|
||||||
|
"default": "",
|
||||||
|
"description": "The separator between the connections in the header. The default value is empty string.",
|
||||||
|
"title": "Seperator Between Connections",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"use_icons_for_connections": {
|
||||||
|
"default": true,
|
||||||
|
"description": "If this option is set to true, then icons will be used for the connections in the header. The default value is true.",
|
||||||
|
"title": "Use Icons for Connections",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"margins": {
|
"margins": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
|
@ -212,7 +224,7 @@
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
"default": null,
|
"default": null,
|
||||||
"description": "The email of the person.",
|
"description": "The email address of the person.",
|
||||||
"title": "Email",
|
"title": "Email",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
|
@ -536,6 +548,18 @@
|
||||||
"title": "Text Alignment",
|
"title": "Text Alignment",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"seperator_between_connections": {
|
||||||
|
"default": "$|$",
|
||||||
|
"description": "The separator between the connections in the header. The default value is empty string.",
|
||||||
|
"title": "Seperator Between Connections",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"use_icons_for_connections": {
|
||||||
|
"default": false,
|
||||||
|
"description": "If this option is set to true, then icons will be used for the connections (like phone, email, and website). The default value is false.",
|
||||||
|
"title": "Use Icons for Connections",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"margins": {
|
"margins": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
|
@ -955,8 +979,8 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"to": {
|
"to": {
|
||||||
"default": "to",
|
"default": "–",
|
||||||
"description": "Translation of the word \"to\" in the locale.",
|
"description": "The word or character used to indicate a range in the locale (e.g., \"2020 - 2021\").",
|
||||||
"title": "Translation of \"To\"",
|
"title": "Translation of \"To\"",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
|
@ -966,18 +990,18 @@
|
||||||
},
|
},
|
||||||
"abbreviations_for_months": {
|
"abbreviations_for_months": {
|
||||||
"default": [
|
"default": [
|
||||||
"Jan.",
|
"Jan",
|
||||||
"Feb.",
|
"Feb",
|
||||||
"Mar.",
|
"Mar",
|
||||||
"Apr.",
|
"Apr",
|
||||||
"May",
|
"May",
|
||||||
"June",
|
"June",
|
||||||
"July",
|
"July",
|
||||||
"Aug.",
|
"Aug",
|
||||||
"Sept.",
|
"Sept",
|
||||||
"Oct.",
|
"Oct",
|
||||||
"Nov.",
|
"Nov",
|
||||||
"Dec."
|
"Dec"
|
||||||
],
|
],
|
||||||
"description": "Abbreviations of the months in the locale.",
|
"description": "Abbreviations of the months in the locale.",
|
||||||
"title": "Abbreviations of Months",
|
"title": "Abbreviations of Months",
|
||||||
|
@ -1547,7 +1571,7 @@
|
||||||
"properties": {
|
"properties": {
|
||||||
"title": {
|
"title": {
|
||||||
"description": "The title of the publication.",
|
"description": "The title of the publication.",
|
||||||
"title": "Title of the Publication",
|
"title": "Publication Title",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"authors": {
|
"authors": {
|
||||||
|
@ -1571,9 +1595,22 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"url": {
|
||||||
|
"default": null,
|
||||||
|
"description": "The URL of the publication. If DOI is provided, it will be ignored.",
|
||||||
|
"title": "URL",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"format": "uri",
|
||||||
|
"maxLength": 2083,
|
||||||
|
"minLength": 1,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"journal": {
|
"journal": {
|
||||||
"default": null,
|
"default": null,
|
||||||
"description": "The journal or the conference name.",
|
"description": "The journal or conference name.",
|
||||||
"title": "Journal",
|
"title": "Journal",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
|
@ -1713,6 +1750,18 @@
|
||||||
"title": "Text Alignment",
|
"title": "Text Alignment",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"seperator_between_connections": {
|
||||||
|
"default": "",
|
||||||
|
"description": "The separator between the connections in the header. The default value is empty string.",
|
||||||
|
"title": "Seperator Between Connections",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"use_icons_for_connections": {
|
||||||
|
"default": true,
|
||||||
|
"description": "If this option is set to true, then icons will be used for the connections in the header. The default value is true.",
|
||||||
|
"title": "Use Icons for Connections",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"margins": {
|
"margins": {
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
|
@ -1840,6 +1889,8 @@
|
||||||
"last_updated_date_style": "Last updated in TODAY",
|
"last_updated_date_style": "Last updated in TODAY",
|
||||||
"header_font_size": "30 pt",
|
"header_font_size": "30 pt",
|
||||||
"text_alignment": "justified",
|
"text_alignment": "justified",
|
||||||
|
"seperator_between_connections": "",
|
||||||
|
"use_icons_for_connections": true,
|
||||||
"margins": {
|
"margins": {
|
||||||
"entry_area": {
|
"entry_area": {
|
||||||
"date_and_location_width": "4.5 cm",
|
"date_and_location_width": "4.5 cm",
|
||||||
|
|
Loading…
Reference in New Issue