@jaimanm/resumake 1.0.0 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.github/workflows/npm-publish.yml +0 -2
  2. package/CONTRIBUTING.md +14 -1
  3. package/package.json +5 -1
  4. package/src/commands/config.js +5 -2
  5. package/src/commands/setup.js +6 -4
  6. package/src/index.js +4 -2
  7. package/templates/awesome-cv/.github/workflows/build-resume.yml +65 -0
  8. package/templates/awesome-cv/README.md +1 -0
  9. package/templates/awesome-cv/awesome-cv.cls +885 -0
  10. package/templates/awesome-cv/build_all.sh +12 -0
  11. package/templates/awesome-cv/cv/certificates.tex +111 -0
  12. package/templates/awesome-cv/cv/committees.tex +48 -0
  13. package/templates/awesome-cv/cv/education.tex +25 -0
  14. package/templates/awesome-cv/cv/experience.tex +186 -0
  15. package/templates/awesome-cv/cv/extracurricular.tex +81 -0
  16. package/templates/awesome-cv/cv/honors.tex +181 -0
  17. package/templates/awesome-cv/cv/presentation.tex +50 -0
  18. package/templates/awesome-cv/cv/skills.tex +38 -0
  19. package/templates/awesome-cv/cv/writing.tex +37 -0
  20. package/templates/awesome-cv/cv.tex +114 -0
  21. package/templates/jakes-cv/.github/workflows/build-resume.yml +65 -0
  22. package/templates/jakes-cv/README.md +29 -0
  23. package/templates/jakes-cv/build_all.sh +22 -0
  24. package/templates/jakes-cv/cv-sections/certificates.tex +8 -0
  25. package/templates/jakes-cv/cv-sections/committees.tex +19 -0
  26. package/templates/jakes-cv/cv-sections/education.tex +10 -0
  27. package/templates/jakes-cv/cv-sections/experience.tex +22 -0
  28. package/templates/jakes-cv/cv-sections/extracurricular.tex +20 -0
  29. package/templates/jakes-cv/cv-sections/honors.tex +10 -0
  30. package/templates/jakes-cv/cv-sections/presentation.tex +19 -0
  31. package/templates/jakes-cv/cv-sections/projects.tex +15 -0
  32. package/templates/jakes-cv/cv-sections/skills.tex +10 -0
  33. package/templates/jakes-cv/cv-sections/writing.tex +19 -0
  34. package/templates/jakes-cv/cv.tex +174 -0
  35. package/templates/jakes-cv/fonts/Roboto-Bold.ttf +0 -0
  36. package/templates/jakes-cv/fonts/Roboto-BoldItalic.ttf +0 -0
  37. package/templates/jakes-cv/fonts/Roboto-Italic.ttf +0 -0
  38. package/templates/jakes-cv/fonts/Roboto-Light.ttf +0 -0
  39. package/templates/jakes-cv/fonts/Roboto-LightItalic.ttf +0 -0
  40. package/templates/jakes-cv/fonts/Roboto-Medium.ttf +0 -0
  41. package/templates/jakes-cv/fonts/Roboto-MediumItalic.ttf +0 -0
  42. package/templates/jakes-cv/fonts/Roboto-Regular.ttf +0 -0
  43. package/templates/jakes-cv/fonts/Roboto-Thin.ttf +0 -0
  44. package/templates/jakes-cv/fonts/Roboto-ThinItalic.ttf +0 -0
  45. package/templates/jakes-resume/.github/workflows/build-resume.yml +65 -0
  46. package/templates/jakes-resume/README.md +1 -0
  47. package/templates/jakes-resume/build_all.sh +7 -0
  48. package/templates/jakes-resume/resume.tex +218 -0
  49. package/templates/modular-multi/.github/workflows/build-resume.yml +65 -0
  50. package/templates/modular-multi/README.md +1 -0
  51. package/templates/modular-multi/build_all.sh +23 -0
  52. package/templates/modular-multi/resume_aiml.tex +5 -0
  53. package/templates/modular-multi/resume_backend.tex +5 -0
  54. package/templates/modular-multi/resume_content.tex +136 -0
  55. package/templates/modular-multi/resume_preamble.tex +87 -0
  56. package/templates/modular-multi/resume_quantum.tex +5 -0
  57. package/templates/modular-multi/test.txt +80 -0
  58. package/tests/index.test.js +22 -90
  59. package/tests/setup.test.js +8 -4
@@ -26,5 +26,3 @@ jobs:
26
26
 
27
27
  - name: Publish to NPM with Provenance
28
28
  run: npm publish --provenance --access public
29
- env:
30
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
package/CONTRIBUTING.md CHANGED
@@ -20,7 +20,7 @@ To contribute, you must follow these exact steps:
20
20
  - `chore/description` for non-functional tasks (docs, CI/CD, etc.)
21
21
 
22
22
  3. **Write Tests:**
23
- If you are contributing to the Node.js CLI logic in `src-cli`, ensure that your logic is fully covered by Jest tests in `src-cli/tests/index.test.js`. Execute `npm test` inside `src-cli` to verify.
23
+ If you are contributing to the Node.js CLI logic, ensure that your logic is fully covered by Jest tests in the `tests/` directory. Execute `npm test` at the repository root to verify.
24
24
 
25
25
  4. **Submit a Pull Request:**
26
26
  Push your branch and open a Pull Request against `main`. Ensure your PR description links back to the issue it resolves (e.g., "Closes #5").
@@ -28,4 +28,17 @@ To contribute, you must follow these exact steps:
28
28
  5. **Wait for CI / Review:**
29
29
  The `main` branch is protected. All GitHub Action status checks (such as the `test` workflow) must pass before a merge is permitted.
30
30
 
31
+ ## Adding New Templates
32
+
33
+ ResuMake stores all of its available resume templates inside the `templates/` directory. We welcome standard open-source contributions for new templates!
34
+
35
+ To add a new template to the CLI:
36
+
37
+ 1. **Fork the repository** and create a feature branch off of `main` (e.g., `feat/add-awesome-template`).
38
+ 2. Create a new folder inside the `templates/` directory named after your template (e.g., `templates/my-awesome-template/`).
39
+ 3. Add all necessary LaTeX files (`.tex`), images, and configuration files into that folder.
40
+ 4. You **must** include an executable `build_all.sh` script at the root of your new template folder. This script is responsible for compiling the PDF and placing it into a `PDF_Exports/` folder.
41
+ 5. Edit the `src/commands/setup.js` file to add your new template to the `choices` array in the wizard prompt.
42
+ 6. Commit your changes and submit a single **Pull Request** targeting the `main` branch.
43
+
31
44
  By following these guidelines, we ensure that the `main` branch remains perfectly stable for end-users relying on our CLI tool!
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@jaimanm/resumake",
3
- "version": "1.0.0",
3
+ "version": "1.0.4",
4
4
  "description": "CLI to scaffold a magical LaTeX resume environment",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/jaimanm/resumake.git"
8
+ },
5
9
  "main": "index.js",
6
10
  "bin": {
7
11
  "resumake": "./bin/index.js"
@@ -33,15 +33,18 @@ module.exports = async function configCommand() {
33
33
  const driveMatch = actionContent.match(/rclone sync PDF_Exports\/ gdrive:(.*?)\//);
34
34
  const currentDriveFolder = driveMatch ? driveMatch[1] : 'Resumes';
35
35
 
36
- const { driveFolder } = await inquirer.prompt([
36
+ let { driveFolder } = await inquirer.prompt([
37
37
  {
38
38
  type: 'input',
39
39
  name: 'driveFolder',
40
- message: 'What folder in Google Drive should your PDFs sync to?',
40
+ message: 'What folder in Google Drive should your PDFs sync to? (Leave blank or type / for root)',
41
41
  default: currentDriveFolder
42
42
  }
43
43
  ]);
44
44
 
45
+ // Normalize folder to avoid double slashes if they type /
46
+ driveFolder = driveFolder.replace(/^\/+|\/+$/g, '').trim();
47
+
45
48
  if (driveFolder === currentDriveFolder) {
46
49
  console.log(chalk.green('\nConfiguration is already up to date. No changes made.'));
47
50
  return;
@@ -78,7 +78,6 @@ module.exports = async function setupCommand() {
78
78
  message: 'Which resume template would you like to use?',
79
79
  choices: [
80
80
  { name: 'Modular Multi-Resume (3 versions)', value: 'modular-multi' },
81
- { name: 'Standard (Single version)', value: 'standard' },
82
81
  { name: 'Awesome-CV (Professional)', value: 'awesome-cv' },
83
82
  { name: "Jake's Resume (Classic)", value: 'jakes-resume' },
84
83
  { name: "Jake's CV (Classic + Extended Sections)", value: 'jakes-cv' }
@@ -125,9 +124,12 @@ module.exports = async function setupCommand() {
125
124
  const urlResult = await execa('git', ['config', '--get', 'remote.origin.url']);
126
125
  remoteUrl = urlResult.stdout.trim();
127
126
 
128
- await execa('git', ['remote', 'add', 'template', 'https://github.com/jaimanm/resumake.git']);
129
- await execa('git', ['fetch', 'template']);
130
- await execa('git', ['reset', '--hard', `template/template/${template}`]);
127
+ // Copy template files locally from the NPM package
128
+ const templatePath = path.resolve(__dirname, '../../templates', template);
129
+ if (!fs.existsSync(templatePath)) {
130
+ throw new Error(`Template "${template}" not found locally at ${templatePath}`);
131
+ }
132
+ fs.cpSync(templatePath, process.cwd(), { recursive: true });
131
133
 
132
134
  // Customize the GitHub action with the user's preferred Google Drive folder
133
135
  const actionPath = '.github/workflows/build-resume.yml';
package/src/index.js CHANGED
@@ -3,12 +3,14 @@ const setupCommand = require('./commands/setup');
3
3
  const devCommand = require('./commands/dev');
4
4
  const configCommand = require('./commands/config');
5
5
 
6
+ const packageJson = require('../package.json');
7
+
6
8
  const program = new Command();
7
9
 
8
10
  program
9
- .name('resume-env')
11
+ .name('resumake')
10
12
  .description('CLI to automatically setup a magical LaTeX resume environment')
11
- .version('1.0.0');
13
+ .version(packageJson.version);
12
14
 
13
15
  program
14
16
  .command('setup')
@@ -0,0 +1,65 @@
1
+ name: Build, Sync, and Release Official PDFs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ build-and-release:
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - name: Checkout repository
17
+ uses: actions/checkout@v4
18
+
19
+ - name: Install LaTeX environment (Cached)
20
+ uses: awalsh128/cache-apt-pkgs-action@latest
21
+ with:
22
+ packages: texlive-latex-base texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra texlive-science latexmk
23
+ version: 1.0
24
+
25
+ - name: Build Official PDFs
26
+ run: |
27
+ chmod +x build_all.sh
28
+ ./build_all.sh
29
+
30
+ # ---------------------------------------------------------
31
+ # STEP 1: SYNC TO GOOGLE DRIVE (FINDER)
32
+ # ---------------------------------------------------------
33
+ - name: Install and Configure rclone
34
+ run: |
35
+ sudo apt-get install -y rclone
36
+ mkdir -p ~/.config/rclone
37
+ echo '${{ secrets.RCLONE_CONF }}' > ~/.config/rclone/rclone.conf
38
+
39
+ - name: Sync to Google Drive
40
+ run: |
41
+ # The sync command makes the Google Drive 'Resumes' folder exactly match the local PDF_Exports folder
42
+ # It will delete files in the drive that are not in PDF_Exports
43
+ rclone sync PDF_Exports/ gdrive:Resumes/
44
+
45
+ # ---------------------------------------------------------
46
+ # STEP 2: HISTORICAL RELEASE (ZIP)
47
+ # ---------------------------------------------------------
48
+ - name: Generate Release Version
49
+ id: version
50
+ run: |
51
+ DATE=$(date +'%Y-%m-%d')
52
+ echo "tag=${DATE}_v${{ github.run_number }}" >> $GITHUB_OUTPUT
53
+ echo "name=Release ${DATE} (Build ${{ github.run_number }})" >> $GITHUB_OUTPUT
54
+
55
+ - name: Zip for Release
56
+ run: zip -r Official_Resumes.zip PDF_Exports/
57
+
58
+ - name: Create GitHub Release
59
+ uses: softprops/action-gh-release@v2
60
+ with:
61
+ tag_name: ${{ steps.version.outputs.tag }}
62
+ name: ${{ steps.version.outputs.name }}
63
+ files: Official_Resumes.zip
64
+ env:
65
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1 @@
1
+ # Auto Resume Template