ppl 4.0.2 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +12 -0
  3. data/.eleventy.js +86 -0
  4. data/.eleventyignore +1 -0
  5. data/.github/workflows/build.yml +30 -2
  6. data/.gitignore +3 -1
  7. data/Rakefile +1 -1
  8. data/features/step_definitions/ppl_steps.rb +24 -24
  9. data/gh-pages/Gemfile +2 -0
  10. data/gh-pages/_config.yml +5 -0
  11. data/gh-pages/_includes/changelog.html +23 -0
  12. data/gh-pages/_includes/development-sidebar.html +25 -0
  13. data/gh-pages/_includes/footer.html +22 -0
  14. data/gh-pages/_includes/header.html +43 -0
  15. data/gh-pages/_includes/news.html +36 -0
  16. data/gh-pages/_includes/tip.html +54 -0
  17. data/gh-pages/_layouts/changelog.html +1 -0
  18. data/gh-pages/_layouts/command.html +104 -0
  19. data/gh-pages/_layouts/configuration.html +71 -0
  20. data/gh-pages/_layouts/development.html +20 -0
  21. data/gh-pages/_layouts/frontpage.html +6 -0
  22. data/gh-pages/_layouts/integration.html +44 -0
  23. data/gh-pages/_layouts/news.html +2 -0
  24. data/gh-pages/_layouts/page.html +6 -0
  25. data/gh-pages/_layouts/tip.html +2 -0
  26. data/gh-pages/_posts/2012-01-15-first-post.md +16 -0
  27. data/gh-pages/_posts/2012-12-20-1.0.0.md +19 -0
  28. data/gh-pages/_posts/2012-12-20-1.1.0.md +28 -0
  29. data/gh-pages/_posts/2012-12-20-1.2.0.md +18 -0
  30. data/gh-pages/_posts/2012-12-21-1.3.0.md +20 -0
  31. data/gh-pages/_posts/2012-12-21-thank-you-for-your-all-your-feedback.md +26 -0
  32. data/gh-pages/_posts/2012-12-22-1.4.1.md +21 -0
  33. data/gh-pages/_posts/2012-12-22-1.5.0.md +17 -0
  34. data/gh-pages/_posts/2012-12-23-1.5.1.md +13 -0
  35. data/gh-pages/_posts/2012-12-23-1.5.2.md +15 -0
  36. data/gh-pages/_posts/2012-12-26-1.5.3.md +19 -0
  37. data/gh-pages/_posts/2012-12-27-1.6.0.md +18 -0
  38. data/gh-pages/_posts/2012-12-29-1.7.0.md +18 -0
  39. data/gh-pages/_posts/2013-01-05-1.8.0.md +18 -0
  40. data/gh-pages/_posts/2013-01-06-1.9.0.md +20 -0
  41. data/gh-pages/_posts/2013-01-10-1.10.0.md +18 -0
  42. data/gh-pages/_posts/2013-01-20-1.11.0.md +14 -0
  43. data/gh-pages/_posts/2013-02-16-1.12.0.md +14 -0
  44. data/gh-pages/_posts/2013-02-17-1.13.0.md +29 -0
  45. data/gh-pages/_posts/2013-02-17-1.14.0.md +15 -0
  46. data/gh-pages/_posts/2013-02-17-1.14.1.md +18 -0
  47. data/gh-pages/_posts/2013-02-17-two-months-in.md +27 -0
  48. data/gh-pages/_posts/2013-03-16-1.15.0.md +28 -0
  49. data/gh-pages/_posts/2013-03-16-coloured-output-released.md +27 -0
  50. data/gh-pages/_posts/2013-04-10-ruby-2.0-compatibility.md +28 -0
  51. data/gh-pages/_posts/2013-04-11-1.15.1.md +13 -0
  52. data/gh-pages/_posts/2013-04-12-1.16.0.md +22 -0
  53. data/gh-pages/_posts/2013-04-14-1.17.0.md +15 -0
  54. data/gh-pages/_posts/2013-04-14-1.17.1.md +20 -0
  55. data/gh-pages/_posts/2013-04-14-1.17.2.md +13 -0
  56. data/gh-pages/_posts/2013-04-15-sync-alias.md +31 -0
  57. data/gh-pages/_posts/2013-04-15-utf8-fixed-and-more.md +37 -0
  58. data/gh-pages/_posts/2013-04-16-1.18.0.md +15 -0
  59. data/gh-pages/_posts/2013-04-16-set-up-color-output.md +47 -0
  60. data/gh-pages/_posts/2013-04-19-1.19.0.md +13 -0
  61. data/gh-pages/_posts/2013-04-19-1.20.0.md +15 -0
  62. data/gh-pages/_posts/2013-04-20-1.21.0.md +16 -0
  63. data/gh-pages/_posts/2013-04-20-1.22.0.md +14 -0
  64. data/gh-pages/_posts/2013-04-20-1.22.1.md +13 -0
  65. data/gh-pages/_posts/2013-04-21-1.22.2.md +15 -0
  66. data/gh-pages/_posts/2013-04-21-1.23.0.md +35 -0
  67. data/gh-pages/_posts/2013-04-23-1.24.0.md +16 -0
  68. data/gh-pages/_posts/2013-04-24-1.25.0.md +21 -0
  69. data/gh-pages/_posts/2013-05-09-2.0.0.md +33 -0
  70. data/gh-pages/_posts/2013-05-09-version-2.0.0-released.md +32 -0
  71. data/gh-pages/_posts/2013-07-20-2.1.0.md +36 -0
  72. data/gh-pages/_posts/2013-07-20-2.2.0.md +20 -0
  73. data/gh-pages/_posts/2013-10-12-2.3.0.md +19 -0
  74. data/gh-pages/_posts/2014-03-30-2.3.1.md +25 -0
  75. data/gh-pages/_posts/2015-01-05-2.3.2.md +18 -0
  76. data/gh-pages/_posts/2015-12-03-get-involved.md +29 -0
  77. data/gh-pages/_posts/2015-12-05-2.3.3.md +16 -0
  78. data/gh-pages/_posts/2016-01-02-2.4.0.md +19 -0
  79. data/gh-pages/_posts/2017-05-01-2.4.1.md +12 -0
  80. data/gh-pages/_posts/2017-10-23-sleep-mode.md +18 -0
  81. data/gh-pages/_posts/2018-01-03-3.0.1.md +12 -0
  82. data/gh-pages/_stylesheets/ppl/color.less +119 -0
  83. data/gh-pages/_stylesheets/ppl/layout.less +54 -0
  84. data/gh-pages/_stylesheets/ppl/style.less +185 -0
  85. data/gh-pages/_stylesheets/ppl/typography.less +59 -0
  86. data/gh-pages/development/changelog/index.md +18 -0
  87. data/gh-pages/development/changelog/split.rb +51 -0
  88. data/gh-pages/development/index.html +32 -0
  89. data/gh-pages/development/roadmap/index.md +15 -0
  90. data/gh-pages/documentation/about/index.html +63 -0
  91. data/gh-pages/documentation/commands/add/index.md +43 -0
  92. data/gh-pages/documentation/commands/age/add/index.md +40 -0
  93. data/gh-pages/documentation/commands/age/index.md +38 -0
  94. data/gh-pages/documentation/commands/bday/index.md +44 -0
  95. data/gh-pages/documentation/commands/completion/index.md +38 -0
  96. data/gh-pages/documentation/commands/email/index.md +64 -0
  97. data/gh-pages/documentation/commands/grep/index.md +32 -0
  98. data/gh-pages/documentation/commands/init/index.md +28 -0
  99. data/gh-pages/documentation/commands/ls/index.md +55 -0
  100. data/gh-pages/documentation/commands/mutt/index.md +36 -0
  101. data/gh-pages/documentation/commands/mv/index.md +26 -0
  102. data/gh-pages/documentation/commands/name/index.md +45 -0
  103. data/gh-pages/documentation/commands/nick/index.md +44 -0
  104. data/gh-pages/documentation/commands/org/index.md +45 -0
  105. data/gh-pages/documentation/commands/phone/index.md +56 -0
  106. data/gh-pages/documentation/commands/post/index.md +61 -0
  107. data/gh-pages/documentation/commands/pull/index.md +39 -0
  108. data/gh-pages/documentation/commands/push/index.md +36 -0
  109. data/gh-pages/documentation/commands/remote/index.md +40 -0
  110. data/gh-pages/documentation/commands/rm/index.md +23 -0
  111. data/gh-pages/documentation/commands/scrape/index.md +38 -0
  112. data/gh-pages/documentation/commands/shell/index.md +39 -0
  113. data/gh-pages/documentation/commands/show/index.md +33 -0
  114. data/gh-pages/documentation/commands/url/index.md +44 -0
  115. data/gh-pages/documentation/commands/version/index.md +27 -0
  116. data/gh-pages/documentation/configuration/address_book/index.md +22 -0
  117. data/gh-pages/documentation/configuration/alias/index.md +45 -0
  118. data/gh-pages/documentation/configuration/color/index.md +47 -0
  119. data/gh-pages/documentation/configuration/color_age/index.md +20 -0
  120. data/gh-pages/documentation/configuration/color_bday/index.md +20 -0
  121. data/gh-pages/documentation/configuration/color_email/index.md +21 -0
  122. data/gh-pages/documentation/configuration/color_ls/index.md +21 -0
  123. data/gh-pages/documentation/configuration/color_name/index.md +20 -0
  124. data/gh-pages/documentation/configuration/color_nick/index.md +20 -0
  125. data/gh-pages/documentation/configuration/color_org/index.md +20 -0
  126. data/gh-pages/documentation/configuration/color_phone/index.md +22 -0
  127. data/gh-pages/documentation/configuration/color_post/index.md +20 -0
  128. data/gh-pages/documentation/configuration/color_url/index.md +20 -0
  129. data/gh-pages/documentation/configuration/index.html +8 -0
  130. data/gh-pages/documentation/index.html +183 -0
  131. data/gh-pages/documentation/integration/bash/index.md +23 -0
  132. data/gh-pages/documentation/integration/google/index.md +26 -0
  133. data/gh-pages/documentation/integration/index.html +8 -0
  134. data/gh-pages/documentation/integration/mutt/index.md +35 -0
  135. data/gh-pages/documentation/integration/zsh/index.md +19 -0
  136. data/gh-pages/documentation/quick-start/index.html +88 -0
  137. data/gh-pages/documentation/tips/index.html +9 -0
  138. data/gh-pages/index.html +108 -0
  139. data/gh-pages/news/index.html +9 -0
  140. data/gh-pages/robots.txt +3 -0
  141. data/gh-pages/stylesheets/flatstrap.css +10 -0
  142. data/gh-pages/stylesheets/ppl.scss +235 -0
  143. data/gh-pages/wiki.png +0 -0
  144. data/lib/ppl.rb +4 -1
  145. data/makefile +18 -0
  146. data/package.json +23 -0
  147. data/ppl.gemspec +1 -1
  148. data/site/_data/url.js +4 -0
  149. data/site/casts/hero.cast +189 -0
  150. data/site/development.njk +6 -0
  151. data/site/documentation.njk +6 -0
  152. data/site/index.njk +75 -0
  153. data/site/news.njk +6 -0
  154. data/site/style.scss +140 -0
  155. data/yarn.lock +3605 -0
  156. metadata +149 -1
@@ -0,0 +1,59 @@
1
+
2
+ body {
3
+ font-family: "Arvo", sans-serif;
4
+ font-size: 16px;
5
+ line-height: 24px;
6
+ }
7
+
8
+ code {
9
+ font-family: "Inconsolata", monospace;
10
+ font-size: 16px;
11
+ }
12
+
13
+ h1, h2, h3, h4, h5, h6 {
14
+ font-size: 1em;
15
+ font-weight: normal;
16
+ }
17
+
18
+ h2 {
19
+ font-size: 22px;
20
+ font-weight: bold;
21
+ small {
22
+ font-size: 16px;
23
+ }
24
+ }
25
+
26
+ h3 {
27
+ font-size: 18px;
28
+ font-weight: bold;
29
+ }
30
+
31
+ .front-page {
32
+ h1.big-welcome {
33
+ font-size: 32px;
34
+ }
35
+ .little-welcome {
36
+ font-size: 18px;
37
+ }
38
+ }
39
+
40
+ .command-list {
41
+ h2 {
42
+ font-size: 18px;
43
+ font-weight: normal;
44
+ }
45
+ }
46
+
47
+ .navbar .nav > .active > a,
48
+ .navbar .nav > .active > a:hover,
49
+ .navbar .nav > .active > a:focus {
50
+ text-shadow: none;
51
+ }
52
+
53
+ footer.global {
54
+ font-size: 12px;
55
+ a:link, a:visited {
56
+ text-decoration: underline;
57
+ }
58
+ }
59
+
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Changelog
3
+ layout: development
4
+ section: development
5
+ ---
6
+
7
+ <dl class="version-history">
8
+ {% for post in site.categories.changelog %}
9
+ <dt>
10
+ <a href="{{site.url}}/development/changelog/{{post.title}}">
11
+ {{post.title}}
12
+ </a>
13
+ </dt>
14
+ <dd>
15
+ {{post.summary}}
16
+ </dd>
17
+ {% endfor %}
18
+ </dl>
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rugged"
4
+
5
+ repo = Rugged::Repository.new("/home/hnrysmth/src/ppl")
6
+ index = File.read("development/changelog/index.md")
7
+
8
+ changes = index.split("### ")
9
+
10
+ def find_date(repo, version)
11
+ tag = repo.refs.find { |r| r.name == "refs/tags/#{version}" }
12
+ commit = repo.lookup(tag.target).target
13
+ commit.time
14
+ end
15
+
16
+ def generate_post(front_matter, body)
17
+ post = ["---"]
18
+ front_matter.each do |name, value|
19
+ post << "#{name}: #{value}"
20
+ end
21
+ post << "---"
22
+ post << ""
23
+ post << body
24
+
25
+ post.join "\n"
26
+ end
27
+
28
+ changes.each do |change|
29
+
30
+ version = change.scan(/^([0-9.]+)/)[0]
31
+ next if version.nil?
32
+
33
+ version = version[0]
34
+ date = find_date(repo, version).strftime("%Y-%m-%d")
35
+ body = change.split("\n")[2..-1].join("\n")
36
+
37
+ post = generate_post({
38
+ :title => version,
39
+ :date => date,
40
+ :layout => "changelog",
41
+ :section => "development",
42
+ :categories => "[changelog]",
43
+ :permalink => "/development/changelog/#{version}",
44
+ }, body)
45
+
46
+ filename = "_posts/#{date}-#{version}.md"
47
+
48
+ File.open(filename, "w") { |f| f.write(post) }
49
+
50
+ end
51
+
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: Development
3
+ layout: development
4
+ section: development
5
+ ---
6
+
7
+ <p>
8
+ You'd like to contribute to the development of ppl? Great!
9
+ Here's a quick introduction.
10
+ </p>
11
+
12
+ <h3>Report A Bug</h3>
13
+ <p>
14
+ This project uses Github Issues to track bug reports. The tracker is at
15
+ <a href="https://github.com/hnrysmth/ppl/issues">github.com/hnrysmth/ppl/issues</a>.
16
+ </p>
17
+
18
+ <h3>Get The Code</h3>
19
+ <p>
20
+ The main source repository for ppl is hosted on GitHub at <a
21
+ href="https://github.com/hnrysmth/ppl">github.com/hnrysmth/ppl</a>.
22
+ </p>
23
+
24
+ <h3>Do Your Best</h3>
25
+ <p>
26
+ For low-level code style issues relating to issues such as syntax and
27
+ indentation, <a href="https://github.com/styleguide/ruby">GitHub's Ruby
28
+ Styleguide</a> is the standard to follow*. This project doesn't necessarily
29
+ follow the guide perfectly, but pull requests that improve adherence to the
30
+ guide are welcomed whereas pull requests that stray even further are
31
+ discouraged.
32
+ </p>
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: Roadmap
3
+ layout: development
4
+ section: development
5
+ ---
6
+
7
+ As of January 2018 this project is in quite a stable state, with no major
8
+ increases in functionality planned. That being said, I'm not actually against
9
+ adding more functionality to this thing if somebody out there feels like taking
10
+ on the implementation work. I'm very very open to adding lots more stuff, just
11
+ not interested in creating it myself.
12
+
13
+ Please don't hesitate to get in touch if you have ideas for ppl that you want to
14
+ build and contribute!
15
+
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: About ppl
3
+ layout: page
4
+ section: documentation
5
+ ---
6
+
7
+ <h2>About ppl</h2>
8
+
9
+ <div class="row">
10
+ <div class="span8">
11
+ <h3>Why?</h3>
12
+ <p>
13
+ ppl was created to address the need for a decentralized address book
14
+ storage system. There are a lot of different contact details storage
15
+ solutions out there and they all have their own strengths. What was
16
+ lacking was one that I felt I could count on to entrust with the "master
17
+ copy" of all the disparate contact information I possess.
18
+ </p>
19
+ <p>
20
+ It's also intended to address the apparent lack of a proper CLI address
21
+ book. There are people who enjoy the conversational nature of CLI
22
+ interaction. You ask "Whose birthdays are coming up soon?", the computer
23
+ answers immediately, and your interaction with the software is over with
24
+ no further requirements that you close a window or slide a widget.
25
+ </p>
26
+
27
+ <h3>Why the CLI?</h3>
28
+ <p>
29
+ The command-line is a good fit for address book software because data
30
+ about contacts is usually 100% plain text. It also works well because a
31
+ given user interaction with an address book typically consists of one
32
+ short operation: reading or writing a single piece of data. And since we
33
+ normally want to keep our address book data for our entire lives, the
34
+ command-line's immunity to the shifting sands of GUI toolkits and
35
+ discontinued SaaS products is a big plus.
36
+ </p>
37
+
38
+ <h3>Why Git?</h3>
39
+ <p>
40
+ ppl uses git as its storage backend. Git's decentralised approach really
41
+ suits this usage as it allows continued read/write access to the address
42
+ book in the face of network downtime and cloud outages. And because git
43
+ never destroys data, no botched sync attempt can permanently wipe an
44
+ entire address book by accident.
45
+ </p>
46
+
47
+ <h3>Who?</h3>
48
+ <p>
49
+ This software was conceived and created by me, Henry Smith.
50
+ I have a bunch of <a href="http://github.com/hnrysmth/">other stuff on
51
+ GitHub too</a>!
52
+ </p>
53
+
54
+ <h3>When?</h3>
55
+ <p>
56
+ According to the project's git logs, work on ppl first began on November
57
+ 10th 2012. Apparently I had nothing more exciting to be doing at 11pm on a
58
+ Saturday night.
59
+ </p>
60
+
61
+ </div>
62
+ </div>
63
+
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: ppl add Manual Page
3
+ layout: command
4
+ section: documentation
5
+ command: add
6
+ ---
7
+
8
+ ### Name
9
+
10
+ ppl add - Add a new contact
11
+
12
+ ### Synopsis
13
+
14
+ ppl add <contact> <name>
15
+
16
+ ### Description
17
+
18
+ This command adds a new contact to the address book. The first parameter,
19
+ `<contact>`, is an alphanumeric string used to uniquely identify the contact
20
+ within the address book. The second parameter, `<name>`, is the contact's actual
21
+ name.
22
+
23
+ The `<contact>` parameter must not already be in use as the identifier of
24
+ another contact in the address book. Ideally you'll want to pick something short
25
+ and easy to type, so if you're adding a contact named "John Doe", then "john" or
26
+ "jdoe" might be good choices if they aren't already in use.
27
+
28
+ The `<name>` parameter should be the full name of the contact, and is identical
29
+ to its namesake expected by the [ppl name](../name) command. Usually, this
30
+ means it needs to be enclosed in quotation marks to indicate that all the words
31
+ in the name are part of the same parameter.
32
+
33
+ The first word in the `<name>` will also be stored as the contact's given name,
34
+ with the remainder of the string being treated as their family name.
35
+
36
+ ### Examples
37
+
38
+ ppl add jdoe "John Doe"
39
+
40
+ ### See Also
41
+
42
+ [ppl name](../name)
43
+
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: ppl add Manual Page
3
+ layout: command
4
+ section: documentation
5
+ command: add
6
+ ---
7
+
8
+ ### Name
9
+
10
+ ppl add - Add a new contact
11
+
12
+ ### Synopsis
13
+
14
+ ppl add <contact> <name>
15
+
16
+ ### Description
17
+
18
+ This command adds a new contact to the address book. The first parameter,
19
+ `<contact>`, is an alphanumeric string used to uniquely identify the contact
20
+ within the address book. The second parameter, `<name>`, is the contact's actual
21
+ name.
22
+
23
+ The `<contact>` parameter must not already be in use as the identifier of
24
+ another contact in the address book. Ideally you'll want to pick something short
25
+ and easy to type, so if you're adding a contact named "John Doe", then "john" or
26
+ "jdoe" might be good choices if they aren't already in use.
27
+
28
+ The `<name>` parameter should be the full name of the contact, and is identical
29
+ to its namesake expected by the [ppl name](../name) command. Usually, this
30
+ means it needs to be enclosed in quotation marks to indicate that all the words
31
+ in the name are part of the same parameter.
32
+
33
+ ### Examples
34
+
35
+ ppl add jdoe "John Doe"
36
+
37
+ ### See Also
38
+
39
+ [ppl name](../name)
40
+
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: ppl age Manual Page
3
+ layout: command
4
+ section: documentation
5
+ command: age
6
+ ---
7
+
8
+ ### Name
9
+
10
+ ppl age - List or show contacts' ages
11
+
12
+ ### Synopsis
13
+
14
+ ppl age [<contact>]
15
+
16
+ ### Description
17
+
18
+ This command calculates contacts' current ages in years based on their date of
19
+ birth. The purpose of this command is to provide easy access to an often-needed
20
+ piece of information which is indirectly available from the data in the address
21
+ book.
22
+
23
+ Invoked without any arguments, all contacts are listed with their respective
24
+ ages. If a `<contact>` is specified, only the age of that contact will be shown.
25
+
26
+ ### Examples
27
+
28
+ $ ppl bday jdoe 1980-01-01
29
+ $ ppl age jdoe
30
+ 33
31
+ $ ppl age
32
+ fred: 25
33
+ jdoe: 33
34
+
35
+ ### See Also
36
+
37
+ * [ppl bday](../bday)
38
+ * [color output](/documentation/configuration/color_age)
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: ppl bday Manual Page
3
+ layout: command
4
+ section: documentation
5
+ command: bday
6
+ ---
7
+
8
+ ### Name
9
+
10
+ ppl bday - List, show or change birthdays
11
+
12
+ ### Synopsis
13
+
14
+ ppl bday
15
+ ppl bday <contact>
16
+ ppl bday <contact> <date>
17
+
18
+ ### Description
19
+
20
+ With no arguments, the dates of birth of each contact in the address book are
21
+ listed.
22
+
23
+ If a `<contact>` is specified, the date of birth of that contact is shown.
24
+
25
+ If both a `<contact>` and a `<date>` are given, then the date is stored as the
26
+ date of birth of that contact. The `<date>` parameter must be a valid date
27
+ string parseable by Ruby's
28
+ [Date.parse](http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html\#method-c-parse)
29
+ function.
30
+
31
+ ### Examples
32
+
33
+ $ ppl bday jdoe 1970-01-01
34
+ $ ppl bday adam 1975-06-01
35
+ $ ppl bday jdoe
36
+ 1970-01-01
37
+ $ ppl bday
38
+ adam: 1975-06-01
39
+ jdoe: 1970-01-01
40
+
41
+ ### See Also
42
+
43
+ * [Date.parse](http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html\#method-c-parse)
44
+ * [color output](/documentation/configuration/color_bday)
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: ppl completion Manual Page
3
+ layout: command
4
+ section: documentation
5
+ command: completion
6
+ ---
7
+
8
+ ### Name
9
+
10
+ ppl completion - Output a completion function for shell integration
11
+
12
+ ### Synopsis
13
+
14
+ ppl completion <shell>
15
+
16
+ ### Description
17
+
18
+ Output a shell autocomplete function to enable automatic completion of commands
19
+
20
+ The following shells are supported:
21
+
22
+ * `bash`
23
+ * `zsh`
24
+
25
+ ### Examples
26
+
27
+ $ ppl completion bash
28
+ _ppl()
29
+ {
30
+ ....
31
+ }
32
+ complete -F _ppl ppl
33
+
34
+ ### See Also
35
+
36
+ * [Bash Integration Guide](/documentation/integration/bash)
37
+ * [ZSH Integration Guide](/documentation/integration/zsh)
38
+