1
0
mirror of https://github.com/JuanCanham/HackMyResume.git synced 2024-11-22 16:30:11 +00:00
HackMyResume/README.md

291 lines
9.8 KiB
Markdown
Raw Permalink Normal View History

2015-12-19 17:37:42 +00:00
HackMyResume
============
2015-12-18 22:23:40 +00:00
*Create polished résumés and CVs in multiple formats from your command line or
shell. Author in clean Markdown and JSON, export to Word, HTML, PDF, LaTeX,
plain text, and other arbitrary formats.*
2015-09-02 01:14:24 +01:00
2015-12-18 22:23:40 +00:00
![](assets/resume-bouqet.png)
2015-10-06 22:56:26 +01:00
2015-12-19 17:37:42 +00:00
HackMyResume is a dev-friendly, local-only Swiss Army knife for resumes and CVs.
Use it to:
2015-11-22 07:37:14 +00:00
2015-12-10 04:09:33 +00:00
1. **Generate** HTML, Markdown, LaTeX, MS Word, PDF, plain text, JSON, XML,
YAML, print, smoke signal, carrier pigeon, and other arbitrary-format resumes
and CVs, from a single source of truth—without violating DRY.
2015-11-22 07:37:14 +00:00
2. **Convert** resumes between [FRESH][fresca] and [JSON Resume][6] formats.
3. **Validate** resumes against either format.
2015-12-19 17:37:42 +00:00
HackMyResume is built with Node.js and runs on recent versions of OS X, Linux,
or Windows.
2015-10-06 22:56:26 +01:00
## Features
2015-12-10 04:09:33 +00:00
- OS X, Linux, and Windows.
2015-11-19 22:43:54 +00:00
- Store your resume data as a durable, versionable JSON or YAML document.
2015-11-22 07:37:14 +00:00
- Generate polished resumes in multiple formats without violating [DRY][dry].
2015-12-10 04:09:33 +00:00
- Output to HTML, Markdown, LaTeX, PDF, MS Word, JSON, YAML, plain text, or XML.
2015-11-22 07:37:14 +00:00
- Compatible with [FRESH][fresh], [JSON Resume][6], [FRESCA][fresca], and
[FCV Desktop][7].
2015-11-19 22:43:54 +00:00
- Validate resumes against the FRESH or JSON Resume schema.
- Support for multiple input and output resumes.
2015-12-10 04:09:33 +00:00
- Use from your command line or [desktop][7].
2015-10-07 06:54:08 +01:00
- Free and open-source through the MIT license.
2015-11-22 07:37:14 +00:00
2015-12-10 04:09:33 +00:00
## Install
2015-12-19 17:37:42 +00:00
Install HackMyResume with NPM:
2015-12-10 04:09:33 +00:00
```bash
2015-12-19 17:37:42 +00:00
[sudo] npm install hackmyresume -g
2015-12-10 04:09:33 +00:00
```
Note: for PDF generation you'll need to install a copy of [wkhtmltopdf][3] for
your platform. For LaTeX generation you'll need a valid LaTeX environment with
access to `xelatex` and similar.
2015-11-22 07:37:14 +00:00
## Getting Started
2015-12-19 17:37:42 +00:00
To use HackMyResume you'll need to create a valid resume in either
[FRESH][fresca] or [JSON Resume][6] format. Then you can start using the command
line tool. There are four basic commands you should be aware of:
2015-11-22 07:37:14 +00:00
- `build` generates resumes in HTML, Word, Markdown, PDF, and other formats. Use
it when you need to submit, upload, print, or email resumes in specific formats.
```bash
2015-12-19 17:37:42 +00:00
# hackmyresume BUILD <INPUTS> TO <OUTPUTS> [-t THEME]
hackmyresume BUILD resume.json TO out/resume.all
hackmyresume BUILD r1.json r2.json TO out/rez.html out/rez.md foo/rez.all
2015-11-22 07:37:14 +00:00
```
2015-12-02 19:56:36 +00:00
- `new` creates a new resume in FRESH or JSON Resume format.
```bash
2015-12-19 17:37:42 +00:00
# hackmyresume NEW <OUTPUTS> [-f <FORMAT>]
hackmyresume NEW resume.json
hackmyresume NEW resume.json -f fresh
hackmyresume NEW r1.json r2.json -f jrs
2015-12-02 19:56:36 +00:00
```
2015-11-22 07:37:14 +00:00
- `convert` converts your source resume between FRESH and JSON Resume formats.
Use it to convert between the two formats to take advantage of tools and services.
```bash
2015-12-19 17:37:42 +00:00
# hackmyresume CONVERT <INPUTS> TO <OUTPUTS>
hackmyresume CONVERT resume.json TO resume-jrs.json
hackmyresume CONVERT 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
2015-11-22 07:37:14 +00:00
```
- `validate` validates the specified resume against either the FRESH or JSON
Resume schema. Use it to make sure your resume data is sufficient and complete.
```bash
2015-12-19 17:37:42 +00:00
# hackmyresume VALIDATE <INPUTS>
hackmyresume VALIDATE resume.json
hackmyresume VALIDATE r1.json r2.json r3.json
2015-11-22 07:37:14 +00:00
```
## Supported Output Formats
2015-12-19 17:37:42 +00:00
HackMyResume supports these output formats:
2015-11-22 07:37:14 +00:00
2015-11-22 07:41:21 +00:00
Output Format | Ext | Notes
------------- | --- | -----
2015-11-22 07:37:14 +00:00
HTML | .html | A standard HTML 5 + CSS resume format that can be viewed in a browser, deployed to a website, etc.
Markdown | .md | A structured Markdown document that can be used as-is or used to generate HTML.
2015-12-10 04:09:33 +00:00
LaTeX | .tex | A structured LaTeX document (or collection of documents).
2015-11-22 07:41:21 +00:00
MS Word | .doc | A Microsoft Word office document.
2015-11-22 07:37:14 +00:00
Adobe Acrobat (PDF) | .pdf | A binary PDF document driven by an HTML theme.
2015-11-22 07:41:21 +00:00
plain text | .txt | A formatted plain text document appropriate for emails or copy-paste.
JSON | .json | A JSON representation of the resume.
YAML | .yml | A YAML representation of the resume.
2015-11-22 07:37:14 +00:00
RTF | .rtf | Forthcoming.
Textile | .textile | Forthcoming.
image | .png, .bmp | Forthcoming.
2015-10-06 22:56:26 +01:00
## Install
2015-09-02 01:14:24 +01:00
2015-12-19 17:37:42 +00:00
HackMyResume requires a recent version of [Node.js][4] and [NPM][5]. Then:
2015-09-02 01:14:24 +01:00
2015-11-19 22:43:54 +00:00
1. Install the latest official [wkhtmltopdf][3] binary for your platform.
2015-12-10 04:09:33 +00:00
2. Optionally install an updated LaTeX environment (LaTeX resumes only).
2015-12-19 17:37:42 +00:00
2. Install **HackMyResume** with `[sudo] npm install hackmyresume -g`.
2015-10-11 03:36:13 +01:00
3. You're ready to go.
2015-10-06 22:56:26 +01:00
## Use
2015-11-22 07:37:14 +00:00
Assuming you've got a JSON-formatted resume handy, generating resumes in
different formats and combinations easy. Just run:
2015-10-06 22:56:26 +01:00
2015-10-11 03:36:13 +01:00
```bash
2015-12-19 17:37:42 +00:00
hackmyresume BUILD <INPUTS> <OUTPUTS> [-t theme].
2015-10-11 03:36:13 +01:00
```
2015-10-06 22:56:26 +01:00
2015-11-22 07:37:14 +00:00
Where `<INPUTS>` is one or more .json resume files, separated by spaces;
`<OUTPUTS>` is one or more destination resumes, and `<THEME>` is the desired
theme (default to Modern). For example:
2015-10-06 22:56:26 +01:00
```bash
2015-10-26 06:45:37 +00:00
# Generate all resume formats (HTML, PDF, DOC, TXT, YML, etc.)
2015-12-19 17:37:42 +00:00
hackmyresume build resume.json -o out/resume.all -t modern
2015-10-06 22:56:26 +01:00
# Generate a specific resume format
2015-12-19 17:37:42 +00:00
hackmyresume build resume.json TO out/resume.html
hackmyresume build resume.json TO out/resume.pdf
hackmyresume build resume.json TO out/resume.md
hackmyresume build resume.json TO out/resume.doc
hackmyresume build resume.json TO out/resume.json
hackmyresume build resume.json TO out/resume.txt
hackmyresume build resume.json TO out/resume.yml
2015-10-11 03:36:13 +01:00
# Specify 2 inputs and 3 outputs
2015-12-19 17:37:42 +00:00
hackmyresume build in1.json in2.json TO out.html out.doc out.pdf
2015-10-06 22:56:26 +01:00
```
You should see something to the effect of:
```
2015-12-19 17:37:42 +00:00
*** HackMyResume v0.9.0 ***
2015-10-06 22:56:26 +01:00
Reading JSON resume: foo/resume.json
2015-10-26 14:18:33 +00:00
Applying MODERN Theme (7 formats)
2015-10-06 22:56:26 +01:00
Generating HTML resume: out/resume.html
Generating TXT resume: out/resume.txt
Generating DOC resume: out/resume.doc
Generating PDF resume: out/resume.pdf
2015-10-11 03:36:13 +01:00
Generating JSON resume: out/resume.json
Generating MARKDOWN resume: out/resume.md
2015-10-26 14:18:33 +00:00
Generating YAML resume: out/resume.yml
2015-10-06 22:56:26 +01:00
```
2015-09-02 01:14:24 +01:00
## Advanced
2015-10-10 23:34:36 +01:00
### Applying a theme
2015-10-11 03:36:13 +01:00
You can specify a predefined or custom theme via the optional `-t` parameter. For a predefined theme, include the theme name. For a custom theme, include the path to the custom theme's folder.
2015-10-10 23:34:36 +01:00
```bash
2015-12-19 17:37:42 +00:00
hackmyresume build resume.json -t modern
hackmyresume build resume.json -t ~/foo/bar/my-custom-theme/
2015-10-10 23:34:36 +01:00
```
2015-11-19 22:43:54 +00:00
As of v0.9.0, available predefined themes are `modern`, `minimist`, and `hello-world`, and `compact`.
2015-10-10 23:34:36 +01:00
2015-10-06 22:56:26 +01:00
### Merging resumes
You can **merge multiple resumes together** by specifying them in order from most generic to most specific:
2015-09-02 01:14:24 +01:00
```bash
# Merge specific.json onto base.json and generate all formats
2015-12-19 17:37:42 +00:00
hackmyresume build base.json specific.json -o resume.all
2015-09-02 01:14:24 +01:00
```
2015-10-07 09:27:30 +01:00
This can be useful for overriding a base (generic) resume with information from a specific (targeted) resume. For example, you might override your generic catch-all "software developer" resume with specific details from your targeted "game developer" resume, or combine two partial resumes into a "complete" resume. Merging follows conventional [extend()][9]-style behavior and there's no arbitrary limit to how many resumes you can merge:
```bash
2015-12-19 17:37:42 +00:00
hackmyresume build in1.json in2.json in3.json in4.json TO out.html out.doc
2015-10-07 09:27:30 +01:00
Reading JSON resume: in1.json
Reading JSON resume: in2.json
Reading JSON resume: in3.json
Reading JSON resume: in4.json
Merging in4.json onto in3.json onto in2.json onto in1.json
Generating HTML resume: out.html
Generating WORD resume: out.doc
```
2015-10-06 22:56:26 +01:00
### Multiple targets
2015-12-19 17:37:42 +00:00
You can specify **multiple output targets** and HackMyResume will build them:
2015-09-02 01:14:24 +01:00
```bash
2015-10-07 06:54:08 +01:00
# Generate out1.doc, out1.pdf, and foo.txt from me.json.
2015-12-19 17:37:42 +00:00
hackmyresume build me.json -o out1.doc -o out1.pdf -o foo.txt
2015-09-02 01:14:24 +01:00
```
2015-10-07 06:54:08 +01:00
You can also omit the output file(s) and/or theme completely:
2015-09-02 01:14:24 +01:00
```bash
2015-12-19 17:37:42 +00:00
# Equivalent to "hackmyresume resume.json resume.all -t modern"
hackmyresume build resume.json
2015-09-02 01:14:24 +01:00
```
2015-09-01 06:03:58 +01:00
2015-10-06 22:56:26 +01:00
### Using .all
2015-12-19 17:37:42 +00:00
The special `.all` extension tells HackMyResume to generate all supported output formats for the given resume. For example, this...
2015-10-06 22:56:26 +01:00
```bash
# Generate all resume formats (HTML, PDF, DOC, TXT, etc.)
2015-12-19 17:37:42 +00:00
hackmyresume build me.json -o out/resume.all
2015-10-06 22:56:26 +01:00
```
2015-12-19 17:37:42 +00:00
..tells HackMyResume to read `me.json` and generate `out/resume.md`, `out/resume.doc`, `out/resume.html`, `out/resume.txt`, `out/resume.pdf`, and `out/resume.json`.
2015-10-06 22:56:26 +01:00
2015-11-19 22:43:54 +00:00
### Validating
2015-12-19 17:37:42 +00:00
HackMyResume can also validate your resumes against either the [FRESH /
2015-11-19 22:43:54 +00:00
FRESCA][fresca] or [JSON Resume][6] formats. To validate one or more existing
resumes, use the `validate` command:
```bash
# Validate myresume.json against either the FRESH or JSON Resume schema.
2015-12-19 17:37:42 +00:00
hackmyresume validate resumeA.json resumeB.json
2015-11-19 22:43:54 +00:00
```
2015-12-19 17:37:42 +00:00
HackMyResume will validate each specified resume in turn:
2015-11-19 22:43:54 +00:00
```bash
2015-12-19 17:37:42 +00:00
*** HackMyResume v0.9.0 ***
2015-11-22 07:37:14 +00:00
Validating JSON resume: resumeA.json (INVALID)
Validating JSON resume: resumeB.json (VALID)
2015-11-19 22:43:54 +00:00
```
2015-11-22 07:37:14 +00:00
### Converting
2015-12-19 17:37:42 +00:00
HackMyResume can convert between the [FRESH][fresca] and [JSON Resume][6] formats.
2015-11-22 07:37:14 +00:00
Just run:
```bash
2015-12-19 17:37:42 +00:00
hackmyresume CONVERT <INPUTS> <OUTPUTS>
2015-11-22 07:37:14 +00:00
```
where <INPUTS> is one or more resumes in FRESH or JSON Resume format, and
2015-12-19 17:37:42 +00:00
<OUTPUTS> is a corresponding list of output file names. HackMyResume will autodetect
2015-11-22 07:37:14 +00:00
the format (FRESH or JRS) of each input resume and convert it to the other
format (JRS or FRESH).
2015-10-25 12:18:49 +00:00
### Prettifying
2015-12-19 17:37:42 +00:00
HackMyResume applies [js-beautify][10]-style HTML prettification by default to
2015-11-22 07:37:14 +00:00
HTML-formatted resumes. To disable prettification, the `--nopretty` or `-n` flag
can be used:
2015-10-25 12:18:49 +00:00
```bash
2015-12-19 17:37:42 +00:00
hackmyresume generate resume.json out.all --nopretty
2015-10-25 12:18:49 +00:00
```
2015-10-26 14:18:33 +00:00
### Silent Mode
Use `-s` or `--silent` to run in silent mode:
```bash
2015-12-19 17:37:42 +00:00
hackmyresume generate resume.json -o someFile.all -s
hackmyresume generate resume.json -o someFile.all --silent
2015-10-26 14:18:33 +00:00
```
2015-09-01 06:03:58 +01:00
## License
2015-10-07 10:17:51 +01:00
MIT. Go crazy. See [LICENSE.md][1] for details.
2015-09-01 06:50:31 +01:00
[1]: LICENSE.md
2015-09-02 01:14:24 +01:00
[2]: http://phantomjs.org/
[3]: http://wkhtmltopdf.org/
[4]: https://nodejs.org/
[5]: https://www.npmjs.com/
2015-10-06 22:56:26 +01:00
[6]: http://jsonresume.org
[7]: http://fluentcv.com
2015-10-07 06:38:48 +01:00
[8]: https://youtu.be/N9wsjroVlu8
2015-10-07 06:54:08 +01:00
[9]: https://api.jquery.com/jquery.extend/
2015-10-25 12:18:49 +00:00
[10]: https://github.com/beautify-web/js-beautify
2015-11-19 22:43:54 +00:00
[fresh]: https://github.com/fluentdesk/FRESH
[fresca]: https://github.com/fluentdesk/FRESCA
2015-11-22 07:37:14 +00:00
[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself