resme 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +170 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/resme +6 -0
- data/lib/resme.rb +4 -0
- data/lib/resme/cli/command_semantics.rb +155 -0
- data/lib/resme/cli/command_syntax.rb +192 -0
- data/lib/resme/renderer/renderer.rb +103 -0
- data/lib/resme/templates/europass/eu.xml.erb +405 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Achievement.xsd +91 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Certificate.xsd +62 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/CommonTypes.xsd +139 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/ComputerSkill.xsd +112 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/ContactInformation.xsd +321 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Demographics.xsd +122 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/DigitalContent.xsd +164 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/DocumentInformation.xsd +119 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Documentation.xsd +122 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/DrivingSkill.xsd +71 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/EducationalExperience.xsd +137 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/EmploymentExperience.xsd +65 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/EuropassCoverLetter.xsd +70 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/EuropassLearnerInformation.xsd +91 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/EuropassPrintingPreferences.xsd +247 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/EuropassSchema.xsd +133 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Experience.xsd +75 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Headline.xsd +97 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Identification.xsd +54 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Language.xsd +107 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Letter.xsd +129 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/LinguisticSkill.xsd +189 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/OccupationalField.xsd +68 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Organisation.xsd +129 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/PersonName.xsd +71 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/Skill.xsd +71 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/imported/EQF_08_V1.0.0.xsd +115 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/imported/EUDrivingLicence_V1.1.0.xsd +28 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/imported/ISCED97_V1.0.0.xsd +981 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/imported/NACE_COM_V1.0.0.xsd +5630 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/included/EuropassAddressFormats_V1.3.0.xsd +117 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/included/EuropassISCO_88_COM_V1.4.0.xsd +15116 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/included/EuropassISOCountries_V1.6.0.xsd +6180 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/included/EuropassISOLanguages_V1.8.0.xsd +7645 -0
- data/lib/resme/templates/europass/europass-xml-schema-definition-v3.3.0/included/EuropassNationalities_V1.6.0.xsd +6179 -0
- data/lib/resme/templates/europass/europass-xml-schema-doc-v3.3.0.pdf +0 -0
- data/lib/resme/templates/html/css/main.css +87 -0
- data/lib/resme/templates/html/css/normalize.css +424 -0
- data/lib/resme/templates/html/index.html.erb +22 -0
- data/lib/resme/templates/html/js/main.js +0 -0
- data/lib/resme/templates/html/js/plugins.js +24 -0
- data/lib/resme/templates/html/js/vendor/jquery-1.12.0.min.js +5 -0
- data/lib/resme/templates/html/js/vendor/modernizr-2.8.3.min.js +4 -0
- data/lib/resme/templates/resume.json.erb +137 -0
- data/lib/resme/templates/resume.md.erb +120 -0
- data/lib/resme/templates/resume.yml +240 -0
- data/lib/resme/version.rb +3 -0
- data/resme.gemspec +28 -0
- metadata +151 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 41210e013344cdaa0ebf2bda62cb32e6a7ab12d0
|
4
|
+
data.tar.gz: 502428f940851e89c7d67434d1a7e159c51e8115
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3bbb1d5a0b1ec9a4aaecc61878d87cbb34c922058073c2660f4e06bdd42286d55956d49bccc988693d8ea4fd8dc28b58f89ab5052f4f7f9ae87c8fc0cccc6efb
|
7
|
+
data.tar.gz: 3376bfe326cc4bb00c97d858cabc4df8793408a9b5a979090dab19710bce64bb674e16dff02465a6fedb6defa125d02591c9fd939c47f2515190f26f42441034
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Adolfo Villafiorita
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
# RESME - A Resume Generator
|
2
|
+
|
3
|
+
Keep your resume in YAML and output it in various formats, including
|
4
|
+
markdown, json, and the Europass XML format.
|
5
|
+
|
6
|
+
Interesting features:
|
7
|
+
|
8
|
+
- the rendering engine is based on ERB. This simplifies the creation
|
9
|
+
of new output formats (and extending/modifying the YML structure to
|
10
|
+
one's needs).
|
11
|
+
- no gem/cli application I am aware of outputs in the Europass format
|
12
|
+
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'resme'
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install resme
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
Start with:
|
33
|
+
|
34
|
+
$ resme init
|
35
|
+
|
36
|
+
whih generates a YML template for your resume in the current
|
37
|
+
directory. Comments in the YML file should help you fill the various
|
38
|
+
entries. Notice that most entries are optional and you can remove
|
39
|
+
sectins hich are not relevant for your resume.
|
40
|
+
|
41
|
+
Once you have started filling you resume, you can then generate a
|
42
|
+
resume using the existing templates or by writing your own template
|
43
|
+
(see below).
|
44
|
+
|
45
|
+
To generate a resume in Markdown using the provided template:
|
46
|
+
|
47
|
+
$ resme md [-o output_filename] file.yml ...
|
48
|
+
|
49
|
+
To generate a resume in the Europass XML format using the provided template:
|
50
|
+
|
51
|
+
$ resme europass [-o output_filename] file.yml ...
|
52
|
+
|
53
|
+
To generate a resume in the Json format (https://jsonresume.org/):
|
54
|
+
|
55
|
+
$ resme json [-o output_filename] file.yaml ...
|
56
|
+
|
57
|
+
Remarks:
|
58
|
+
|
59
|
+
* you can specify more than one YML file in input. This allows you to store
|
60
|
+
data about your resume in different files, if you like to do so (e.g., work
|
61
|
+
experiences could be in one file and talks in another). The YML files are
|
62
|
+
merged before processing them.
|
63
|
+
* the output filename is optional. If you do not specify one, the resume is
|
64
|
+
generated to `resume-YYYY.MM.DD.format`, where `YYYY-MM-DD` is today's date
|
65
|
+
and `format` is the chosen output format
|
66
|
+
|
67
|
+
## Dates in the resume
|
68
|
+
|
69
|
+
Enter dates in the resume in one of the following formats:
|
70
|
+
|
71
|
+
* Any format accepted by Ruby for a full date (year, month, day)
|
72
|
+
* YYYY-MM-DD
|
73
|
+
* YYYY-MM
|
74
|
+
* YYYY
|
75
|
+
|
76
|
+
The third and the forth format allows you to enter "partial" dates
|
77
|
+
(e.g., when the month or the day have been forgotten or are
|
78
|
+
irrelevant).
|
79
|
+
|
80
|
+
## Creating your own templates
|
81
|
+
|
82
|
+
The resumes are generated from the YML matter using ERB templates,
|
83
|
+
similar to what Jekyll and Middleman do with data files. (See,
|
84
|
+
e.g., [data files](https://middlemanapp.com/advanced/data-files/.)
|
85
|
+
You can define your own templates if you wish to do so.
|
86
|
+
|
87
|
+
All the data in the resume is made available in the `data` variable.
|
88
|
+
Thus, for instance, the following code snippets generates a list of
|
89
|
+
all the work experiences:
|
90
|
+
|
91
|
+
<% data.work each do |exp| %>
|
92
|
+
- <%= exp.who %>
|
93
|
+
From: <%= exp.from %> till: <%= exp.till %>
|
94
|
+
<% end %>
|
95
|
+
|
96
|
+
To specify your own ERB template use the option `-t`. Thus, for instance:
|
97
|
+
|
98
|
+
$ resme render -t template.md.erb [-o output_filename] file.yaml ...
|
99
|
+
|
100
|
+
uses `template.md.erb` to generate the resume.
|
101
|
+
|
102
|
+
Some functions can be used in the templates to better control the output.
|
103
|
+
|
104
|
+
String manipulation functions:
|
105
|
+
|
106
|
+
* `clean string` removes any space at the beginning of `string`
|
107
|
+
* `reflow string, n` makes `string` into an array of strings of
|
108
|
+
length lower or equal to `n` (useful if you are outputing a txt format,
|
109
|
+
for instance.
|
110
|
+
|
111
|
+
Dates manipulation functions:
|
112
|
+
|
113
|
+
* `year string`, `month string`, `day string` return, respectively the
|
114
|
+
year, month and day from strings in the format `YYYY-MM-DD`s
|
115
|
+
* `has_month input` returns true if `input` has a month, that is, it is
|
116
|
+
a date or it is in the form `YYYY-MM`
|
117
|
+
* `has_day input` returns true if `input` has a day, that is, it is
|
118
|
+
a date or it is in the form `YYYY-MM-DD`
|
119
|
+
|
120
|
+
You can find some templates in `lib/resme/templates`. These might be
|
121
|
+
good starting points if you want to develop your own.
|
122
|
+
|
123
|
+
## Contributing your templates
|
124
|
+
|
125
|
+
If you develop an output template and want to make it available,
|
126
|
+
please let me know, so that I can include it in future releases of
|
127
|
+
this gem.
|
128
|
+
|
129
|
+
## Development
|
130
|
+
|
131
|
+
After checking out the repo, run `bin/setup` to install
|
132
|
+
dependencies. You can also run `bin/console` for an interactive prompt
|
133
|
+
that will allow you to experiment.
|
134
|
+
|
135
|
+
To install this gem onto your local machine, run `bundle exec rake
|
136
|
+
install`. To release a new version, update the version number in
|
137
|
+
`version.rb`, and then run `bundle exec rake release`, which will
|
138
|
+
create a git tag for the version, push git commits and tags, and push
|
139
|
+
the `.gem` file to [rubygems.org](https://rubygems.org).
|
140
|
+
|
141
|
+
## Contributing
|
142
|
+
|
143
|
+
Bug reports and pull requests are welcome on GitHub at
|
144
|
+
https://github.com/avillafiorita/resme.
|
145
|
+
|
146
|
+
## License
|
147
|
+
|
148
|
+
The gem is available as open source under the terms of
|
149
|
+
the [MIT License](http://opensource.org/licenses/MIT).
|
150
|
+
|
151
|
+
## Roadmap
|
152
|
+
|
153
|
+
In `doc/todo.org` ... guess what is my preferred editor!
|
154
|
+
|
155
|
+
## Bugs
|
156
|
+
|
157
|
+
There are slight differences in the information outputted in the
|
158
|
+
various formats. For instance, gender and birthdate are used in the
|
159
|
+
Europass format, but not in the Markdown format. This is in part due
|
160
|
+
to the different standards and in part due to personal choices (here
|
161
|
+
"personal choices" could be also read "bug").
|
162
|
+
|
163
|
+
Entries are not sorted by date before outputting them. Make sure you
|
164
|
+
put them in the order you want them to appear in your resume.
|
165
|
+
|
166
|
+
Unkown number of unkown bugs.
|
167
|
+
|
168
|
+
## Release History
|
169
|
+
|
170
|
+
* **0.1** is th first release
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "resme"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/exe/resme
ADDED
data/lib/resme.rb
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'resme/version'
|
2
|
+
require 'readline'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'date'
|
5
|
+
require 'yaml'
|
6
|
+
require 'erb'
|
7
|
+
|
8
|
+
module Resme
|
9
|
+
module CommandSemantics
|
10
|
+
APPNAME = 'resme'
|
11
|
+
VERSION = Resme::VERSION
|
12
|
+
|
13
|
+
#
|
14
|
+
# Main App Starts Here!
|
15
|
+
#
|
16
|
+
def self.version opts = nil, argv = []
|
17
|
+
puts "#{APPNAME} version #{VERSION}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.man opts = nil, argv = []
|
21
|
+
path = File.join(File.dirname(__FILE__), "/../../../README.md")
|
22
|
+
file = File.open(path, "r")
|
23
|
+
contents = file.read
|
24
|
+
puts contents
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.help opts = nil, argv = []
|
28
|
+
all_commands = CommandSyntax.commands
|
29
|
+
|
30
|
+
if argv != []
|
31
|
+
argv.map { |x| puts all_commands[x.to_sym][2] }
|
32
|
+
else
|
33
|
+
puts "#{APPNAME} command [options] [args]"
|
34
|
+
puts ""
|
35
|
+
puts "Available commands:"
|
36
|
+
puts ""
|
37
|
+
all_commands.keys.each do |key|
|
38
|
+
puts " " + all_commands[key][0].banner
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.console opts, argv = []
|
44
|
+
all_commands = CommandSyntax.commands
|
45
|
+
all_commands.delete(:console)
|
46
|
+
|
47
|
+
i = 0
|
48
|
+
while true
|
49
|
+
string = Readline.readline("#{APPNAME}:%03d> " % i, true)
|
50
|
+
string.gsub!(/^#{APPNAME} /, "") # as a courtesy, remove any leading appname string
|
51
|
+
if string == "exit" or string == "quit" or string == "." then
|
52
|
+
exit 0
|
53
|
+
end
|
54
|
+
reps all_commands, string.split(' ')
|
55
|
+
i = i + 1
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# read-eval-print step
|
60
|
+
def self.reps all_commands, argv
|
61
|
+
if argv == [] or argv[0] == "--help" or argv[0] == "-h"
|
62
|
+
CommandSemantics.help
|
63
|
+
exit 0
|
64
|
+
else
|
65
|
+
command = argv[0]
|
66
|
+
syntax_and_semantics = all_commands[command.to_sym]
|
67
|
+
if syntax_and_semantics
|
68
|
+
opts = syntax_and_semantics[0]
|
69
|
+
function = syntax_and_semantics[1]
|
70
|
+
|
71
|
+
begin
|
72
|
+
parser = Slop::Parser.new(opts)
|
73
|
+
|
74
|
+
result = parser.parse(argv[1..-1])
|
75
|
+
options = result.to_hash
|
76
|
+
arguments = result.arguments
|
77
|
+
|
78
|
+
eval "CommandSemantics::#{function}(options, arguments)"
|
79
|
+
rescue Slop::Error => e
|
80
|
+
puts "#{APPNAME}: #{e}"
|
81
|
+
rescue Exception => e
|
82
|
+
puts e
|
83
|
+
end
|
84
|
+
else
|
85
|
+
puts "#{APPNAME}: '#{command}' is not a valid command. See '#{APPNAME} help'"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# APP SPECIFIC COMMANDS
|
92
|
+
#
|
93
|
+
def self.init opts, argv
|
94
|
+
output = opts[:output] || "resume.yml"
|
95
|
+
force = opts[:force]
|
96
|
+
template = File.join(File.dirname(__FILE__), "/../templates/resume.yml")
|
97
|
+
|
98
|
+
# avoid catastrophy
|
99
|
+
if File.exist?(output) and not force
|
100
|
+
puts "Error: file #{output} already exists. Use --force if you want to overwrite it"
|
101
|
+
else
|
102
|
+
content = File.read(template)
|
103
|
+
backup_and_write output, content
|
104
|
+
puts "YML resume template generated in #{output}"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.md opts, argv
|
109
|
+
output = opts[:output] || "resume-#{Date.today}.md"
|
110
|
+
template = File.join(File.dirname(__FILE__), "/../templates/resume.md.erb")
|
111
|
+
|
112
|
+
render argv, template, output
|
113
|
+
puts "Resume generated in #{output}"
|
114
|
+
end
|
115
|
+
|
116
|
+
def self.json opts, argv
|
117
|
+
output = opts[:output] || "resume-#{Date.today}.json"
|
118
|
+
template = File.join(File.dirname(__FILE__), "/../templates/resume.json.erb")
|
119
|
+
|
120
|
+
render argv, template, output
|
121
|
+
puts "Resume generated in #{output}"
|
122
|
+
end
|
123
|
+
|
124
|
+
def self.europass opts, argv
|
125
|
+
output = opts[:output] || "resume-#{Date.today}.xml"
|
126
|
+
template = File.join(File.dirname(__FILE__), "/../templates/europass/eu.xml.erb")
|
127
|
+
|
128
|
+
render argv, template, output
|
129
|
+
puts "Resume generated in #{output}"
|
130
|
+
puts "Render via, e.g., http://interop.europass.cedefop.europa.eu/web-services/remote-upload/"
|
131
|
+
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
def self.render yml_files, template_filename, output_filename
|
136
|
+
data = Hash.new
|
137
|
+
yml_files.each do |file|
|
138
|
+
data = data.merge(YAML.load_file(file))
|
139
|
+
end
|
140
|
+
template = File.read(template_filename)
|
141
|
+
output = ERB.new(template).result(binding)
|
142
|
+
backup_and_write output_filename, output
|
143
|
+
end
|
144
|
+
|
145
|
+
def self.backup filename
|
146
|
+
FileUtils::cp filename, filename + "~"
|
147
|
+
puts "Backup copy #{filename} created in #{filename}~."
|
148
|
+
end
|
149
|
+
|
150
|
+
def self.backup_and_write filename, content
|
151
|
+
backup(filename) if File.exist?(filename)
|
152
|
+
File.open(filename, "w") { |f| f.puts content }
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,192 @@
|
|
1
|
+
require 'slop'
|
2
|
+
|
3
|
+
module Resme
|
4
|
+
module CommandSyntax
|
5
|
+
# return a hash with all the commands and their options
|
6
|
+
def self.commands
|
7
|
+
h = Hash.new
|
8
|
+
self.methods.each do |method|
|
9
|
+
if method.to_s.include?("_opts") then
|
10
|
+
h = h.merge(eval(method.to_s))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
return h
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def self.version_opts
|
19
|
+
opts = Slop::Options.new
|
20
|
+
opts.banner = "version -- print version information"
|
21
|
+
help = <<EOS
|
22
|
+
NAME
|
23
|
+
#{opts.banner}
|
24
|
+
|
25
|
+
SYNOPSYS
|
26
|
+
#{opts.to_s}
|
27
|
+
|
28
|
+
DESCRIPTION
|
29
|
+
return version information
|
30
|
+
|
31
|
+
EXAMPLES
|
32
|
+
# resme version
|
33
|
+
resme version #{VERSION}
|
34
|
+
EOS
|
35
|
+
return { :version => [opts, :version, help] }
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.console_opts
|
39
|
+
opts = Slop::Options.new
|
40
|
+
opts.banner = "console [options] -- Enter the console"
|
41
|
+
help = <<EOS
|
42
|
+
NAME
|
43
|
+
#{opts.banner}
|
44
|
+
|
45
|
+
SYNOPSYS
|
46
|
+
#{opts.to_s}
|
47
|
+
|
48
|
+
DESCRIPTION
|
49
|
+
Invoke a console, from which you can more easily run
|
50
|
+
resme commands.
|
51
|
+
|
52
|
+
EXAMPLES
|
53
|
+
resme console
|
54
|
+
resme:000>
|
55
|
+
resme:001>
|
56
|
+
resme:002>
|
57
|
+
EOS
|
58
|
+
return { :console => [opts, :console, help] }
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.man_opts
|
62
|
+
opts = Slop::Options.new
|
63
|
+
opts.banner = "man -- print a manual page"
|
64
|
+
help = <<EOS
|
65
|
+
NAME
|
66
|
+
#{opts.banner}
|
67
|
+
|
68
|
+
SYNOPSYS
|
69
|
+
#{opts.to_s}
|
70
|
+
|
71
|
+
DESCRIPTION
|
72
|
+
Print the README file of this gem
|
73
|
+
|
74
|
+
EXAMPLES
|
75
|
+
resme man
|
76
|
+
EOS
|
77
|
+
return { :man => [opts, :man, help] }
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.help_opts
|
81
|
+
opts = Slop::Options.new
|
82
|
+
opts.banner = "help [command] -- print usage string"
|
83
|
+
help = <<EOS
|
84
|
+
NAME
|
85
|
+
#{opts.banner}
|
86
|
+
|
87
|
+
SYNOPSYS
|
88
|
+
#{opts.to_s}
|
89
|
+
|
90
|
+
DESCRIPTION
|
91
|
+
Print help about a command
|
92
|
+
|
93
|
+
EXAMPLES
|
94
|
+
resme help
|
95
|
+
resme help generate
|
96
|
+
EOS
|
97
|
+
return { :help => [opts, :help, help] }
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.init_opts
|
101
|
+
opts = Slop::Options.new
|
102
|
+
opts.banner = "init [-o output_filename]"
|
103
|
+
opts.string "-o", "--output", "Output filename"
|
104
|
+
opts.boolean "-f", "--force", "Overwrite existing file (if present)"
|
105
|
+
help = <<EOS
|
106
|
+
NAME
|
107
|
+
#{opts.banner}
|
108
|
+
|
109
|
+
SYNOPSYS
|
110
|
+
#{opts.to_s}
|
111
|
+
|
112
|
+
DESCRIPTION
|
113
|
+
|
114
|
+
Generate a YML template for your resume in the current directory.
|
115
|
+
|
116
|
+
EXAMPLES
|
117
|
+
|
118
|
+
resme init
|
119
|
+
resme -o r.yml
|
120
|
+
resme -o r.yml --force
|
121
|
+
EOS
|
122
|
+
return { init: [opts, :init, help] }
|
123
|
+
end
|
124
|
+
|
125
|
+
def self.md_opts
|
126
|
+
opts = Slop::Options.new
|
127
|
+
opts.banner = "md [-o output_filename] file.yml ..."
|
128
|
+
opts.string "-o", "--output", "Output filename"
|
129
|
+
help = <<EOS
|
130
|
+
NAME
|
131
|
+
#{opts.banner}
|
132
|
+
|
133
|
+
SYNOPSYS
|
134
|
+
#{opts.to_s}
|
135
|
+
|
136
|
+
DESCRIPTION
|
137
|
+
|
138
|
+
Generate a markdown resume from the YML input files.
|
139
|
+
|
140
|
+
EXAMPLES
|
141
|
+
|
142
|
+
resme md -o r.md resume.yml
|
143
|
+
EOS
|
144
|
+
return { md: [opts, :md, help] }
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.json_opts
|
148
|
+
opts = Slop::Options.new
|
149
|
+
opts.banner = "json [-o output_filename] file.yml ..."
|
150
|
+
opts.string "-o", "--output", "Output filename"
|
151
|
+
help = <<EOS
|
152
|
+
NAME
|
153
|
+
#{opts.banner}
|
154
|
+
|
155
|
+
SYNOPSYS
|
156
|
+
#{opts.to_s}
|
157
|
+
|
158
|
+
DESCRIPTION
|
159
|
+
|
160
|
+
Generate a JSON resume from the YML input files.
|
161
|
+
|
162
|
+
EXAMPLES
|
163
|
+
|
164
|
+
resme json -o r.md resume.yml
|
165
|
+
EOS
|
166
|
+
return { json: [opts, :json, help] }
|
167
|
+
end
|
168
|
+
|
169
|
+
def self.europass_opts
|
170
|
+
opts = Slop::Options.new
|
171
|
+
opts.banner = "europass [-o output_filename] file.yml ..."
|
172
|
+
opts.string "-o", "--output", "Output filename"
|
173
|
+
help = <<EOS
|
174
|
+
NAME
|
175
|
+
#{opts.banner}
|
176
|
+
|
177
|
+
SYNOPSYS
|
178
|
+
#{opts.to_s}
|
179
|
+
|
180
|
+
DESCRIPTION
|
181
|
+
|
182
|
+
Generate a Europass XML resume from the YML input files.
|
183
|
+
|
184
|
+
EXAMPLES
|
185
|
+
|
186
|
+
resme europass -o r.md resume.yml
|
187
|
+
EOS
|
188
|
+
return { europass: [opts, :europass, help] }
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
192
|
+
end
|