kamisaku 0.1.1 → 0.2.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 +4 -4
- data/CHANGELOG.md +24 -0
- data/Gemfile.lock +1 -1
- data/README.md +8 -2
- data/examples/{plain → paper}/john_doe.pdf +0 -0
- data/examples/sleek/john_doe.yml +157 -0
- data/lib/kamisaku/cv_generator.rb +8 -0
- data/lib/kamisaku/version.rb +1 -1
- data/lib/templates/{plain → paper}/template.html.erb +11 -4
- data/template.yml +59 -0
- metadata +6 -4
- /data/examples/{john_doe.yml → paper/john_doe.yml} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d645fc6767b17f9d9d44e95336bf7d962b5d4e997b9f336e9ea787a8fdef86dc
|
|
4
|
+
data.tar.gz: 78b4d15cfbe0a405f6b9fc10569449e8d30bda716225da87e2e93b6a0b74f2e6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2a2b50652ea5854526cb11de2f81d630fa5f059f5a92277d3873846eb5bcf9225e59092c23225773ca651b38eb642746a5a3dc03e9999db23506722477fcc575
|
|
7
|
+
data.tar.gz: ea7c2af4a32411ef9b469a4381fc62fa3ad8f4a5ab4b82a40baa3f163dd5910988fbd6d483f03b0b08c9a869e70d7e4dc3c0aec7b43610df3926826e8f693b9f
|
data/CHANGELOG.md
CHANGED
|
@@ -12,3 +12,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
12
12
|
### Changed
|
|
13
13
|
|
|
14
14
|
### Removed
|
|
15
|
+
|
|
16
|
+
## [0.2.0] - 2025-05-24
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- Soft removing metadata in generated PDF using `exiftool`
|
|
20
|
+
|
|
21
|
+
## [0.1.2] - 2025-05-24
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Update the paper template contact section so that the separator is not applied to the last item.
|
|
26
|
+
|
|
27
|
+
## [0.1.1] - 2025-05-24
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- Fix changelog URI in gemspec.
|
|
32
|
+
|
|
33
|
+
## [0.1.0] - 2025-05-24
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- Initial release.
|
|
38
|
+
- Support for two themes.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
*Build a CV PDF from a yaml text file.*
|
|
4
4
|
|
|
5
|
+
[](https://badge.fury.io/rb/kamisaku)
|
|
6
|
+
|
|
5
7
|

|
|
6
8
|
|
|
7
9
|
See [examples](/examples) directory for sample generated PDF files based of [templates](/lib/templates).
|
|
@@ -66,7 +68,9 @@ education:
|
|
|
66
68
|
achievements:
|
|
67
69
|
- # Things you have achieved or did
|
|
68
70
|
```
|
|
69
|
-
|
|
71
|
+
|
|
72
|
+
## Template
|
|
73
|
+
For a list of templates availble for CV generation, check the [examples](/examples) directory where each directory name is a template name.
|
|
70
74
|
|
|
71
75
|
## Installation
|
|
72
76
|
|
|
@@ -77,6 +81,8 @@ This is a Ruby gem. So you can either install as a gem or clone the repo and use
|
|
|
77
81
|
- Ensure that [Google Chrome](https://www.google.com/chrome/) is installed.
|
|
78
82
|
- Chrome must be accessible from the terminal as `google-chrome`.
|
|
79
83
|
- Kamisaku uses Chrome's [headless mode](https://developer.chrome.com/docs/chromium/headless/) to generate PDF files.
|
|
84
|
+
- Ensure `exiftool` is installed available in command line.
|
|
85
|
+
- exiftool is used to soft remove metadata added by chrome in the PDF file.
|
|
80
86
|
|
|
81
87
|
Add this line to your application's Gemfile:
|
|
82
88
|
|
|
@@ -100,7 +106,7 @@ $ gem install kamisaku
|
|
|
100
106
|
Once you have the YAML text file, feed it into the `bin/console` and specify the output location.
|
|
101
107
|
|
|
102
108
|
```bash
|
|
103
|
-
bin/console -c examples/john_doe.yml -o examples/
|
|
109
|
+
bin/console -c examples/paper/john_doe.yml -o examples/paper/john_doe.pdf -t paper
|
|
104
110
|
```
|
|
105
111
|
|
|
106
112
|
#### Bash options
|
|
Binary file
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
|
|
3
|
+
profile:
|
|
4
|
+
name: John Doe
|
|
5
|
+
title: Senior Software Engineer
|
|
6
|
+
about: >
|
|
7
|
+
Seasoned software engineer with more than a decade of experience
|
|
8
|
+
in designing and developing scalable web applications. Passionate
|
|
9
|
+
about building clean, maintainable code and driving best practices
|
|
10
|
+
in software development. Experienced in leading teams, mentoring
|
|
11
|
+
developers, and collaborating with cross-functional teams to deliver
|
|
12
|
+
high-quality solutions.
|
|
13
|
+
|
|
14
|
+
contact:
|
|
15
|
+
github: johndoe
|
|
16
|
+
mobile: +44 7912345678
|
|
17
|
+
website: https://johndoe.dev
|
|
18
|
+
email: john.doe@example.com
|
|
19
|
+
linkedin: john-doe
|
|
20
|
+
location:
|
|
21
|
+
country: United Kingdom
|
|
22
|
+
city: London
|
|
23
|
+
|
|
24
|
+
skills:
|
|
25
|
+
- area: Development
|
|
26
|
+
items:
|
|
27
|
+
- Python
|
|
28
|
+
- Django
|
|
29
|
+
- ReactJS
|
|
30
|
+
- TypeScript
|
|
31
|
+
- Node.js
|
|
32
|
+
- area: Database
|
|
33
|
+
items:
|
|
34
|
+
- PostgreSQL
|
|
35
|
+
- MySQL
|
|
36
|
+
- Redis
|
|
37
|
+
- area: Testing
|
|
38
|
+
items:
|
|
39
|
+
- PyTest
|
|
40
|
+
- Jest
|
|
41
|
+
- Cypress
|
|
42
|
+
- Selenium
|
|
43
|
+
- area: Version Control
|
|
44
|
+
items:
|
|
45
|
+
- Git
|
|
46
|
+
- GitHub
|
|
47
|
+
- GitLab
|
|
48
|
+
- area: Platforms/OS
|
|
49
|
+
items:
|
|
50
|
+
- AWS
|
|
51
|
+
- Google Cloud
|
|
52
|
+
- Linux
|
|
53
|
+
|
|
54
|
+
interests:
|
|
55
|
+
- Yoga
|
|
56
|
+
- Travelling
|
|
57
|
+
- Photography
|
|
58
|
+
- Hiking
|
|
59
|
+
- Chess
|
|
60
|
+
- Reading
|
|
61
|
+
- Cooking
|
|
62
|
+
- Gardening
|
|
63
|
+
- Running
|
|
64
|
+
- Fitness
|
|
65
|
+
- Volunteering
|
|
66
|
+
|
|
67
|
+
experiences:
|
|
68
|
+
- title: Senior Software Engineer
|
|
69
|
+
organisation: CloudCore Solutions
|
|
70
|
+
location:
|
|
71
|
+
city: London
|
|
72
|
+
country: United Kingdom
|
|
73
|
+
from:
|
|
74
|
+
month: 3
|
|
75
|
+
year: 2021
|
|
76
|
+
skills:
|
|
77
|
+
- Django
|
|
78
|
+
- React
|
|
79
|
+
- GraphQL
|
|
80
|
+
- AWS Lambda
|
|
81
|
+
- PostgreSQL
|
|
82
|
+
- Docker
|
|
83
|
+
- Terraform
|
|
84
|
+
achievements:
|
|
85
|
+
- >
|
|
86
|
+
Led the migration from a monolithic system to a microservices
|
|
87
|
+
architecture, significantly improving scalability and performance.
|
|
88
|
+
- >
|
|
89
|
+
Designed and implemented a serverless data processing pipeline
|
|
90
|
+
using AWS Lambda and S3, reducing operational costs by 30%.
|
|
91
|
+
- Established CI/CD workflows for automated deployments and testing.
|
|
92
|
+
|
|
93
|
+
- title: Lead Backend Engineer
|
|
94
|
+
organisation: FinEdge Technologies
|
|
95
|
+
location:
|
|
96
|
+
city: Manchester
|
|
97
|
+
country: United Kingdom
|
|
98
|
+
from:
|
|
99
|
+
month: 5
|
|
100
|
+
year: 2018
|
|
101
|
+
to:
|
|
102
|
+
month: 2
|
|
103
|
+
year: 2021
|
|
104
|
+
skills:
|
|
105
|
+
- Python
|
|
106
|
+
- FastAPI
|
|
107
|
+
- PostgreSQL
|
|
108
|
+
- Redis
|
|
109
|
+
- Kafka
|
|
110
|
+
- Kubernetes
|
|
111
|
+
- Jenkins
|
|
112
|
+
achievements:
|
|
113
|
+
- >
|
|
114
|
+
Spearheaded the development of a real-time financial analytics
|
|
115
|
+
platform, handling millions of transactions per second.
|
|
116
|
+
- >
|
|
117
|
+
Improved API response times by optimizing database queries and
|
|
118
|
+
implementing Redis caching.
|
|
119
|
+
- Led a team of backend engineers, conducting code reviews and
|
|
120
|
+
mentoring junior developers.
|
|
121
|
+
|
|
122
|
+
- title: Software Engineer
|
|
123
|
+
organisation: NextGen Media
|
|
124
|
+
location:
|
|
125
|
+
city: Birmingham
|
|
126
|
+
country: United Kingdom
|
|
127
|
+
from:
|
|
128
|
+
month: 7
|
|
129
|
+
year: 2015
|
|
130
|
+
to:
|
|
131
|
+
month: 4
|
|
132
|
+
year: 2018
|
|
133
|
+
skills:
|
|
134
|
+
- Node.js
|
|
135
|
+
- Express.js
|
|
136
|
+
- MongoDB
|
|
137
|
+
- WebSockets
|
|
138
|
+
- AWS
|
|
139
|
+
achievements:
|
|
140
|
+
- Developed a high-traffic video streaming platform, implementing
|
|
141
|
+
WebSockets for real-time interactions.
|
|
142
|
+
- Built a recommendation engine using machine learning models to
|
|
143
|
+
personalize user content.
|
|
144
|
+
- Automated deployment processes with AWS CodePipeline and Docker.
|
|
145
|
+
|
|
146
|
+
education:
|
|
147
|
+
- institute: Brighton Institute of Technology
|
|
148
|
+
location:
|
|
149
|
+
city: Brighton
|
|
150
|
+
country: United Kingdom
|
|
151
|
+
qualification: Bachelor of Science in Computer Science
|
|
152
|
+
field: Software Engineering
|
|
153
|
+
to:
|
|
154
|
+
month: 5
|
|
155
|
+
year: 2013
|
|
156
|
+
achievements:
|
|
157
|
+
- Awarded a scholarship for outstanding academic performance.
|
|
@@ -18,6 +18,7 @@ module Kamisaku
|
|
|
18
18
|
generated_html_file do |file_path|
|
|
19
19
|
FileUtils.cp(file_path, html_location) if html_location
|
|
20
20
|
html_file_to_pdf_file(file_path, pdf_location)
|
|
21
|
+
soft_remove_metadata_from_pdf_file(pdf_location)
|
|
21
22
|
end
|
|
22
23
|
end
|
|
23
24
|
|
|
@@ -35,6 +36,13 @@ module Kamisaku
|
|
|
35
36
|
raise "PDF generation failed" unless File.exist?(pdf_file_path)
|
|
36
37
|
end
|
|
37
38
|
|
|
39
|
+
def soft_remove_metadata_from_pdf_file(file_path)
|
|
40
|
+
command = <<~CMD
|
|
41
|
+
exiftool -all= #{file_path} -overwrite_original
|
|
42
|
+
CMD
|
|
43
|
+
system(command)
|
|
44
|
+
end
|
|
45
|
+
|
|
38
46
|
def generated_html_file
|
|
39
47
|
temp_html_file = Tempfile.new(%w[kamisaku .html])
|
|
40
48
|
temp_html_file.write(cv_html)
|
data/lib/kamisaku/version.rb
CHANGED
|
@@ -167,6 +167,10 @@
|
|
|
167
167
|
font-size: 16pt;
|
|
168
168
|
font-weight: 400;
|
|
169
169
|
font-family: "Garamond";
|
|
170
|
+
|
|
171
|
+
a:not(:last-child)::after {
|
|
172
|
+
content: " |";
|
|
173
|
+
}
|
|
170
174
|
}
|
|
171
175
|
}
|
|
172
176
|
|
|
@@ -286,20 +290,23 @@
|
|
|
286
290
|
<div class="name bottom-ruler"><%= dig :profile, :name %></div>
|
|
287
291
|
<div class="contact">
|
|
288
292
|
<% if has? :contact, :email %>
|
|
289
|
-
<a href="mailto:<%= dig :contact, :email %>"><%= dig :contact, :email %></a>
|
|
293
|
+
<a href="mailto:<%= dig :contact, :email %>"><%= dig :contact, :email %></a>
|
|
290
294
|
<% end %>
|
|
291
295
|
<% if has? :contact, :mobile %>
|
|
292
|
-
<a href="tel:<%= dig :contact, :mobile %>"><%= dig :contact, :mobile %></a>
|
|
296
|
+
<a href="tel:<%= dig :contact, :mobile %>"><%= dig :contact, :mobile %></a>
|
|
293
297
|
<% end %>
|
|
294
298
|
<% if has?(:contact, :location, :city) || has?(:contact, :location, :country) %>
|
|
295
|
-
<%= dig :contact, :location, :city %>, <%= dig :contact, :location, :country %>
|
|
299
|
+
<%= dig :contact, :location, :city %>, <%= dig :contact, :location, :country %>
|
|
296
300
|
<% end %>
|
|
297
301
|
<% if has? :contact, :website %>
|
|
298
|
-
<a href="<%= dig :contact, :website %>"><%= dig :contact, :website %></a>
|
|
302
|
+
<a href="<%= dig :contact, :website %>"><%= dig :contact, :website %></a>
|
|
299
303
|
<% end %>
|
|
300
304
|
<% if has? :contact, :github %>
|
|
301
305
|
<a href="https://github.com/<%= dig :contact, :github %>">github.com/<%= dig :contact, :github %></a>
|
|
302
306
|
<% end %>
|
|
307
|
+
<% if has? :contact, :linkedin %>
|
|
308
|
+
<a href="https://linkedin.com/in/<%= dig :contact, :linkedin %>">linkedin.com/in/<%= dig :contact, :linkedin %></a>
|
|
309
|
+
<% end %>
|
|
303
310
|
</div>
|
|
304
311
|
</div>
|
|
305
312
|
|
data/template.yml
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Template structure for CV. The content should be in YAML format.
|
|
2
|
+
# If you are not familiar with YAML, refer: https://devhints.io/yaml
|
|
3
|
+
# Some hints:
|
|
4
|
+
# - comments start with "#"
|
|
5
|
+
|
|
6
|
+
version: 1
|
|
7
|
+
profile:
|
|
8
|
+
name: # Your name
|
|
9
|
+
title: # Your current job title
|
|
10
|
+
about: # Some sleek details about your experience
|
|
11
|
+
|
|
12
|
+
contact:
|
|
13
|
+
github: # Github username
|
|
14
|
+
mobile: # Mobile number
|
|
15
|
+
email: # email address
|
|
16
|
+
linkedin: # Linkedin username
|
|
17
|
+
location:
|
|
18
|
+
country: # country name
|
|
19
|
+
city: # city name
|
|
20
|
+
|
|
21
|
+
skills:
|
|
22
|
+
- area: # specific skill area you are specialized in
|
|
23
|
+
items:
|
|
24
|
+
- # sub item such as a technology you have the skill in under the specialized area
|
|
25
|
+
|
|
26
|
+
experiences:
|
|
27
|
+
- title: # job title
|
|
28
|
+
organisation: # Name of the place you worked
|
|
29
|
+
location:
|
|
30
|
+
city: # city name
|
|
31
|
+
country: # country name
|
|
32
|
+
from:
|
|
33
|
+
month: # month integer number that you started
|
|
34
|
+
year: # year integer number that you started
|
|
35
|
+
# if following is not given, it is assumed you are still working
|
|
36
|
+
to:
|
|
37
|
+
month: # month integer number that you stopped
|
|
38
|
+
year: # year integer number that you stopped
|
|
39
|
+
skills:
|
|
40
|
+
- # a short name for a specialized skilled you gained
|
|
41
|
+
achievements:
|
|
42
|
+
- # Things you have achieved or did as a sentence. Consider reflecting the impact it made.
|
|
43
|
+
|
|
44
|
+
education:
|
|
45
|
+
- institute: # name of the place you studied
|
|
46
|
+
location:
|
|
47
|
+
city: # city name
|
|
48
|
+
country: # country name
|
|
49
|
+
qualification: # name of the degree/diploma qualification
|
|
50
|
+
field: # name of the field such as Computer Science
|
|
51
|
+
from:
|
|
52
|
+
month: # month integer number that you started
|
|
53
|
+
year: # year integer number that you started
|
|
54
|
+
# if following is not given, it is assumed you are still studying
|
|
55
|
+
to:
|
|
56
|
+
month: # month integer number that you stopped
|
|
57
|
+
year: # year integer number that you stopped
|
|
58
|
+
achievements:
|
|
59
|
+
- # Things you have achieved or did
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kamisaku
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sinaru Gunawardena
|
|
@@ -25,9 +25,10 @@ files:
|
|
|
25
25
|
- LICENSE.txt
|
|
26
26
|
- README.md
|
|
27
27
|
- Rakefile
|
|
28
|
-
- examples/john_doe.
|
|
29
|
-
- examples/
|
|
28
|
+
- examples/paper/john_doe.pdf
|
|
29
|
+
- examples/paper/john_doe.yml
|
|
30
30
|
- examples/sleek/john_doe.pdf
|
|
31
|
+
- examples/sleek/john_doe.yml
|
|
31
32
|
- kamisaku.png
|
|
32
33
|
- lib/kamisaku.rb
|
|
33
34
|
- lib/kamisaku/arg_parser.rb
|
|
@@ -41,9 +42,10 @@ files:
|
|
|
41
42
|
- lib/kamisaku/cv_generator.rb
|
|
42
43
|
- lib/kamisaku/meta_file_parser.rb
|
|
43
44
|
- lib/kamisaku/version.rb
|
|
44
|
-
- lib/templates/
|
|
45
|
+
- lib/templates/paper/template.html.erb
|
|
45
46
|
- lib/templates/sleek/template.html.erb
|
|
46
47
|
- sig/kamisaku.rbs
|
|
48
|
+
- template.yml
|
|
47
49
|
homepage: https://github.com/sinaru/kamisaku
|
|
48
50
|
licenses:
|
|
49
51
|
- MIT
|
|
File without changes
|