HackMyResume/README.md

353 lines
12 KiB
Markdown
Raw Normal View History

2015-12-19 17:37:42 +00:00
HackMyResume
============
2015-12-24 23:05:58 +00:00
[![Latest release][img-release]][latest-release]
[![Build status (MASTER)][img-master]][travis-url-master]
[![Build status (DEV)][img-dev]][travis-url-dev]
2015-12-24 23:05:58 +00:00
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,
2015-12-20 20:59:30 +00:00
plain text, and other arbitrary formats. Fight the power, save trees. Compatible
with [FRESH][fresca] and [JRS][6] resumes.*
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.
2016-01-04 13:06:51 +00:00
- Choose from dozens of FRESH or JSON Resume themes.
- Private, local-only resume authoring and analysis.
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-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.
2016-01-04 13:06:51 +00:00
- Updated daily / weekly. Contributions welcome.
2015-11-22 07:37:14 +00:00
2015-12-10 04:09:33 +00:00
## Install
2016-01-04 13:06:51 +00:00
Install the latest stable version of 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
```
2016-01-04 13:06:51 +00:00
To install the latest bleeding-edge version (updated daily):
```bash
[sudo] npm install hacksalot/hackmyresume#dev -g
```
**For PDF generation**, you'll need to install a copy of [wkhtmltopdf][3] and/or PhantomJS for your platform.
2015-12-29 22:43:27 +00:00
## Installing Themes
HackMyResume supports both [FRESH][fresh-themes] and [JSON Resume][jrst]-style
résumé themes.
- FRESH themes currently come preinstalled with HackMyResume.
- JSON Resume themes can be installed from NPM, GitHub, or manually.
To install a JSON Resume theme, just `cd` to the folder where you want to store
your themes and run one of:
```bash
# Install with NPM
npm install jsonresume-theme-[theme-name]
# Install with GitHub
git clone https://github.com/[user-or-org]/[repo-name]
```
Then when you're ready to generate your resume, just reference the location of
the theme folder as you installed it:
```bash
hackmyresume BUILD resume.json TO out/resume.all -t node_modules/jsonresume-theme-classy
```
Note: You can use install themes anywhere on your file system. You don't need a
package.json or other NPM/Node infrastructure.
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
2016-01-06 00:48:11 +00:00
line tool. There are five basic commands you should be aware of:
2015-11-22 07:37:14 +00:00
2015-12-21 07:58:01 +00:00
- **build** generates resumes in HTML, Word, Markdown, PDF, and other formats.
2015-12-20 20:59:30 +00:00
Use it when you need to submit, upload, print, or email resumes in specific
formats.
2015-11-22 07:37:14 +00:00
```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-21 07:58:01 +00:00
- **new** creates a new resume in FRESH or JSON Resume format.
2015-12-02 19:56:36 +00:00
```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
```
2016-01-06 00:48:11 +00:00
- **analyze** inspects your resume for keywords, duration, and other metrics.
2015-12-21 07:58:01 +00:00
- **convert** converts your source resume between FRESH and JSON Resume
2016-01-06 00:48:11 +00:00
formats. Use it to convert between the two formats to take advantage of tools
and services.
2015-11-22 07:37:14 +00:00
```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
```
2015-12-21 07:58:01 +00:00
- **validate** validates the specified resume against either the FRESH or JSON
2015-11-22 07:37:14 +00:00
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-29 22:43:27 +00:00
LaTeX | .tex | A structured LaTeX document (or collection of documents) that can be processed with pdflatex, xelatex, and similar tools.
MS Word | .doc | A Microsoft Word office document (XML-driven; WordProcessingML).
Adobe Acrobat (PDF) | .pdf | A binary PDF document driven by an HTML theme (through wkhtmltopdf).
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
## 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-29 22:43:27 +00:00
hackmyresume BUILD resume.json TO out/resume.all -t modern
2015-10-06 22:56:26 +01:00
# Generate a specific resume format
2015-12-29 22:43:27 +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-29 22:43:27 +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:
```
2016-01-06 00:48:11 +00:00
*** HackMyResume v1.4.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
2016-01-06 00:48:11 +00:00
HackMyResume can work with any FRESH or JSON Resume theme. To specify a theme
when generating your resume, use the `-t` or `--theme` parameter:
```bash
hackmyresume BUILD resume.json TO out/rez.all -t [theme]
```
The `[theme]` parameter can be the name of a predefined theme or the path to any
FRESH or JSON Resume theme folder:
2015-10-10 23:34:36 +01:00
```bash
2015-12-29 22:43:27 +00:00
hackmyresume BUILD resume.json TO out/rez.all -t modern
2016-01-06 00:48:11 +00:00
hackmyresume BUILD resume.json TO OUT.rez.all -t ../some-folder/my-custom-theme/
hackmyresume BUILD resume.json TO OUT.rez.all -t npm_modules/jsonresume-theme-classy
2015-10-10 23:34:36 +01:00
```
2016-01-06 00:48:11 +00:00
As of v1.4.0, available predefined themes are `positive`, `modern`, `compact`,
2015-12-20 20:59:30 +00:00
`minimist`, and `hello-world`.
2015-10-10 23:34:36 +01:00
2015-10-06 22:56:26 +01:00
### Merging resumes
2015-12-20 20:59:30 +00:00
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-29 22:43:27 +00:00
hackmyresume BUILD base.json specific.json TO resume.all
2015-09-02 01:14:24 +01:00
```
2015-12-20 20:59:30 +00: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:
2015-10-07 09:27:30 +01:00
```bash
2015-12-29 22:43:27 +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-29 22:43:27 +00:00
hackmyresume BUILD me.json TO out1.doc out1.pdf foo.txt
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-20 20:59:30 +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-29 22:43:27 +00:00
hackmyresume BUILD me.json TO out/resume.all
2015-10-06 22:56:26 +01:00
```
2015-12-20 20:59:30 +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-29 22:43:27 +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-20 20:59:30 +00:00
HackMyResume can convert between the [FRESH][fresca] and [JSON Resume][6]
formats. Just run:
2015-11-22 07:37:14 +00:00
```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-20 20:59:30 +00:00
<OUTPUTS> is a corresponding list of output file names. HackMyResume will
autodetect the format (FRESH or JRS) of each input resume and convert it to the
other format (JRS or FRESH).
2015-11-22 07:37:14 +00:00
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-29 22:43:27 +00:00
hackmyresume BUILD 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-29 22:43:27 +00:00
hackmyresume BUILD resume.json -o someFile.all -s
hackmyresume BUILD resume.json -o someFile.all --silent
2015-10-26 14:18:33 +00:00
```
## Contributing
HackMyResume is a community-driven free and open source project under the MIT
License. Contributions are encouraged and we respond to all PRs and issues,
usually within 24 hours. See [CONTRIBUTING.md][contribute] for details.
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
[img-release]: https://img.shields.io/github/release/hacksalot/HackMyResume.svg?label=version
[img-master]: https://img.shields.io/travis/hacksalot/HackMyResume/master.svg
[img-dev]: https://img.shields.io/travis/hacksalot/HackMyResume/dev.svg?label=dev
[travis-url-master]: https://travis-ci.org/hacksalot/HackMyResume/master
[travis-url-dev]: https://travis-ci.org/hacksalot/HackMyResume/dev
[latest-release]: https://github.com/hacksalot/HackMyResume/releases/latest
[contribute]: CONTRIBUTING.md
2015-12-30 23:50:58 +00:00
[fresh-themes]: https://github.com/fluentdesk/fresh-themes
2015-12-29 22:43:27 +00:00
[jrst]: https://www.npmjs.com/search?q=jsonresume-theme