Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/fresh #18

Merged
merged 36 commits into from
Nov 22, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
6ce2ae2
Introduce FRESH sheet class.
hacksalot Nov 19, 2015
f3eb46a
Add starter tests for FRESH sheet.
hacksalot Nov 19, 2015
0bebd87
Rename JSON Resume test sheet to test-jrs-sheet.js.
hacksalot Nov 19, 2015
30b6bc4
Remove invalid object model reference.
hacksalot Nov 19, 2015
ce95593
Relax copyright notices.
hacksalot Nov 19, 2015
b167abc
Bump version to 0.9.0.
hacksalot Nov 19, 2015
9044dff
Introduce FRESH and JSONResume conversion routines.
hacksalot Nov 19, 2015
a410153
Implement "generate" and "validate" verbs.
hacksalot Nov 19, 2015
0aa9bc2
Rename Sheet/FreshSheet to JRSResume/FRESHResume.
hacksalot Nov 19, 2015
458c851
Update FRESH tests with recent changes.
hacksalot Nov 19, 2015
87618af
Remove unused verb.
hacksalot Nov 19, 2015
35b9f2b
Fix JSON date validation.
hacksalot Nov 19, 2015
0c1b173
Update tests.
hacksalot Nov 19, 2015
1b3fdfb
Add FRESH validation test.
hacksalot Nov 19, 2015
15a7458
Update FRESH tests with new exemplar name.
hacksalot Nov 19, 2015
c96d37b
Update README.
hacksalot Nov 19, 2015
16cf97e
Improve converter.
hacksalot Nov 20, 2015
c14176a
Implement "convert" command.
hacksalot Nov 20, 2015
ad6d2c7
Update FRESH tests.
hacksalot Nov 20, 2015
9cde397
Clean up handling of "meta".
hacksalot Nov 20, 2015
4de9978
Scrub.
hacksalot Nov 20, 2015
5304cba
Tweak converter.
hacksalot Nov 20, 2015
bf34b01
Add YUIDoc support
hacksalot Nov 21, 2015
debd866
Adjust date references.
hacksalot Nov 21, 2015
e44239b
Update package.json deps.
hacksalot Nov 21, 2015
9fbab27
Improve validation and color-coding.
hacksalot Nov 21, 2015
317de75
Refactor.
hacksalot Nov 21, 2015
cbddb4b
Add convenience filter for links.
hacksalot Nov 21, 2015
992069b
Cleanup.
hacksalot Nov 21, 2015
5735ddc
Multiple enhancements.
hacksalot Nov 21, 2015
0fe334f
Bump fluent-themes version.
hacksalot Nov 22, 2015
eade6f3
Tweak colors.
hacksalot Nov 22, 2015
4277098
Tweak colors for Linux.
hacksalot Nov 22, 2015
5899989
Update README.
hacksalot Nov 22, 2015
39fd689
Fix README table glitch.
hacksalot Nov 22, 2015
37225ae
Update FRESCA version.
hacksalot Nov 22, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
node_modules/
tests/sandbox/
docs/
22 changes: 20 additions & 2 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,33 @@ module.exports = function (grunt) {
reporter: 'spec'
},
all: { src: ['tests/*.js'] }
},

yuidoc: {
compile: {
name: '<%= pkg.name %>',
description: '<%= pkg.description %>',
version: '<%= pkg.version %>',
url: '<%= pkg.homepage %>',
options: {
paths: 'src/',
//themedir: 'path/to/custom/theme/',
outdir: 'docs/'
}
}
}

};

grunt.initConfig( opts );
grunt.loadNpmTasks('grunt-simple-mocha');
grunt.registerTask('test', 'Test the FluentLib library.', function( config ) {
grunt.loadNpmTasks('grunt-contrib-yuidoc');
grunt.registerTask('test', 'Test the FluentCV library.', function( config ) {
grunt.task.run( ['simplemocha:all'] );
});
grunt.registerTask('default', [ 'test' ]);
grunt.registerTask('document', 'Generate FluentCV library documentation.', function( config ) {
grunt.task.run( ['yuidoc'] );
});
grunt.registerTask('default', [ 'test', 'yuidoc' ]);

};
180 changes: 144 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,63 +2,133 @@ fluentCV
========
*Generate beautiful, targeted resumes from your command line or shell.*

FluentCV is a **hackable, data-driven, dev-friendly resume authoring tool** with support for HTML, Markdown, Word, PDF, plain text, smoke signal, carrier pigeon, and other arbitrary-format resumes and CVs.

![](assets/fluentcv_cli_ubuntu.png)

Looking for a desktop GUI version with pretty timelines and graphs? Check out [FluentCV Desktop][7].
FluentCV is a Swiss Army knife for resumes and CVs. Use it to:

1. **Generate** polished multiformat resumes in HTML, Word, Markdown, PDF, plain
text, JSON, and YAML formats&mdash;without violating DRY.
2. **Convert** resumes between [FRESH][fresca] and [JSON Resume][6] formats.
3. **Validate** resumes against either format.

Install it with NPM:

```bash
[sudo] npm install fluentcv -g
```

Note: for PDF generation you'll need to install a copy of [wkhtmltopdf][3] for
your platform.

## Features

- Runs on OS X, Linux, and Windows.
- Store your resume data as a durable, versionable JSON, YML, or XML document.
- Generate multiple targeted resumes in multiple formats, based on your needs.
- Output to HTML, PDF, Markdown, Word, JSON, YAML, XML, or a custom format.
- Never update one piece of information in four different resumes again.
- Compatible with the [JSON Resume standard][6] and [authoring tools][7].
- Store your resume data as a durable, versionable JSON or YAML document.
- Generate polished resumes in multiple formats without violating [DRY][dry].
- Output to HTML, PDF, Markdown, MS Word, JSON, YAML, plain text, or XML.
- Compatible with [FRESH][fresh], [JSON Resume][6], [FRESCA][fresca], and
[FCV Desktop][7].
- Validate resumes against the FRESH or JSON Resume schema.
- Support for multiple input and output resumes.
- Free and open-source through the MIT license.
- Forthcoming: StackOverflow and LinkedIn support.
- Forthcoming: More themes!
- Forthcoming: More commands and themes.

Looking for a desktop GUI version for Windows / OS X / Linux? Check out
[FluentCV Desktop][7].

## Getting Started

To use FluentCV 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 three commands you should be aware of:

- `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
# fluentcv BUILD <INPUTS> TO <OUTPUTS> [-t THEME]
fluentcv BUILD resume.json TO out/resume.all
fluentcv BUILD r1.json r2.json TO out/rez.html out/rez.md foo/rez.all
```

- `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
# fluentcv CONVERT <INPUTS> TO <OUTPUTS>
fluentcv CONVERT resume.json TO resume-jrs.json
fluentcv CONVERT 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
```

- `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
# fluentcv VALIDATE <INPUTS>
fluentcv VALIDATE resume.json
fluentcv VALIDATE r1.json r2.json r3.json
```

## Supported Output Formats

FluentCV supports these output formats:

Output Format | Ext | Notes
------------- | --- | -----
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.
MS Word | .doc | A Microsoft Word office document.
Adobe Acrobat (PDF) | .pdf | A binary PDF document driven by an HTML theme.
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.
RTF | .rtf | Forthcoming.
Textile | .textile | Forthcoming.
image | .png, .bmp | Forthcoming.

## Install

FluentCV requires a recent version of [Node.js][4] and [NPM][5]. Then:

1. (Optional, for PDF support) Install the latest official [wkhtmltopdf][3] binary for your platform.
2. Install **fluentCV** by running `npm install fluentcv -g`.
1. Install the latest official [wkhtmltopdf][3] binary for your platform.
2. Install **fluentCV** with `[sudo] npm install fluentcv -g`.
3. You're ready to go.

## Use

Assuming you've got a JSON-formatted resume handy, generating resumes in different formats and combinations easy. Just run:
Assuming you've got a JSON-formatted resume handy, generating resumes in
different formats and combinations easy. Just run:

```bash
fluentcv [inputs] [outputs] [-t theme].
fluentcv BUILD <INPUTS> <OUTPUTS> [-t theme].
```

Where `[inputs]` is one or more .json resume files, separated by spaces; `[outputs]` is one or more destination resumes, each prefaced with the `-o` option; and `[theme]` is the desired theme. For example:
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:

```bash
# Generate all resume formats (HTML, PDF, DOC, TXT, YML, etc.)
fluentcv resume.json -o out/resume.all -t modern
fluentcv build resume.json -o out/resume.all -t modern

# Generate a specific resume format
fluentcv resume.json -o out/resume.html
fluentcv resume.json -o out/resume.pdf
fluentcv resume.json -o out/resume.md
fluentcv resume.json -o out/resume.doc
fluentcv resume.json -o out/resume.json
fluentcv resume.json -o out/resume.txt
fluentcv resume.json -o out/resume.yml
fluentcv build resume.json TO out/resume.html
fluentcv build resume.json TO out/resume.pdf
fluentcv build resume.json TO out/resume.md
fluentcv build resume.json TO out/resume.doc
fluentcv build resume.json TO out/resume.json
fluentcv build resume.json TO out/resume.txt
fluentcv build resume.json TO out/resume.yml

# Specify 2 inputs and 3 outputs
fluentcv in1.json in2.json -o out.html -o out.doc -o out.pdf
fluentcv build in1.json in2.json TO out.html out.doc out.pdf
```

You should see something to the effect of:

```
*** FluentCV v0.7.2 ***
*** FluentCV v0.9.0 ***
Reading JSON resume: foo/resume.json
Applying MODERN Theme (7 formats)
Generating HTML resume: out/resume.html
Expand All @@ -77,25 +147,25 @@ Generating YAML resume: out/resume.yml
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.

```bash
fluentcv resume.json -t modern
fluentcv resume.json -t ~/foo/bar/my-custom-theme/
fluentcv build resume.json -t modern
fluentcv build resume.json -t ~/foo/bar/my-custom-theme/
```

As of v0.7.2, available predefined themes are `modern`, `minimist`, and `hello-world`, and `compact`.
As of v0.9.0, available predefined themes are `modern`, `minimist`, and `hello-world`, and `compact`.

### Merging resumes

You can **merge multiple resumes together** by specifying them in order from most generic to most specific:

```bash
# Merge specific.json onto base.json and generate all formats
fluentcv base.json specific.json -o resume.all
fluentcv build base.json specific.json -o resume.all
```

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
fluentcv in1.json in2.json in3.json in4.json -o out.html -o out.doc
fluentcv build in1.json in2.json in3.json in4.json TO out.html out.doc
Reading JSON resume: in1.json
Reading JSON resume: in2.json
Reading JSON resume: in3.json
Expand All @@ -111,14 +181,14 @@ You can specify **multiple output targets** and FluentCV will build them:

```bash
# Generate out1.doc, out1.pdf, and foo.txt from me.json.
fluentcv me.json -o out1.doc -o out1.pdf -o foo.txt
fluentcv build me.json -o out1.doc -o out1.pdf -o foo.txt
```

You can also omit the output file(s) and/or theme completely:

```bash
# Equivalent to "fluentcv resume.json resume.all -t modern"
fluentcv resume.json
fluentcv build resume.json
```

### Using .all
Expand All @@ -127,26 +197,61 @@ The special `.all` extension tells FluentCV to generate all supported output for

```bash
# Generate all resume formats (HTML, PDF, DOC, TXT, etc.)
fluentcv me.json -o out/resume.all
fluentcv build me.json -o out/resume.all
```

..tells FluentCV 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`.

### Validating

FluentCV can also validate your resumes against either the [FRESH /
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.
fluentcv validate resumeA.json resumeB.json
```

FluentCV will validate each specified resume in turn:

```bash
*** FluentCV v0.9.0 ***
Validating JSON resume: resumeA.json (INVALID)
Validating JSON resume: resumeB.json (VALID)
```

### Converting

FluentCV can convert between the [FRESH][fresca] and [JSON Resume][6] formats.
Just run:

```bash
fluentcv CONVERT <INPUTS> <OUTPUTS>
```

where <INPUTS> is one or more resumes in FRESH or JSON Resume format, and
<OUTPUTS> is a corresponding list of output file names. FluentCV will autodetect
the format (FRESH or JRS) of each input resume and convert it to the other
format (JRS or FRESH).

### Prettifying

FluentCV applies [js-beautify][10]-style HTML prettification by default to HTML-formatted resumes. To disable prettification, the `--nopretty` or `-n` flag can be used:
FluentCV applies [js-beautify][10]-style HTML prettification by default to
HTML-formatted resumes. To disable prettification, the `--nopretty` or `-n` flag
can be used:

```bash
fluentcv resume.json out.all --nopretty
fluentcv generate resume.json out.all --nopretty
```

### Silent Mode

Use `-s` or `--silent` to run in silent mode:

```bash
fluentcv resume.json -o someFile.all -s
fluentcv resume.json -o someFile.all --silent
fluentcv generate resume.json -o someFile.all -s
fluentcv generate resume.json -o someFile.all --silent
```

## License
Expand All @@ -163,3 +268,6 @@ MIT. Go crazy. See [LICENSE.md][1] for details.
[8]: https://youtu.be/N9wsjroVlu8
[9]: https://api.jquery.com/jquery.extend/
[10]: https://github.com/beautify-web/js-beautify
[fresh]: https://github.com/fluentdesk/FRESH
[fresca]: https://github.com/fluentdesk/FRESCA
[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
Binary file modified assets/fluentcv_cli_ubuntu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 14 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fluentcv",
"version": "0.8.0",
"version": "0.9.0",
"description": "Generate beautiful, targeted resumes from your command line, shell, or in Javascript with Node.js.",
"repository": {
"type": "git",
Expand All @@ -10,7 +10,15 @@
"resume",
"CV",
"portfolio",
"Markdown"
"employment",
"career",
"Markdown",
"JSON",
"Word",
"PDF",
"YAML",
"HTML",
"CLI"
],
"author": "James M. Devlin",
"license": "MIT",
Expand All @@ -24,7 +32,9 @@
},
"homepage": "https://github.com/fluentdesk/fluentcv",
"dependencies": {
"fluent-themes": "0.4.0-beta",
"FRESCA": "fluentdesk/FRESCA#v0.1.0",
"colors": "^1.1.2",
"fluent-themes": "0.5.0-beta",
"fs-extra": "^0.24.0",
"html": "0.0.10",
"is-my-json-valid": "^2.12.2",
Expand All @@ -41,6 +51,7 @@
"devDependencies": {
"chai": "*",
"grunt": "*",
"grunt-contrib-yuidoc": "^0.10.0",
"grunt-simple-mocha": "*",
"is-my-json-valid": "^2.12.2",
"mocha": "*",
Expand Down
Loading