ppl 3.0.0 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (334) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +16 -0
  3. data/.eleventy.js +86 -0
  4. data/.eleventyignore +1 -0
  5. data/.github/workflows/build.yml +61 -0
  6. data/.gitignore +3 -1
  7. data/Rakefile +1 -18
  8. data/{CODE_OF_CONDUCT.md → code_of_conduct.md} +1 -1
  9. data/features/step_definitions/ppl_steps.rb +27 -27
  10. data/gh-pages/Gemfile +2 -0
  11. data/gh-pages/_config.yml +5 -0
  12. data/gh-pages/_includes/changelog.html +23 -0
  13. data/gh-pages/_includes/development-sidebar.html +25 -0
  14. data/gh-pages/_includes/footer.html +22 -0
  15. data/gh-pages/_includes/header.html +43 -0
  16. data/gh-pages/_includes/news.html +36 -0
  17. data/gh-pages/_includes/tip.html +54 -0
  18. data/gh-pages/_layouts/changelog.html +1 -0
  19. data/gh-pages/_layouts/command.html +104 -0
  20. data/gh-pages/_layouts/configuration.html +71 -0
  21. data/gh-pages/_layouts/development.html +20 -0
  22. data/gh-pages/_layouts/frontpage.html +6 -0
  23. data/gh-pages/_layouts/integration.html +44 -0
  24. data/gh-pages/_layouts/news.html +2 -0
  25. data/gh-pages/_layouts/page.html +6 -0
  26. data/gh-pages/_layouts/tip.html +2 -0
  27. data/gh-pages/_posts/2012-01-15-first-post.md +16 -0
  28. data/gh-pages/_posts/2012-12-20-1.0.0.md +19 -0
  29. data/gh-pages/_posts/2012-12-20-1.1.0.md +28 -0
  30. data/gh-pages/_posts/2012-12-20-1.2.0.md +18 -0
  31. data/gh-pages/_posts/2012-12-21-1.3.0.md +20 -0
  32. data/gh-pages/_posts/2012-12-21-thank-you-for-your-all-your-feedback.md +26 -0
  33. data/gh-pages/_posts/2012-12-22-1.4.1.md +21 -0
  34. data/gh-pages/_posts/2012-12-22-1.5.0.md +17 -0
  35. data/gh-pages/_posts/2012-12-23-1.5.1.md +13 -0
  36. data/gh-pages/_posts/2012-12-23-1.5.2.md +15 -0
  37. data/gh-pages/_posts/2012-12-26-1.5.3.md +19 -0
  38. data/gh-pages/_posts/2012-12-27-1.6.0.md +18 -0
  39. data/gh-pages/_posts/2012-12-29-1.7.0.md +18 -0
  40. data/gh-pages/_posts/2013-01-05-1.8.0.md +18 -0
  41. data/gh-pages/_posts/2013-01-06-1.9.0.md +20 -0
  42. data/gh-pages/_posts/2013-01-10-1.10.0.md +18 -0
  43. data/gh-pages/_posts/2013-01-20-1.11.0.md +14 -0
  44. data/gh-pages/_posts/2013-02-16-1.12.0.md +14 -0
  45. data/gh-pages/_posts/2013-02-17-1.13.0.md +29 -0
  46. data/gh-pages/_posts/2013-02-17-1.14.0.md +15 -0
  47. data/gh-pages/_posts/2013-02-17-1.14.1.md +18 -0
  48. data/gh-pages/_posts/2013-02-17-two-months-in.md +27 -0
  49. data/gh-pages/_posts/2013-03-16-1.15.0.md +28 -0
  50. data/gh-pages/_posts/2013-03-16-coloured-output-released.md +27 -0
  51. data/gh-pages/_posts/2013-04-10-ruby-2.0-compatibility.md +28 -0
  52. data/gh-pages/_posts/2013-04-11-1.15.1.md +13 -0
  53. data/gh-pages/_posts/2013-04-12-1.16.0.md +22 -0
  54. data/gh-pages/_posts/2013-04-14-1.17.0.md +15 -0
  55. data/gh-pages/_posts/2013-04-14-1.17.1.md +20 -0
  56. data/gh-pages/_posts/2013-04-14-1.17.2.md +13 -0
  57. data/gh-pages/_posts/2013-04-15-sync-alias.md +31 -0
  58. data/gh-pages/_posts/2013-04-15-utf8-fixed-and-more.md +37 -0
  59. data/gh-pages/_posts/2013-04-16-1.18.0.md +15 -0
  60. data/gh-pages/_posts/2013-04-16-set-up-color-output.md +47 -0
  61. data/gh-pages/_posts/2013-04-19-1.19.0.md +13 -0
  62. data/gh-pages/_posts/2013-04-19-1.20.0.md +15 -0
  63. data/gh-pages/_posts/2013-04-20-1.21.0.md +16 -0
  64. data/gh-pages/_posts/2013-04-20-1.22.0.md +14 -0
  65. data/gh-pages/_posts/2013-04-20-1.22.1.md +13 -0
  66. data/gh-pages/_posts/2013-04-21-1.22.2.md +15 -0
  67. data/gh-pages/_posts/2013-04-21-1.23.0.md +35 -0
  68. data/gh-pages/_posts/2013-04-23-1.24.0.md +16 -0
  69. data/gh-pages/_posts/2013-04-24-1.25.0.md +21 -0
  70. data/gh-pages/_posts/2013-05-09-2.0.0.md +33 -0
  71. data/gh-pages/_posts/2013-05-09-version-2.0.0-released.md +32 -0
  72. data/gh-pages/_posts/2013-07-20-2.1.0.md +36 -0
  73. data/gh-pages/_posts/2013-07-20-2.2.0.md +20 -0
  74. data/gh-pages/_posts/2013-10-12-2.3.0.md +19 -0
  75. data/gh-pages/_posts/2014-03-30-2.3.1.md +25 -0
  76. data/gh-pages/_posts/2015-01-05-2.3.2.md +18 -0
  77. data/gh-pages/_posts/2015-12-03-get-involved.md +29 -0
  78. data/gh-pages/_posts/2015-12-05-2.3.3.md +16 -0
  79. data/gh-pages/_posts/2016-01-02-2.4.0.md +19 -0
  80. data/gh-pages/_posts/2017-05-01-2.4.1.md +12 -0
  81. data/gh-pages/_posts/2017-10-23-sleep-mode.md +18 -0
  82. data/gh-pages/_posts/2018-01-03-3.0.1.md +12 -0
  83. data/gh-pages/_stylesheets/ppl/color.less +119 -0
  84. data/gh-pages/_stylesheets/ppl/layout.less +54 -0
  85. data/gh-pages/_stylesheets/ppl/style.less +185 -0
  86. data/gh-pages/_stylesheets/ppl/typography.less +59 -0
  87. data/gh-pages/development/changelog/index.md +18 -0
  88. data/gh-pages/development/changelog/split.rb +51 -0
  89. data/gh-pages/development/index.html +32 -0
  90. data/gh-pages/development/roadmap/index.md +15 -0
  91. data/gh-pages/documentation/about/index.html +63 -0
  92. data/gh-pages/documentation/commands/add/index.md +43 -0
  93. data/gh-pages/documentation/commands/age/add/index.md +40 -0
  94. data/gh-pages/documentation/commands/age/index.md +38 -0
  95. data/gh-pages/documentation/commands/bday/index.md +44 -0
  96. data/gh-pages/documentation/commands/completion/index.md +38 -0
  97. data/gh-pages/documentation/commands/email/index.md +64 -0
  98. data/gh-pages/documentation/commands/grep/index.md +32 -0
  99. data/gh-pages/documentation/commands/init/index.md +28 -0
  100. data/gh-pages/documentation/commands/ls/index.md +55 -0
  101. data/gh-pages/documentation/commands/mutt/index.md +36 -0
  102. data/gh-pages/documentation/commands/mv/index.md +26 -0
  103. data/gh-pages/documentation/commands/name/index.md +45 -0
  104. data/gh-pages/documentation/commands/nick/index.md +44 -0
  105. data/gh-pages/documentation/commands/org/index.md +45 -0
  106. data/gh-pages/documentation/commands/phone/index.md +56 -0
  107. data/gh-pages/documentation/commands/post/index.md +61 -0
  108. data/gh-pages/documentation/commands/pull/index.md +39 -0
  109. data/gh-pages/documentation/commands/push/index.md +36 -0
  110. data/gh-pages/documentation/commands/remote/index.md +40 -0
  111. data/gh-pages/documentation/commands/rm/index.md +23 -0
  112. data/gh-pages/documentation/commands/scrape/index.md +38 -0
  113. data/gh-pages/documentation/commands/shell/index.md +39 -0
  114. data/gh-pages/documentation/commands/show/index.md +33 -0
  115. data/gh-pages/documentation/commands/url/index.md +44 -0
  116. data/gh-pages/documentation/commands/version/index.md +27 -0
  117. data/gh-pages/documentation/configuration/address_book/index.md +22 -0
  118. data/gh-pages/documentation/configuration/alias/index.md +45 -0
  119. data/gh-pages/documentation/configuration/color/index.md +47 -0
  120. data/gh-pages/documentation/configuration/color_age/index.md +20 -0
  121. data/gh-pages/documentation/configuration/color_bday/index.md +20 -0
  122. data/gh-pages/documentation/configuration/color_email/index.md +21 -0
  123. data/gh-pages/documentation/configuration/color_ls/index.md +21 -0
  124. data/gh-pages/documentation/configuration/color_name/index.md +20 -0
  125. data/gh-pages/documentation/configuration/color_nick/index.md +20 -0
  126. data/gh-pages/documentation/configuration/color_org/index.md +20 -0
  127. data/gh-pages/documentation/configuration/color_phone/index.md +22 -0
  128. data/gh-pages/documentation/configuration/color_post/index.md +20 -0
  129. data/gh-pages/documentation/configuration/color_url/index.md +20 -0
  130. data/gh-pages/documentation/configuration/index.html +8 -0
  131. data/gh-pages/documentation/index.html +183 -0
  132. data/gh-pages/documentation/integration/bash/index.md +23 -0
  133. data/gh-pages/documentation/integration/google/index.md +26 -0
  134. data/gh-pages/documentation/integration/index.html +8 -0
  135. data/gh-pages/documentation/integration/mutt/index.md +35 -0
  136. data/gh-pages/documentation/integration/zsh/index.md +19 -0
  137. data/gh-pages/documentation/quick-start/index.html +88 -0
  138. data/gh-pages/documentation/tips/index.html +9 -0
  139. data/gh-pages/index.html +108 -0
  140. data/gh-pages/news/index.html +9 -0
  141. data/gh-pages/robots.txt +3 -0
  142. data/gh-pages/stylesheets/flatstrap.css +10 -0
  143. data/gh-pages/stylesheets/ppl.scss +235 -0
  144. data/gh-pages/wiki.png +0 -0
  145. data/lib/ppl.rb +4 -1
  146. data/lib/ppl/adapter/color.rb +0 -1
  147. data/lib/ppl/adapter/color/colored.rb +0 -1
  148. data/lib/ppl/adapter/email_scraper.rb +0 -1
  149. data/lib/ppl/adapter/email_scraper/mail.rb +4 -5
  150. data/lib/ppl/adapter/storage.rb +0 -1
  151. data/lib/ppl/adapter/storage/disk.rb +0 -1
  152. data/lib/ppl/adapter/storage/factory.rb +0 -1
  153. data/lib/ppl/adapter/vcard.rb +0 -1
  154. data/lib/ppl/adapter/vcard/vpim.rb +5 -1
  155. data/lib/ppl/application/bootstrap.rb +0 -1
  156. data/lib/ppl/application/command.rb +0 -1
  157. data/lib/ppl/application/command_suite.rb +0 -1
  158. data/lib/ppl/application/configuration.rb +0 -1
  159. data/lib/ppl/application/input.rb +0 -1
  160. data/lib/ppl/application/output.rb +0 -1
  161. data/lib/ppl/application/router.rb +0 -1
  162. data/lib/ppl/application/shell.rb +0 -1
  163. data/lib/ppl/command/add.rb +0 -1
  164. data/lib/ppl/command/age.rb +0 -1
  165. data/lib/ppl/command/attribute.rb +0 -1
  166. data/lib/ppl/command/bday.rb +0 -1
  167. data/lib/ppl/command/completion.rb +0 -1
  168. data/lib/ppl/command/email.rb +0 -1
  169. data/lib/ppl/command/external.rb +0 -1
  170. data/lib/ppl/command/help.rb +0 -1
  171. data/lib/ppl/command/init.rb +0 -1
  172. data/lib/ppl/command/ls.rb +0 -1
  173. data/lib/ppl/command/mutt.rb +0 -1
  174. data/lib/ppl/command/mv.rb +0 -1
  175. data/lib/ppl/command/name.rb +0 -1
  176. data/lib/ppl/command/nick.rb +0 -1
  177. data/lib/ppl/command/org.rb +0 -1
  178. data/lib/ppl/command/phone.rb +0 -1
  179. data/lib/ppl/command/post.rb +0 -1
  180. data/lib/ppl/command/rm.rb +0 -1
  181. data/lib/ppl/command/scrape.rb +0 -1
  182. data/lib/ppl/command/shell.rb +0 -1
  183. data/lib/ppl/command/show.rb +0 -1
  184. data/lib/ppl/command/url.rb +0 -1
  185. data/lib/ppl/command/version.rb +0 -1
  186. data/lib/ppl/entity/address_book.rb +0 -1
  187. data/lib/ppl/entity/contact.rb +0 -1
  188. data/lib/ppl/entity/email_address.rb +0 -1
  189. data/lib/ppl/entity/name.rb +0 -1
  190. data/lib/ppl/entity/phone_number.rb +0 -1
  191. data/lib/ppl/entity/postal_address.rb +0 -1
  192. data/lib/ppl/error/completion_not_found.rb +0 -1
  193. data/lib/ppl/error/contact_not_found.rb +0 -1
  194. data/lib/ppl/error/incorrect_usage.rb +0 -1
  195. data/lib/ppl/error/invalid_vcard.rb +1 -0
  196. data/lib/ppl/error/postal_address_not_found.rb +0 -1
  197. data/lib/ppl/format/address_book.rb +0 -1
  198. data/lib/ppl/format/address_book/ages.rb +0 -1
  199. data/lib/ppl/format/address_book/birthdays.rb +0 -1
  200. data/lib/ppl/format/address_book/email_addresses.rb +0 -1
  201. data/lib/ppl/format/address_book/mutt_query.rb +0 -1
  202. data/lib/ppl/format/address_book/names.rb +0 -1
  203. data/lib/ppl/format/address_book/nicknames.rb +0 -1
  204. data/lib/ppl/format/address_book/one_line.rb +0 -1
  205. data/lib/ppl/format/address_book/organizations.rb +0 -1
  206. data/lib/ppl/format/address_book/phone_numbers.rb +0 -1
  207. data/lib/ppl/format/address_book/postal_addresses.rb +0 -1
  208. data/lib/ppl/format/address_book/urls.rb +0 -1
  209. data/lib/ppl/format/contact.rb +0 -1
  210. data/lib/ppl/format/contact/age.rb +0 -1
  211. data/lib/ppl/format/contact/birthday.rb +0 -1
  212. data/lib/ppl/format/contact/email_addresses.rb +0 -1
  213. data/lib/ppl/format/contact/full.rb +0 -1
  214. data/lib/ppl/format/contact/nicknames.rb +0 -1
  215. data/lib/ppl/format/contact/organization.rb +0 -1
  216. data/lib/ppl/format/contact/phone_number.rb +0 -1
  217. data/lib/ppl/format/contact/postal_address.rb +0 -1
  218. data/lib/ppl/format/contact/postal_addresses.rb +0 -1
  219. data/lib/ppl/format/contact/urls.rb +0 -1
  220. data/lib/ppl/format/custom.rb +0 -1
  221. data/lib/ppl/format/custom/contact.rb +0 -1
  222. data/lib/ppl/format/custom/email_address.rb +0 -1
  223. data/lib/ppl/format/custom/phone_number.rb +0 -1
  224. data/lib/ppl/format/name.rb +0 -1
  225. data/lib/ppl/format/name/full_only.rb +0 -1
  226. data/lib/ppl/format/postal_address.rb +0 -1
  227. data/lib/ppl/format/postal_address/multi_line.rb +0 -1
  228. data/lib/ppl/format/postal_address/one_line.rb +0 -1
  229. data/lib/ppl/format/table.rb +0 -1
  230. data/lib/ppl/service/email_address.rb +0 -1
  231. data/lib/ppl/service/name.rb +0 -1
  232. data/lib/ppl/service/phone_number.rb +0 -1
  233. data/lib/ppl/service/postal_address.rb +0 -1
  234. data/{LICENSE → license} +0 -0
  235. data/makefile +18 -0
  236. data/package.json +23 -0
  237. data/ppl.gemspec +15 -13
  238. data/{README.md → readme.md} +12 -9
  239. data/site/_data/url.js +4 -0
  240. data/site/casts/hero.cast +189 -0
  241. data/site/development.njk +6 -0
  242. data/site/documentation.njk +6 -0
  243. data/site/index.njk +75 -0
  244. data/site/news.njk +6 -0
  245. data/site/style.scss +140 -0
  246. data/spec/ppl/adapter/color/colored_spec.rb +3 -4
  247. data/spec/ppl/adapter/color_spec.rb +0 -1
  248. data/spec/ppl/adapter/email_scraper/mail_spec.rb +13 -13
  249. data/spec/ppl/adapter/email_scraper_spec.rb +0 -1
  250. data/spec/ppl/adapter/output_spec.rb +7 -8
  251. data/spec/ppl/adapter/storage/disk_spec.rb +18 -19
  252. data/spec/ppl/adapter/storage/factory_spec.rb +3 -4
  253. data/spec/ppl/adapter/storage/git_spec.rb +31 -32
  254. data/spec/ppl/adapter/storage_spec.rb +3 -4
  255. data/spec/ppl/adapter/vcard/greencard_spec.rb +45 -45
  256. data/spec/ppl/adapter/vcard_spec.rb +0 -1
  257. data/spec/ppl/application/bootstrap_spec.rb +128 -129
  258. data/spec/ppl/application/command_spec.rb +8 -9
  259. data/spec/ppl/application/command_suite_spec.rb +7 -8
  260. data/spec/ppl/application/configuration_spec.rb +16 -17
  261. data/spec/ppl/application/input_spec.rb +2 -3
  262. data/spec/ppl/application/router_spec.rb +8 -9
  263. data/spec/ppl/application/shell_spec.rb +39 -40
  264. data/spec/ppl/command/add_spec.rb +6 -7
  265. data/spec/ppl/command/age_spec.rb +7 -8
  266. data/spec/ppl/command/attribute_spec.rb +22 -23
  267. data/spec/ppl/command/bday_spec.rb +11 -12
  268. data/spec/ppl/command/completion_spec.rb +7 -8
  269. data/spec/ppl/command/email_spec.rb +19 -20
  270. data/spec/ppl/command/external_spec.rb +7 -8
  271. data/spec/ppl/command/help_spec.rb +15 -16
  272. data/spec/ppl/command/init_spec.rb +5 -6
  273. data/spec/ppl/command/ls_spec.rb +12 -13
  274. data/spec/ppl/command/mutt_spec.rb +33 -34
  275. data/spec/ppl/command/mv_spec.rb +11 -12
  276. data/spec/ppl/command/name_spec.rb +17 -18
  277. data/spec/ppl/command/nick_spec.rb +1 -2
  278. data/spec/ppl/command/org_spec.rb +1 -2
  279. data/spec/ppl/command/phone_spec.rb +15 -16
  280. data/spec/ppl/command/post_spec.rb +29 -30
  281. data/spec/ppl/command/rm_spec.rb +3 -4
  282. data/spec/ppl/command/scrape_spec.rb +24 -25
  283. data/spec/ppl/command/shell_spec.rb +41 -42
  284. data/spec/ppl/command/show_spec.rb +4 -5
  285. data/spec/ppl/command/url_spec.rb +1 -2
  286. data/spec/ppl/command/version_spec.rb +4 -5
  287. data/spec/ppl/entity/address_book_spec.rb +1 -2
  288. data/spec/ppl/entity/contact_spec.rb +16 -17
  289. data/spec/ppl/entity/email_address_spec.rb +3 -4
  290. data/spec/ppl/entity/name_spec.rb +1 -2
  291. data/spec/ppl/entity/phone_number_spec.rb +5 -6
  292. data/spec/ppl/entity/postal_address_spec.rb +2 -3
  293. data/spec/ppl/format/address_book/ages_spec.rb +3 -4
  294. data/spec/ppl/format/address_book/birthdays_spec.rb +3 -4
  295. data/spec/ppl/format/address_book/email_addresses_spec.rb +3 -4
  296. data/spec/ppl/format/address_book/mutt_query_spec.rb +3 -4
  297. data/spec/ppl/format/address_book/names_spec.rb +3 -4
  298. data/spec/ppl/format/address_book/nicknames_spec.rb +4 -5
  299. data/spec/ppl/format/address_book/one_line_spec.rb +5 -6
  300. data/spec/ppl/format/address_book/organizations_spec.rb +3 -4
  301. data/spec/ppl/format/address_book/phone_numbers_spec.rb +3 -4
  302. data/spec/ppl/format/address_book/postal_addresses_spec.rb +2 -3
  303. data/spec/ppl/format/address_book/urls_spec.rb +3 -4
  304. data/spec/ppl/format/address_book_spec.rb +0 -1
  305. data/spec/ppl/format/contact/age_spec.rb +8 -9
  306. data/spec/ppl/format/contact/birthday_spec.rb +4 -5
  307. data/spec/ppl/format/contact/email_addresses_spec.rb +3 -4
  308. data/spec/ppl/format/contact/full_spec.rb +11 -12
  309. data/spec/ppl/format/contact/nicknames_spec.rb +4 -5
  310. data/spec/ppl/format/contact/organization_spec.rb +4 -5
  311. data/spec/ppl/format/contact/phone_number_spec.rb +4 -5
  312. data/spec/ppl/format/contact/postal_address_spec.rb +1 -2
  313. data/spec/ppl/format/contact/postal_addresses_spec.rb +3 -4
  314. data/spec/ppl/format/contact/urls_spec.rb +4 -5
  315. data/spec/ppl/format/contact_spec.rb +0 -1
  316. data/spec/ppl/format/custom/contact_spec.rb +13 -14
  317. data/spec/ppl/format/custom/email_address_spec.rb +3 -4
  318. data/spec/ppl/format/custom/phone_number_spec.rb +4 -5
  319. data/spec/ppl/format/custom_spec.rb +6 -7
  320. data/spec/ppl/format/name/full_only_spec.rb +4 -5
  321. data/spec/ppl/format/name_spec.rb +0 -1
  322. data/spec/ppl/format/postal_address/multi_line_spec.rb +10 -11
  323. data/spec/ppl/format/postal_address/one_line_spec.rb +9 -10
  324. data/spec/ppl/format/postal_address_spec.rb +0 -1
  325. data/spec/ppl/format/table_spec.rb +11 -11
  326. data/spec/ppl/service/email_address_spec.rb +13 -14
  327. data/spec/ppl/service/name_spec.rb +9 -10
  328. data/spec/ppl/service/phone_number_spec.rb +11 -12
  329. data/spec/ppl/service/postal_address_spec.rb +20 -21
  330. data/spec/spec_helper.rb +4 -0
  331. data/yarn.lock +3605 -0
  332. metadata +183 -22
  333. data/.travis.yml +0 -11
  334. data/COPYING +0 -339
data/ppl.gemspec CHANGED
@@ -1,34 +1,36 @@
1
1
  Gem::Specification.new do |spec|
2
2
 
3
- spec.name = "ppl"
4
- spec.version = "3.0.0"
5
- spec.date = "2017-10-23"
3
+ spec.name = "ppl"
4
+ spec.version = "4.0.3"
5
+ spec.date = "2021-04-02"
6
6
 
7
- spec.required_ruby_version = ">= 1.9.3"
7
+ spec.required_ruby_version = ">= 3.0.0"
8
8
 
9
- spec.summary = "The command line address book"
9
+ spec.summary = "The command line address book"
10
10
  spec.description = "ppl is a command-line address book using vCard & git for storage and synchronisation"
11
- spec.license = "GPL-2"
11
+ spec.license = "MIT"
12
12
 
13
13
  spec.add_dependency("colored", "1.2")
14
- spec.add_dependency("inifile", "2.0.2")
15
- spec.add_dependency("mail", "2.5.3")
14
+ spec.add_dependency("inifile", "3.0.0")
15
+ spec.add_dependency("mail", "2.7.1")
16
16
  spec.add_dependency("morphine", "0.1.1")
17
- spec.add_dependency("rugged", "~> 0.24.0")
17
+ spec.add_dependency("rugged", "1.1.0")
18
18
  spec.add_dependency("vpim", "13.11.11")
19
19
 
20
20
  spec.add_development_dependency("cucumber")
21
+ spec.add_development_dependency("pry")
21
22
  spec.add_development_dependency("rspec")
22
23
  spec.add_development_dependency("rake")
23
24
  spec.add_development_dependency("fakefs")
24
25
 
25
- spec.authors = ["Henry Smith"]
26
- spec.email = "henry@henrysmith.org"
26
+ spec.authors = ["Henry Catalini Smith"]
27
+ spec.email = "hen@hey.com"
27
28
 
28
29
  spec.executables = "ppl"
29
30
 
30
- spec.files = `git ls-files`.split("\n")
31
+ spec.files = `git ls-files`.split("\n")
31
32
  spec.require_path = "lib"
32
- spec.homepage = "http://ppladdressbook.org"
33
+ spec.homepage = "https://github.com/hendotcat/ppl"
33
34
 
34
35
  end
36
+
@@ -4,22 +4,24 @@
4
4
  |__| |__| |_____|
5
5
 
6
6
 
7
- [ppl](http://ppladdressbook.org) aims to be address book software for
8
- command-line users. It's pronounced like "people". You might be interested in
9
- ppl if:
7
+ ppl aims to be address book software for command-line users. It's pronounced
8
+ like "people". You might be interested in ppl if:
10
9
 
11
10
  * You like using the command-line
12
11
  * You want ownership of your address book data back from the cloud
13
12
  * You prefer to keep your data stored in an open format
14
13
 
15
- [![Build Status](https://travis-ci.org/ppladdressbook/ppl.svg?branch=2.3.3)](https://travis-ci.org/ppladdressbook/ppl)
16
- [![Code Climate](https://codeclimate.com/github/ppladdressbook/ppl/badges/gpa.svg)](https://codeclimate.com/github/ppladdressbook/ppl)
14
+ <a href="https://github.com/hendotcat/ppl/actions/workflows/build.yml">
15
+ <img
16
+ alt="Build status"
17
+ src="https://github.com/hendotcat/ppl/actions/workflows/build.yml/badge.svg"
18
+ />
19
+ </a>
17
20
 
18
- Installation
19
21
  ------------
20
22
 
21
23
  ```bash
22
- $ sudo gem install ppl
24
+ $ gem install ppl
23
25
  ```
24
26
 
25
27
  Usage
@@ -75,9 +77,9 @@ Contributing
75
77
  ------------
76
78
 
77
79
  Bug reports, fixes, and additional features are encouraged. The project uses
78
- [Github issues](https://github.com/hnrysmth/ppl/issues) to track bug reports.
80
+ [Github issues](https://github.com/hendotcat/ppl/issues) to track bug reports.
79
81
 
80
- Everyone interacting in ppl’s codebases, issue trackers etc is expected to follow the [code of conduct](https://github.com/ppladdressbook/ppl/blob/master/CODE_OF_CONDUCT.md).
82
+ Everyone interacting in ppl’s codebases, issue trackers etc is expected to follow the [code of conduct](https://github.com/hendotcat/ppl/blob/trunk/code_of_conduct.md).
81
83
 
82
84
  License
83
85
  -------
@@ -85,3 +87,4 @@ License
85
87
  ppl is released under the [MIT License].
86
88
 
87
89
  [MIT License]: http://www.opensource.org/licenses/MIT
90
+
data/site/_data/url.js ADDED
@@ -0,0 +1,4 @@
1
+ module.exports = process.env.GITHUB_ACTIONS
2
+ ? "https://hen.cat/ppl"
3
+ : ""
4
+
@@ -0,0 +1,189 @@
1
+ {"version": 2, "width": 67, "height": 20, "timestamp": 1617475887, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
2
+ [0.022404, "o", "\u001b[?1034h$ "]
3
+ [0.143601, "o", "\u001b[H\u001b[2J$ "]
4
+ [0.855827, "o", "p"]
5
+ [0.994948, "o", "p"]
6
+ [1.024583, "o", "l"]
7
+ [1.144753, "o", " "]
8
+ [1.246416, "o", "i"]
9
+ [1.274999, "o", "n"]
10
+ [1.40282, "o", "i"]
11
+ [1.506733, "o", "t"]
12
+ [1.590055, "o", " "]
13
+ [1.740583, "o", "c"]
14
+ [1.796451, "o", "o"]
15
+ [1.836608, "o", "n"]
16
+ [1.933692, "o", "t"]
17
+ [2.116569, "o", "a"]
18
+ [2.282556, "o", "c"]
19
+ [2.444916, "o", "t"]
20
+ [2.608654, "o", "s"]
21
+ [2.72387, "o", "\r\n"]
22
+ [3.82721, "o", "$ "]
23
+ [4.953388, "o", "c"]
24
+ [5.013487, "o", "d"]
25
+ [5.121529, "o", " "]
26
+ [5.206338, "o", "c"]
27
+ [5.327298, "o", "o"]
28
+ [5.343115, "o", "n"]
29
+ [5.427276, "o", "t"]
30
+ [5.593647, "o", "a"]
31
+ [5.695478, "o", "c"]
32
+ [5.892517, "o", "t"]
33
+ [6.061918, "o", "s"]
34
+ [6.167732, "o", "\r\n"]
35
+ [6.168801, "o", "$ "]
36
+ [7.036513, "o", "p"]
37
+ [7.174764, "o", "p"]
38
+ [7.218565, "o", "l"]
39
+ [7.337711, "o", " "]
40
+ [7.495551, "o", "a"]
41
+ [7.564116, "o", "d"]
42
+ [7.716513, "o", "d"]
43
+ [7.805091, "o", " "]
44
+ [7.986316, "o", "p"]
45
+ [8.048534, "o", "i"]
46
+ [8.35928, "o", "p"]
47
+ [8.498522, "o", "p"]
48
+ [8.586445, "o", "i"]
49
+ [8.72882, "o", " "]
50
+ [8.936575, "o", "\""]
51
+ [9.280333, "o", "P"]
52
+ [9.525508, "o", "i"]
53
+ [9.762522, "o", "p"]
54
+ [9.887212, "o", "p"]
55
+ [10.105491, "o", "i"]
56
+ [10.216623, "o", " "]
57
+ [10.651046, "o", "L"]
58
+ [10.936587, "o", "å"]
59
+ [11.254346, "o", "n"]
60
+ [11.404346, "o", "g"]
61
+ [11.625528, "o", "s"]
62
+ [11.787552, "o", "t"]
63
+ [11.81952, "o", "r"]
64
+ [11.940004, "o", "u"]
65
+ [12.164137, "o", "m"]
66
+ [12.200539, "o", "p"]
67
+ [12.540324, "o", "\""]
68
+ [12.821759, "o", "\r\n"]
69
+ [13.474599, "o", "$ "]
70
+ [14.049401, "o", "p"]
71
+ [14.203211, "o", "p"]
72
+ [14.247452, "o", "l"]
73
+ [14.378448, "o", " "]
74
+ [15.449555, "o", "p"]
75
+ [15.50515, "o", "o"]
76
+ [15.573199, "o", "s"]
77
+ [15.699574, "o", "t"]
78
+ [15.76914, "o", " "]
79
+ [16.036999, "o", "p"]
80
+ [16.163044, "o", "i"]
81
+ [16.652924, "o", "p"]
82
+ [16.813243, "o", "p"]
83
+ [16.917135, "o", "i"]
84
+ [17.080562, "o", " "]
85
+ [17.201808, "o", "h"]
86
+ [17.368848, "o", "o"]
87
+ [17.413542, "o", "m"]
88
+ [17.48414, "o", "e"]
89
+ [17.568197, "o", " "]
90
+ [17.742182, "o", "-"]
91
+ [17.864295, "o", "s"]
92
+ [17.979325, "o", " "]
93
+ [18.242493, "o", "\""]
94
+ [18.440636, "o", "V"]
95
+ [18.663198, "o", "i"]
96
+ [18.869829, "o", "l"]
97
+ [19.003247, "o", "l"]
98
+ [19.147136, "o", " "]
99
+ [19.573385, "o", "\b\u001b[K"]
100
+ [19.605033, "o", "a"]
101
+ [19.713884, "o", " "]
102
+ [19.989035, "o", "V"]
103
+ [20.203604, "o", "i"]
104
+ [20.420199, "o", "l"]
105
+ [20.543928, "o", "l"]
106
+ [20.621966, "o", "e"]
107
+ [20.801954, "o", "k"]
108
+ [20.997196, "o", "u"]
109
+ [21.221267, "o", "l"]
110
+ [21.343979, "o", "l"]
111
+ [21.406573, "o", "a"]
112
+ [21.695081, "o", "\""]
113
+ [22.045301, "o", "\r\n"]
114
+ [22.623404, "o", "$ "]
115
+ [23.046212, "o", "p"]
116
+ [23.187992, "o", "p"]
117
+ [23.232119, "o", "l"]
118
+ [23.376733, "o", " "]
119
+ [23.532971, "o", "p"]
120
+ [23.568856, "o", "o"]
121
+ [23.664967, "o", "s"]
122
+ [23.78287, "o", "t"]
123
+ [23.867012, "o", " "]
124
+ [24.089129, "o", "p"]
125
+ [24.18896, "o", "i"]
126
+ [24.537432, "o", "p"]
127
+ [24.671921, "o", "p"]
128
+ [24.75389, "o", "i"]
129
+ [24.912881, "o", " "]
130
+ [25.244919, "o", "h"]
131
+ [25.445018, "o", "o"]
132
+ [25.472957, "o", "m"]
133
+ [25.5329, "o", "e"]
134
+ [25.617171, "o", " "]
135
+ [25.790839, "o", "-"]
136
+ [25.87546, "o", "r"]
137
+ [25.958428, "o", " "]
138
+ [26.163913, "o", "G"]
139
+ [26.330864, "o", "o"]
140
+ [26.398742, "o", "t"]
141
+ [26.539044, "o", "l"]
142
+ [26.664821, "o", "a"]
143
+ [26.756851, "o", "n"]
144
+ [26.887805, "o", "d"]
145
+ [27.174229, "o", "\r\n"]
146
+ [27.754473, "o", "$ "]
147
+ [28.710519, "o", "p"]
148
+ [28.852863, "o", "p"]
149
+ [28.884783, "o", "l"]
150
+ [29.026707, "o", " "]
151
+ [29.110911, "o", "p"]
152
+ [29.297789, "o", "h"]
153
+ [29.458775, "o", "o"]
154
+ [29.502703, "o", "n"]
155
+ [29.54685, "o", "e"]
156
+ [29.63878, "o", " "]
157
+ [29.821813, "o", "p"]
158
+ [29.90475, "o", "i"]
159
+ [30.192829, "o", "p"]
160
+ [30.343097, "o", "p"]
161
+ [30.406836, "o", "i"]
162
+ [30.581877, "o", " "]
163
+ [31.131683, "o", "0"]
164
+ [31.234479, "o", "1"]
165
+ [31.355551, "o", "2"]
166
+ [31.400856, "o", "3"]
167
+ [31.453295, "o", "4"]
168
+ [31.500886, "o", "5"]
169
+ [31.556114, "o", "6"]
170
+ [31.624319, "o", "7"]
171
+ [31.692674, "o", "8"]
172
+ [31.767559, "o", "9"]
173
+ [32.716806, "o", "\r\n"]
174
+ [33.287926, "o", "$ "]
175
+ [33.583786, "o", "g"]
176
+ [33.701428, "o", "i"]
177
+ [33.765884, "o", "t"]
178
+ [33.86645, "o", " "]
179
+ [34.030689, "o", "r"]
180
+ [34.07851, "o", "e"]
181
+ [34.214903, "o", "f"]
182
+ [34.303057, "o", "l"]
183
+ [34.439927, "o", "o"]
184
+ [34.536749, "o", "g"]
185
+ [34.846417, "o", "\r\n"]
186
+ [35.037765, "o", "\u001b[?1h\u001b=\r"]
187
+ [35.038025, "o", "\u001b[33ma9152d0\u001b[m\u001b[33m (\u001b[m\u001b[36mHEAD -> \u001b[m\u001b[35mtrunk\u001b[m\u001b[33m)\u001b[m HEAD@{0}: commit: save_contact(pippi)\u001b[m\r\n\u001b[33mff1e87b\u001b[m HEAD@{1}: commit: save_contact(pippi)\u001b[m\r\n\u001b[33mcf92220\u001b[m HEAD@{2}: commit: save_contact(pippi)\u001b[m\r\n\u001b[33m239279e\u001b[m HEAD@{3}: commit: save_contact(pippi)\u001b[m\r\n\u001b[33m602b33a\u001b[m HEAD@{4}: commit (initial): first commit\u001b[m\r\n\r\u001b[K\u001b[?1l\u001b>"]
188
+ [35.052991, "o", "$ "]
189
+ [36.967416, "o", "exit\r\n"]
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: ppl development
3
+ ---
4
+
5
+ {{ title }}
6
+
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: ppl documentation
3
+ ---
4
+
5
+ {{ title }}
6
+
data/site/index.njk ADDED
@@ -0,0 +1,75 @@
1
+ ---
2
+ title: ppl
3
+ description: The command-line address book
4
+ ---
5
+ <!doctype html>
6
+ <html
7
+ lang="en"
8
+ dir="ltr"
9
+ itemscope
10
+ itemtype="http://schema.org/SoftwareApplication">
11
+ <head>
12
+ <meta
13
+ name="viewport"
14
+ content="width=device-width,initial-scale=1"
15
+ />
16
+
17
+ <link rel="stylesheet" href="{{ url }}/style.css" />
18
+ <title>
19
+ {{ title }}
20
+ </title>
21
+ </head>
22
+ <body>
23
+ <main>
24
+ <header>
25
+ <h1>
26
+ <span itemprop="name">
27
+ {{ title }}
28
+ </span>
29
+ <svg
30
+ xmlns="http://www.w3.org/2000/svg"
31
+ xmlns:xlink="http://www.w3.org/1999/xlink"
32
+ viewBox="-1 0 15 8"
33
+ stroke-linecap="round"
34
+ stroke-linejoin="round"
35
+ height="32px"
36
+ width="64px">
37
+ <defs>
38
+ <path id="p" d="M0,6 L0,3 L2,3 L2,5 L0,5" />
39
+ <path id="l" d="M0,3 L0,6 L2,6" />
40
+ </defs>
41
+ <use xlink:href="#p" fill="none" stroke="#000000" stroke-width="2.8" x="0" y="0" />
42
+ <use xlink:href="#p" fill="none" stroke="#fff1e8" stroke-width="1" x="0" y="0" />
43
+ <use xlink:href="#p" fill="none" stroke="#000000" stroke-width="2.8" x="4" y="0" />
44
+ <use xlink:href="#p" fill="none" stroke="#fff1e8" stroke-width="1" x="4" y="0" />
45
+ <use xlink:href="#l" fill="none" stroke="#000000" stroke-width="2.8" x="8" y="0" />
46
+ <use xlink:href="#l" fill="none" stroke="#fff1e8" stroke-width="1" x="8" y="0" />
47
+ </svg>
48
+ </h1>
49
+ <p itemprop="description">
50
+ {{ description }}
51
+ </p>
52
+ </header>
53
+
54
+ <img
55
+ alt="Animated demo showing Pippi Långstrump being added to a new address book"
56
+ src="{{ url }}/casts/hero.svg"
57
+ />
58
+
59
+ <footer>
60
+ <p
61
+ itemprop="creator"
62
+ itemscope
63
+ itemtype="http://schema.org/Person">
64
+ <a href="https://hen.cat/" target="_blank">
65
+ <span itemprop="name">
66
+ Henry Catalini Smith
67
+ </span>
68
+ </a>
69
+ </p>
70
+ </footer>
71
+
72
+ </main>
73
+ </body>
74
+ </html>
75
+
data/site/news.njk ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: ppl news
3
+ ---
4
+
5
+ {{ title }}
6
+
data/site/style.scss ADDED
@@ -0,0 +1,140 @@
1
+ @function str-replace($string, $search, $replace: "") {
2
+ $index: str-index($string, $search);
3
+ @if ($index) {
4
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
5
+ }
6
+ @return $string;
7
+ }
8
+
9
+ @function svg-to-data-uri($svg, $fill: null) {
10
+ $svg: if($fill, str-replace($svg, "<svg", "<svg fill='#{$fill}'"), $svg);
11
+ $svg: str-replace($svg, "<svg", "<svg xmlns='http://www.w3.org/2000/svg' ");
12
+ $svg: str-replace($svg, "<", "%3C");
13
+ $svg: str-replace($svg, ">", "%3E");
14
+ $svg: str-replace($svg, "\"", "'");
15
+ $svg: str-replace($svg, "#", "%23");
16
+ $svg: str-replace($svg, "&", "%26");
17
+ @return url("data:image/svg+xml,#{$svg}");
18
+ }
19
+
20
+ :root {
21
+ --padding: 1rem;
22
+ --tiny: calc(100vmin - var(--padding) * 2);
23
+ --wide: 32rem;
24
+ --box: min(var(--tiny), var(--wide));
25
+ }
26
+
27
+ html {
28
+ box-sizing: border-box;
29
+ }
30
+
31
+ *, *:before, *:after {
32
+ box-sizing: inherit;
33
+ }
34
+
35
+ body {
36
+ margin: 0;
37
+ }
38
+
39
+ [itemtype="http://schema.org/SoftwareApplication"] {
40
+ --descriptionFontSize: 1rem;
41
+
42
+ @media (min-width: 24rem) and (min-height: 24rem) {
43
+ --descriptionFontSize: 1.2rem;
44
+ }
45
+
46
+ @media (min-width: 34rem) and (min-height: 34rem) {
47
+ --descriptionFontSize: 1.8rem;
48
+ }
49
+
50
+ main {
51
+ align-items: center;
52
+ display: flex;
53
+ flex-direction: column;
54
+ }
55
+
56
+ header {
57
+ display: flex;
58
+ flex-direction: column;
59
+ justify-content: center;
60
+ height: var(--box);
61
+ width: var(--box);
62
+ }
63
+
64
+ h1 {
65
+ margin: 0;
66
+ }
67
+
68
+ h1 [itemprop="name"] {
69
+ border: 0;
70
+ padding: 0;
71
+ margin: 0;
72
+ position: absolute;
73
+ height: 1px;
74
+ width: 1px;
75
+ overflow: hidden;
76
+ clip-path: inset(50%);
77
+ white-space: nowrap;
78
+ }
79
+
80
+ h1 svg {
81
+ height: 4rem;
82
+ width: 8rem;
83
+ }
84
+
85
+ header [itemprop="description"] {
86
+ font-family: "Menlo", monospace;
87
+ font-size: var(--descriptionFontSize);
88
+ margin: 0;
89
+ }
90
+
91
+ img {
92
+ background-image: svg-to-data-uri(
93
+ '<svg viewBox="0 0 64 16">'
94
+ + '<circle cx="14" cy="4" r="6" fill="#657b83" />'
95
+ + '<circle cx="30" cy="4" r="6" fill="#839496" />'
96
+ + '<circle cx="46" cy="4" r="6" fill="#008751" />'
97
+ + '</svg>'
98
+ );
99
+ background-size: 64px 32px;
100
+ background-repeat: no-repeat;
101
+ background-position: top left;
102
+
103
+ border: 3px solid #282d35;
104
+ border-radius: 8px;
105
+ padding-top: 32px;
106
+ background-color: #282d35;
107
+ height: var(--box);
108
+ width: var(--box);
109
+ }
110
+
111
+ footer {
112
+ align-items: flex-end;
113
+ display: flex;
114
+ height: var(--box);
115
+ justify-content: flex-end;
116
+ width: var(--box);
117
+ }
118
+
119
+ [itemprop="creator"] {
120
+ font-family: Futura, Helvetica, sans-serif;
121
+ margin: 0 0 0.2rem 0;
122
+ text-align: right;
123
+ }
124
+
125
+ [itemprop="creator"] a {
126
+ text-decoration: none;
127
+ }
128
+
129
+ [itemprop="creator"] [itemprop="name"] {
130
+ color: darkslategray;
131
+ font-size: 1rem;
132
+ font-weight: bold;
133
+ }
134
+
135
+ [itemprop="creator"] [itemprop="name"]:hover {
136
+ text-decoration-line: underline;
137
+ text-decoration-color: deepskyblue;
138
+ }
139
+ }
140
+