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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 507f3a1b5ae9e613a6d26a63d7cf1035b2cc042f43d03bfabab971eb7fc93256
4
- data.tar.gz: a7dee35db16af4ecd7db3a7ca6a5169698b2ca5ba2732a7f01d816d1cba5c80c
3
+ metadata.gz: d645fc6767b17f9d9d44e95336bf7d962b5d4e997b9f336e9ea787a8fdef86dc
4
+ data.tar.gz: 78b4d15cfbe0a405f6b9fc10569449e8d30bda716225da87e2e93b6a0b74f2e6
5
5
  SHA512:
6
- metadata.gz: 806c66f84059a485ce933442dd7f23395b2754f1674edb94902573fd8e33be9522e2ff113f01a4cf09ef98d8e88fa0a56e1f168edb20ce3666608e2729ff6eb3
7
- data.tar.gz: d5c7195770bc8c56ae2705a35af549a89d642a7661334f01ac82d704aba74e13b0a1746592dec422a51a22b151104324a48845fa7c4ae217656a343373db7a44
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kamisaku (0.1.0)
4
+ kamisaku (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  *Build a CV PDF from a yaml text file.*
4
4
 
5
+ [![Gem Version](https://badge.fury.io/rb/kamisaku.svg)](https://badge.fury.io/rb/kamisaku)
6
+
5
7
  ![Kamisaku](kamisaku.png)
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
- See [examples](/examples) directory for sample generated PDF files based of [templates](/lib/templates).
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/plain/john_doe.pdf -t plain
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
@@ -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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kamisaku
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -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.1.1
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.yml
29
- - examples/plain/john_doe.pdf
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/plain/template.html.erb
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