Skip to content

Euvaz/TeXCV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TeXCV

I developed a specialized solution for version-controlling my resume, aiming to generate a unique version for each job application using a customizable template without the need to manually create a new file for each implementation. Furthermore, I sought to automate the process of delivering these templates and add linting features to ensure consistency and high-quality output.

To achieve this, I created a solution that enables the creation of specific LaTeX templates that can be customized using LaTeX macros. I developed a utility, gen.sh, that performs effective substitution of these macros.

To ensure quality and consistency in the resume generation process, I utilized the powerful CI/CD capabilities of GitHub Actions. This allows for automatic linting of new pull requests and the automatic compilation and delivery of a new Artifact.tar.gz to my self-hosted Nextcloud instance upon pushes to the main branch.

Overview

📂 Repository structure

def         # TeX files which define base macros
doc         # TeX templates
fonts       # Font directory
out/        # Output directory
├── merge   # Merged TeX files, source files for PDFs
└── pdf     # PDF output
pre         # TeX files which defined unique macros

Usage

This project can be utilized in two ways:

  1. Automation: GitHub Actions
  2. Manual: Executing the script and compiling the PDF(s)

Automation

Automation will require the following action repository secrets:

Name Description Example
AGE_SECRET_KEY Age private key for SOPS decryption of macros AGE-SECRET-KEY-...
NEXTCLOUD_PASSWORD Nextcloud password for Artifact uploading User
NEXTCLOUD_USERNAME Nextcloud username for Artifact uploading Pass
SECRET_NEXTCLOUD_URL Full URL of Nextcloud instance https://nc.example.com

Manual

Manually compiling resume PDFs can be done by first generating all merge files via gen.sh:

$ ./gen.sh
[INFO] MERGING: DOCUMENT=./doc/Resume.tex MACRO=./pre/Amazon.sops.yaml MERGE=./out/merge/Amazon-Resume.tex
[INFO] MERGING: DOCUMENT=./doc/Resume.tex MACRO=./pre/Google.sops.yaml MERGE=./out/merge/Google-Resume.tex
[INFO] MERGING: DOCUMENT=./doc/Resume.tex MACRO=./pre/Microsoft.sops.yaml MERGE=./out/merge/Microsoft-Resume.tex

Then compiling all merge files located in ./out/merge/ via xelatex:

$ xelatex -output-directory ./out/pdf/ ./out/merge/*.tex

Optionally, an individual PDF can also be generated:

$ xelatex -output-directory ./out/pdf/ ./out/merge/Google-Resume.tex

About

Templatable resume and cover letter generator utilizing SOPS Age encryption and CI/CD via GitHub Actions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages