bpkg
https://bpkg.sh
2024-02-21T20:15:22+00:00
echo-eval
https://bpkg.sh/pkg/echo-eval
2024-02-06T00:00:00+00:00
<p>This minimalist library takes a bash command as a string, prints it with a shell prompt in front of it, then runs that command using <code class="language-plaintext highlighter-rouge">eval</code>.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ jq --version
jq-1.6
</code></pre></div></div>
<p>This pattern minimizes the time it takes to debug your bash systems by leaving logs resembling someone typing at a terminal.</p>
<h2 id="installation">Installation</h2>
<p>You can install this globally…</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> kj4ezj/echo-eval
</code></pre></div></div>
<p>…or as a project dependency.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bpkg <span class="nb">install </span>kj4ezj/echo-eval
</code></pre></div></div>
<p>If you install it as a <code class="language-plaintext highlighter-rouge">bpkg</code> dependency then you will need to source it in your scripts.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">source </span>deps/bin/ee
</code></pre></div></div>
<p>Your paths may vary.</p>
<h2 id="usage">Usage</h2>
<p>This library takes the input you give it, prints or echoes it to the terminal with a fake shell prompt in front of it, then tries to run it as a command. For example, the output of this…</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ee <span class="nb">uname</span>
</code></pre></div></div>
<p>…looks like this on Linux.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ uname
Linux
</code></pre></div></div>
<p>You can invoke <code class="language-plaintext highlighter-rouge">ee</code> as a function…</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ee <span class="nb">echo test</span>
</code></pre></div></div>
<p>…or as a file.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./ee.sh <span class="nb">echo test</span>
</code></pre></div></div>
<p>Some commands may need to be encased in quotes to work the way you intend. For example, <code class="language-plaintext highlighter-rouge">dc</code> is sensitive to whitespace.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>echo-eval<span class="nv">$ </span>ee dc <span class="nt">-e</span> <span class="s1">'1 2 + p'</span>
<span class="nv">$ </span>dc <span class="nt">-e</span> 1 2 + p
dc: Could not open file 2
dc: Could not open file +
dc: Could not open file p
echo-eval<span class="nv">$ </span>ee <span class="s2">"dc -e '1 2 + p'"</span>
<span class="nv">$ </span>dc <span class="nt">-e</span> <span class="s1">'1 2 + p'</span>
3
</code></pre></div></div>
<p>In this example, we want the input to <code class="language-plaintext highlighter-rouge">ee</code> to include the pipe (<code class="language-plaintext highlighter-rouge">|</code>).</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>echo-eval<span class="nv">$ </span><span class="nb">export </span><span class="nv">EXAMPLE</span><span class="o">=</span><span class="s1">'yeet'</span>
echo-eval<span class="nv">$ </span>ee <span class="nb">printf</span> <span class="s2">"</span><span class="nv">$EXAMPLE</span><span class="s2">"</span> | <span class="nb">wc</span> <span class="nt">-c</span>
18
echo-eval<span class="nv">$ </span>ee <span class="s1">'printf "$EXAMPLE" | wc -c'</span>
<span class="nv">$ </span><span class="nb">printf</span> <span class="s2">"</span><span class="nv">$EXAMPLE</span><span class="s2">"</span> | <span class="nb">wc</span> <span class="nt">-c</span>
4
</code></pre></div></div>
<p>Quotes were needed to get the correct output of four characters.</p>
<h2 id="links">Links</h2>
<p>Written by <a href="https://github.com/kj4ezj">Zach Butler</a>.</p>
<ul>
<li><a href="https://github.com/kj4ezj/echo-eval">Source Code</a> - GitHub</li>
<li><a href="https://github.com/kj4ezj/echo-eval#echo-eval">Documentation</a></li>
</ul>
<p>Check out the GitHub repo for more information.</p>
bashunit
https://bpkg.sh/pkg/bashunit
2023-09-11T00:00:00+00:00
<h2 id="usage">Usage</h2>
<p>Write tests files like:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># file: tests/my_test.sh</span>
<span class="k">function </span>test_using_snake_case<span class="o">()</span> <span class="o">{</span>
assertEquals <span class="s2">"1"</span> <span class="s2">"1"</span>
assertContains <span class="s2">"Linux"</span> <span class="s2">"GNU/Linux"</span>
<span class="o">}</span>
<span class="k">function </span>testUsingCamelCase<span class="o">()</span> <span class="o">{</span>
assertNotContains <span class="s2">"Linus"</span> <span class="s2">"GNU/Linux"</span>
assertMatches <span class="s2">".*Linu*"</span> <span class="s2">"GNU/Linux"</span>
assertExitCode <span class="s2">"0"</span>
<span class="o">}</span>
</code></pre></div></div>
<p>Then run the test:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>bashunit tests/my_test.sh
Running logic_test.sh
✓ Passed: UsingCamelCase
✓ Passed: Using snake <span class="k">case</span>
Tests: 2 passed, 2 total
Assertions: 5 passed, 5 total
All tests passed
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/TypedDevs/bashunit">Source Code (GitHub)</a></li>
<li>Authors: <a href="https://github.com/Chemaclass">Jose Maria Valera Reales</a>, <a href="https://github.com/khru">Emmanuel Valverde Ramos</a>, <a href="https://github.com/Tito-Kati">Antonio Gonzalez Gea
</a></li>
<li><a href="https://bashunit.typeddevs.com">Documentation</a></li>
</ul>
protobuf-parser-bash
https://bpkg.sh/pkg/protobuf-parser
2023-07-07T00:00:00+00:00
<p>A <a href="https://github.com/protocolbuffers/protobuf">Protobuf</a> parser, encoder and decoder in Bash.</p>
<h2 id="install">Install</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bpkg <span class="nb">install</span> <span class="o">[</span><span class="nt">-g</span><span class="o">]</span> lafkpages/protobuf-parser-bash
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/lafkpages/protobuf-parser-bash">Source code (GitHub)</a></li>
<li>Author: <a href="https://github.com/lafkpages">LuisAFK</a></li>
</ul>
bash-util-lib
https://bpkg.sh/pkg/bash-util-lib
2022-11-12T00:00:00+00:00
<p><strong>Bash Utility Library</strong> - A library of bash utility functions (from output colors to parameter processing) for use in small projects.</p>
<h2 id="install">Install</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bpkg <span class="nb">install</span> <span class="o">[</span><span class="nt">-g</span><span class="o">]</span> wsi-services/bash-util-lib
</code></pre></div></div>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">source</span> <span class="s2">"deps/bash-util/bash-util-lib.sh"</span>
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/WSI-Services/bash-util-lib">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/samlikins">Sam Likins</a></li>
</ul>
Bats
https://bpkg.sh/pkg/bats
2021-10-23T00:00:00+00:00
<h2 id="usage">Usage</h2>
<p>Write tests into <code class="language-plaintext highlighter-rouge">*.bats</code> files like:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env bats</span>
@test <span class="s2">"addition using bc"</span> <span class="o">{</span>
<span class="nv">result</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span><span class="nb">echo </span>2+2 | bc<span class="si">)</span><span class="s2">"</span>
<span class="o">[</span> <span class="s2">"</span><span class="nv">$result</span><span class="s2">"</span> <span class="nt">-eq</span> 4 <span class="o">]</span>
<span class="o">}</span>
</code></pre></div></div>
<p>Then run the test:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>bats test.bats
✓ addition using bc
1 <span class="nb">test</span>, 0 failures
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bats-core/bats-core">Source Code (GitHub)</a></li>
<li><a href="https://bats-core.readthedocs.io/">Documentation</a></li>
</ul>
magic-version
https://bpkg.sh/pkg/magic-version
2021-08-14T00:00:00+00:00
<p>calculate version for CI (CODING, GitHub Actions, Jenkins)</p>
<table>
<thead>
<tr>
<th>when</th>
<th>version</th>
</tr>
</thead>
<tbody>
<tr>
<td>tag</td>
<td>1.2.0</td>
</tr>
<tr>
<td>branch</td>
<td>main-3a11e12</td>
</tr>
<tr>
<td>MR</td>
<td>mr-123-3a11e12</td>
</tr>
<tr>
<td>PR(GitHub)</td>
<td>pr-123-3a11e12</td>
</tr>
</tbody>
</table>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bpkg <span class="nb">install</span> <span class="o">[</span><span class="nt">-g</span><span class="o">]</span> sinkcup/magic-version
</code></pre></div></div>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export </span><span class="nv">TAG_NAME</span><span class="o">=</span>1.2.0
magic-version
</code></pre></div></div>
<blockquote>
<p>1.2.0</p>
</blockquote>
<p>more examples in <a href="https://github.com/sinkcup/magic-version/tree/main/test">test code</a></p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/sinkcup/magic-version">Source Code</a></li>
<li>Author: <a href="https://github.com/sinkcup">sink</a></li>
</ul>
chap
https://bpkg.sh/pkg/chap
2021-05-06T00:00:00+00:00
<h2 id="installation">Installation</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="o">[</span><span class="nt">-g</span><span class="o">]</span> kirtfitzpatrick/chap</code></pre></figure>
<h2 id="requirements">Requirements</h2>
<p>bash 4.0 or greater</p>
<h2 id="usage">Usage</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>chap info_msg <span class="s2">"Hello, world."</span></code></pre></figure>
<p><span style="color:cyan">Info:</span> Hello, world.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>chap <span class="nt">-h</span>
Usage:
chap <span class="o">[</span><span class="nt">-hV</span><span class="o">]</span>
Options:
<span class="nt">-h</span>|--help Print this <span class="nb">help </span>dialogue and <span class="nb">exit</span>
<span class="nt">-V</span>|--version Print the current version and <span class="nb">exit
</span>Logging:
info_msg MESSAGE
nominal_msg MESSAGE
attention_msg MESSAGE
warning_msg MESSAGE
modification_msg MESSAGE
Evaluation:
info_cmd COMMAND <span class="o">[</span> MESSAGE <span class="o">]</span>
nominal_cmd COMMAND <span class="o">[</span> MESSAGE <span class="o">]</span>
attention_cmd COMMAND <span class="o">[</span> MESSAGE <span class="o">]</span>
warning_cmd COMMAND <span class="o">[</span> MESSAGE <span class="o">]</span>
modification_cmd COMMAND <span class="o">[</span> MESSAGE <span class="o">]</span>
Internal:
echo_cmd COMMAND
display_link FILE_LINK_OR_DIR_PATH
brief_echo OUTPUT_BUFFER
brief_eval COMMAND
Special purpose:
print_header <span class="s2">"</span><span class="nv">$0</span><span class="s2"> </span><span class="nv">$*</span><span class="s2">"</span>
verify_line_count LABEL COMPARISON_OP VALUE COMMAND
confirm_cmd COMMAND <span class="o">[</span> MESSAGE <span class="o">]</span>
confirm_reset <span class="c"># Reset auto-confirm</span></code></pre></figure>
<h2 id="example">Example</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#!/usr/bin/env bash</span>
<span class="nb">source </span>deps/bin/chap
chap print_header <span class="s2">"</span><span class="nv">$0</span><span class="s2"> </span><span class="nv">$*</span><span class="s2">"</span>
chap info_msg <span class="s2">"Let's verify line counts."</span>
chap verify_line_count <span class="se">\</span>
<span class="s2">"files"</span> <span class="s2">"-ge"</span> 4 <span class="se">\</span>
<span class="s2">"find . -type f -or -type l"</span>
<span class="nb">echo</span> <span class="s2">""</span>
chap info_msg <span class="s2">"FYI."</span>
chap nominal_msg <span class="s2">"As expected."</span>
chap attention_msg <span class="s2">"Hey old chap, pay attention."</span>
chap warning_msg <span class="s2">"Something's wrong."</span>
chap modification_msg <span class="s2">"We're making a change."</span>
<span class="nb">echo</span> <span class="s2">""</span>
chap info_cmd <span class="se">\</span>
<span class="s2">"grep -A 5 'brief_eval {' deps/bin/chap"</span> <span class="se">\</span>
<span class="s2">"Implementation of brief_eval."</span>
<span class="nb">echo</span> <span class="s2">""</span>
chap confirm_cmd <span class="s2">"find . -name '*.sh'"</span> <span class="se">\</span>
<span class="s2">"Prompt to confirm or skip."</span></code></pre></figure>
<hr />
<p><span style="color:cyan">Host:</span> Kirts-MacBook-Pro-2019.local<br />
<span style="color:cyan">Command:</span> ./demo.sh <br />
<span style="color:cyan">Working Dir:</span> /Users/kirt/Dropbox/Development/Bidpath/chap-demo<br /></p>
<p><span style="color:cyan">Info:</span> Verify correct file count. <br />
<span style="color:green">Nominal:</span> 4 files found. <br />
<span style="color:blue">find . -type f -or -type l</span><br />
./demo.sh<br />
./deps/bin/chap -> <span style="color:cyan">../chap/chap.sh</span><br />
./deps/chap/chap.sh<br />
./deps/chap/package.json<br /></p>
<p><span style="color:cyan">Info:</span> FYI.<br />
<span style="color:green">Nominal:</span> As expected.<br />
<span style="color:yellow">Attention:</span> Hey old chap, pay attention.<br />
<span style="color:red">Warning:</span> Something’s wrong.<br />
<span style="color:purple">Modification:</span> We’re making a change.<br /></p>
<p><span style="color:cyan">Info:</span> Implementation of brief_eval.<br />
<span style="color:blue">grep -A 5 ‘brief_eval {‘ deps/bin/chap</span><br />
function chap_brief_eval {<br />
CMD=$1<br />
OUTPUT=$(eval “${CMD}”)<br />
<br />
chap_brief_echo “${OUTPUT}”<br />
}<br /></p>
<p><span style="color:cyan">Info:</span> Prompt to confirm or skip.<br />
<span style="color:blue">find . -name ‘*.sh’</span><br />
<span style="color:purple">Execute (a=all, s=skip):</span> <br />
<span style="color:cyan">Initiated at:</span> 15:22:37<br />
./demo.sh<br />
./deps/chap/chap.sh<br />
<span style="color:cyan">Completed at:</span> 15:22:37<br /></p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/kirtfitzpatrick/chap">Source Code (GitHub)</a></li>
<li>Author: <a href="https://twitter.com/KirtFitzpatrick">Kirt Fitzpatrick</a></li>
</ul>
passmenu
https://bpkg.sh/pkg/passmenu
2021-03-30T00:00:00+00:00
<p>This package integrates pass and dmenu.
It gets all passwords from ~/.password-store, pipes them to dmenu, and selection is copied to clipboard.</p>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>passmenu
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/overclockworked64/passmenu">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/overclockworked64">adder</a></li>
</ul>
lcov.sh
https://bpkg.sh/pkg/lcovsh
2020-06-01T00:00:00+00:00
<p>Coverage framework for Shell projects</p>
<h2 id="usage">Usage</h2>
<p>Add the following code <code class="language-plaintext highlighter-rouge">[[ -z "${LCOV_DEBUG}" ]] || set -x</code> on top of source file you want in a coverage report, see below example:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>
<span class="o">[[</span> <span class="nt">-z</span> <span class="s2">"</span><span class="k">${</span><span class="nv">LCOV_DEBUG</span><span class="k">}</span><span class="s2">"</span> <span class="o">]]</span> <span class="o">||</span> <span class="nb">set</span> <span class="nt">-x</span>
welcome <span class="o">()</span> <span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"Hi </span><span class="nv">$1</span><span class="s2">, I'm testable code"</span>
<span class="o">}</span>
welcome <span class="s2">"John"</span>
</code></pre></div></div>
<p>Now, run from command line the following command:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lcov.sh FILE...
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/javanile/lcov.sh">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/francescobianco">Francesco Bianco</a></li>
</ul>
warp
https://bpkg.sh/pkg/warp
2019-05-07T00:00:00+00:00
<p>Tired of figuring out the relative path to a file, so you can copy it?
Tire no more! Warp is a small bash tool to move or copy a file from one location to another.</p>
<h2 id="basic-usage">Basic Usage</h2>
<p>To copy a file in a directory in one terminal, to the directory of another terminal, first warp in the file</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>warp <span class="k">in </span>foo.txt
</code></pre></div></div>
<p>In the other terminal, warp copy it</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>warp <span class="nb">cp</span> <span class="nb">.</span>
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/nathan-abercrombie/bash-file-warp">Source Code (GitHub)</a></li>
<li>Author: <a href="mailto:abercrombie.nathan@gmail.com">Nathan Abercrombie</a></li>
</ul>
npm-publish
https://bpkg.sh/pkg/npm-publish
2018-09-14T00:00:00+00:00
<p>A npm module publisher.</p>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">PACKAGE_NAME</span><span class="o">=</span><name> <span class="nv">NEW_VERSION</span><span class="o">=</span><version> npm-publish
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/sugarshin/npm-publish">Source Code (GitHub)</a></li>
<li>Author: <a href="https://sugarshin.net">Shingo Sato</a></li>
</ul>
uget
https://bpkg.sh/pkg/uget
2018-01-11T00:00:00+00:00
<p>Downloads a file from an url choosing between wget or curl, or gently warns that the current system can’t make the download. This packages frees the package developer the responsability to check the downloads utility in the target user computer.</p>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>uget THERESOURCEURI
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/danilocgsilva/uget">Source Code (GitHub)</a></li>
<li>Author: <a href="http://danilocgsilva.me">danilocgsilva</a></li>
</ul>
rmate
https://bpkg.sh/pkg/rmate
2017-06-28T00:00:00+00:00
<h2 id="description">Description</h2>
<p>This shell script needs to be installed on a remote machine to allow editing files
using TextMate 2 (TM2). TM2 needs to be configured accordingly to accept either local
or remote clients.</p>
<h3 id="local-clients">Local clients</h3>
<p>It’s a good idea to allow access to TM2 only for local clients. In this case it’s required
to open a SSH connection to the remote system and specify a remote tunnel in addition:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <span class="nt">-R</span> 52698:localhost:52698 user@example.com
</code></pre></div></div>
<p>After log-in on the remote system a file can be edited by just executing</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rmate test.txt
</code></pre></div></div>
<h3 id="remote-clients">Remote clients</h3>
<p>On some machines, where port forwarding is not possible, for example due to a missing ssh
daemon, it’s required to set TM2 to allow access for “remote clients”. After log-in on the
remote machine a file can be edited by executing</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rmate <span class="nt">-H</span> textmate-host test.txt
</code></pre></div></div>
<h2 id="requirements">Requirements</h2>
<p>A bash with compiled support for “/dev/tcp” is required.</p>
<h2 id="usage">Usage</h2>
<p>Edit specified file</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>./rmate <span class="o">[</span>arguments] <span class="o">[</span><span class="nt">--</span><span class="o">]</span> file-path
</code></pre></div></div>
<p>Read text from stdin</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">echo</span> <span class="s2">"hello TextMate"</span> | ./rmate <span class="o">[</span>arguments] -
</code></pre></div></div>
<h3 id="arguments">Arguments</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-H, --host HOST Connect to HOST. Use 'auto' to detect the host from SSH.
-p, --port PORT Port number to use for connection.
-w, --[no-]wait Wait for file to be closed by TextMate.
-l, --line LINE Place caret on line number after loading file.
+N Alias for --line, if N is a number (eg.: +5).
-m, --name NAME The display name shown in TextMate.
-t, --type TYPE Treat file as having specified type.
-n, --new Open in a new window (Sublime Text).
-f, --force Open even if file is not writable.
-v, --verbose Verbose logging messages.
-h, --help Display this usage information.
--version Show version and exit.
</code></pre></div></div>
<h3 id="default-parameter-configuration">Default parameter configuration</h3>
<p>Some default parameters (<em>host</em> and <em>port</em>) can be configured by defining them
as the environment variables <code class="language-plaintext highlighter-rouge">RMATE_HOST</code> and <code class="language-plaintext highlighter-rouge">RMATE_PORT</code> or by putting them
in a configuration file. The configuration files loaded are <code class="language-plaintext highlighter-rouge">/etc/rmate.rc</code>
and <code class="language-plaintext highlighter-rouge">~/.rmate.rc</code>, e.g.:</p>
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">host:</span> <span class="err">auto</span> <span class="c"># prefer host from SSH_CONNECTION over localhost
</span><span class="err">port:</span> <span class="err">52698</span>
</code></pre></div></div>
<p>Alternative notation for configuration file is:</p>
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="py">host</span><span class="p">=</span><span class="s">auto</span>
<span class="py">port</span><span class="p">=</span><span class="s">52698</span>
</code></pre></div></div>
<p>The precedence for setting the configuration is (higher precedence counts):</p>
<ol>
<li>default (localhost, 52698)</li>
<li>/etc/rmate.rc</li>
<li>~/.rmate/rmate.rc</li>
<li>~/.rmate.rc</li>
<li>environment variables (RMATE_HOST, RMATE_PORT)</li>
</ol>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/aurora/rmate">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/aurora">Harald Lapp</a></li>
</ul>
bash-backup
https://bpkg.sh/pkg/backup
2017-06-19T00:00:00+00:00
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>git clone git@github.com:newsdict/bash-backup.git
<span class="nv">$ </span><span class="nb">cd </span>bash-backup
<span class="nv">$ </span><span class="nb">cp </span>env-example .env
</code></pre></div></div>
<p>Edit <code class="language-plaintext highlighter-rouge">.env</code> file</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>bash backup.sh <span class="o">[</span><span class="nt">--debug</span><span class="o">]</span>
</code></pre></div></div>
<h3 id="multiple-targets">Multiple Targets</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>git clone git@github.com:newsdict/bash-backup.git
<span class="nv">$ </span><span class="nb">cd </span>bash-backup
<span class="nv">$ </span><span class="nb">cp </span>env-example .env-sample1
</code></pre></div></div>
<p>Edit <code class="language-plaintext highlighter-rouge">.env-sample1</code> file</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cp </span>env-example .env-sample2
</code></pre></div></div>
<p>Edit <code class="language-plaintext highlighter-rouge">.env-sample2</code> file</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>sh backup.sh <span class="o">[</span><span class="nt">--debug</span><span class="o">]</span> sample1
<span class="nv">$ </span>sh backup.sh <span class="o">[</span><span class="nt">--debug</span><span class="o">]</span> sample2
</code></pre></div></div>
<h2 id="flow">Flow</h2>
<ol>
<li>Archive the datas. (tar.gz or tar.bz2 or zip)</li>
<li>mysqldump - only mysql yet….</li>
<li>Rearchive the 1 and 2 (tar.gz or tar.bz2 or zip)</li>
<li>Upload to S3. (Generation management) - only s3 yet…….</li>
</ol>
<h2 id="environments">Environments</h2>
<h3 id="temporary-directory">Temporary Directory</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">temporary_directory</span><span class="o">=</span>tmp
</code></pre></div></div>
<h3 id="log-name">log name</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">log_name</span><span class="o">=</span>logs/backup.<span class="nv">$now</span>.log
</code></pre></div></div>
<h3 id="backup-filename">backup filename</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">backup_filename</span><span class="o">=</span>backup
</code></pre></div></div>
<h3 id="display-messages">display messages</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">display_messages</span><span class="o">=</span>1
</code></pre></div></div>
<h3 id="execute-archive">Execute archive</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">archive</span><span class="o">=</span>1
</code></pre></div></div>
<h3 id="archive-paths-or-files">Archive paths or files</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">declare</span> <span class="nt">-a</span> <span class="nv">archive_paths</span><span class="o">=(</span>
<span class="s2">"/var/www/html"</span>
<span class="s2">"/etc/nginx"</span>
<span class="o">)</span>
</code></pre></div></div>
<h3 id="compression-type-of-backup">Compression type of backup</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">commpression_type</span><span class="o">=</span><span class="nb">gzip</span>
</code></pre></div></div>
<ul>
<li><em>gzip: *.tar.gz</em></li>
<li><em>zip: *.zip</em></li>
<li><em>bzip2: *.tar.bz2</em></li>
</ul>
<h3 id="execute-database">Execute database</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">database</span><span class="o">=</span>1
</code></pre></div></div>
<h3 id="database-type-for-dump">Database Type for Dump</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">declare</span> <span class="nt">-A</span> <span class="nv">database_conf</span><span class="o">=(</span>
<span class="o">[</span><span class="s2">"engine"</span><span class="o">]=</span><span class="s2">"mysql"</span> <span class="c"># mysql only</span>
<span class="o">[</span><span class="s2">"name"</span><span class="o">]=</span><span class="s2">"sample1_database"</span> <span class="c"># database name</span>
<span class="o">[</span><span class="s2">"username"</span><span class="o">]=</span><span class="s2">"user1"</span> <span class="c"># username</span>
<span class="o">[</span><span class="s2">"password"</span><span class="o">]=</span><span class="s2">"pass"</span> <span class="c"># password</span>
<span class="o">[</span><span class="s2">"host"</span><span class="o">]=</span><span class="s2">"127.0.0.1"</span> <span class="c"># host</span>
<span class="o">[</span><span class="s2">"port"</span><span class="o">]=</span>3306 <span class="c"># port</span>
<span class="o">)</span>
</code></pre></div></div>
<h3 id="storage-type-for-backup-files">Storage type for backup files</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">storage_type</span><span class="o">=</span>s3
</code></pre></div></div>
<ul>
<li><em><code class="language-plaintext highlighter-rouge">s3</code> only</em></li>
</ul>
<h3 id="s3-info">s3 info</h3>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">declare</span> <span class="nt">-A</span> <span class="nv">s3_conf</span><span class="o">=(</span>
<span class="o">[</span><span class="s2">"keep"</span><span class="o">]=</span>5
<span class="o">[</span><span class="s2">"access_key"</span><span class="o">]=</span><span class="s2">""</span>
<span class="o">[</span><span class="s2">"secret"</span><span class="o">]=</span><span class="s2">""</span>
<span class="o">[</span><span class="s2">"bucket"</span><span class="o">]=</span><span class="s2">"backup"</span>
<span class="o">[</span><span class="s2">"path"</span><span class="o">]=</span><span class="s2">"test"</span>
<span class="o">[</span><span class="s2">"region"</span><span class="o">]=</span><span class="s2">"ap-northeast-1"</span>
<span class="o">)</span>
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/newsdict/bash-backup">Source Code (GitHub)</a></li>
<li>Author: <a href="httphttps://github.com/yubele">yubele</a></li>
</ul>
wipe modules
https://bpkg.sh/pkg/wipe-modules
2017-05-03T00:00:00+00:00
<blockquote>
<p>A little agent that removes the node_modules folder of non-active projects</p>
</blockquote>
<h2 id="why">Why</h2>
<p>If you’re a Javascript developer, you know the <code class="language-plaintext highlighter-rouge">node_modules</code> directory holds thousands or even millions of files, resulting in taking a lot of space in your hard disk.</p>
<p>Enter <code class="language-plaintext highlighter-rouge">wipe-modules</code>, a little agent that wipes (eats, literally) that big <code class="language-plaintext highlighter-rouge">node_modules</code> directory of non-active projects.</p>
<p>Why in Earth would you want to have those monster-sized <code class="language-plaintext highlighter-rouge">node_modules</code> folders on inactive projects? You got your <code class="language-plaintext highlighter-rouge">package.json</code> to recreate it whenever you want, right?</p>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>wipe-modules <span class="nt">--help</span>
Usage: wipe-modules <span class="o">[</span>path] <span class="o">[</span>days]
Path:
The full path of your code directory
Days:
The days you want to <span class="nb">set </span>to mark projects as inactive
Example: wipe-modules ~/code 30
That will remove the node_modules of your ~/code projects
whose been inactive <span class="k">for </span>30 days or more.
</code></pre></div></div>
<h2 id="using-cron">Using cron</h2>
<p><code class="language-plaintext highlighter-rouge">wipe-modules</code> can be executed as a background job using using <a href="https://en.wikipedia.org/wiki/Cron">cron</a></p>
<p>The default included <code class="language-plaintext highlighter-rouge">cron-file</code> file holds the following syntax:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0 11 <span class="k">*</span> <span class="k">*</span> <span class="k">*</span> <span class="nv">$HOME</span>/bin/wipe-modules ~/code_dir 30
</code></pre></div></div>
<p>That is the crontab (cron table) file, it instructs cron to run the <code class="language-plaintext highlighter-rouge">wipe-modules ~/code_dir 30</code> script everyday at 11:00 am.</p>
<p>Edit the <code class="language-plaintext highlighter-rouge">cron-file</code> to match your own needs, see <a href="https://en.wikipedia.org/wiki/Cron#Overview">how to set up a crontab</a> for more info.</p>
<p>Now set the <code class="language-plaintext highlighter-rouge">cron-file</code> crontab file in cron using:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>crontab ~/path_to_cronfile/cron-file
</code></pre></div></div>
<p>And you’re done!</p>
<p>To check if you’ve successfully added your crontab type:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>crontab <span class="nt">-l</span>
</code></pre></div></div>
<p>It should display your crontab.</p>
<p>To edit a crontab, use <code class="language-plaintext highlighter-rouge">crontab -e</code> and to delete all crontabs use <code class="language-plaintext highlighter-rouge">crontab -r</code>.</p>
<p>Note that <code class="language-plaintext highlighter-rouge">crontab -r</code> will destroy all your crontabs, that’s why it’s a good idea to keep your crontab commands in a <code class="language-plaintext highlighter-rouge">cron-file</code>.</p>
<p>Cron is only supported in unix operating systems.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bntzio/wipe-modules">Source Code (Github)</a></li>
<li>Author: <a href="https://bntz.io">Enrique Benitez</a></li>
<li><a href="https://twitter.com/bntzio">Contact (Twitter)</a></li>
</ul>
<h2 id="license">License</h2>
<p>MIT © <a href="https://bntz.io">Enrique Benitez</a></p>
tldr bash client
https://bpkg.sh/pkg/tldr-bash-client
2017-02-06T00:00:00+00:00
<p><strong>A fully-functional <a href="https://tiswww.case.edu/php/chet/bash/bashtop.html">bash</a>
client for the <a href="https://github.com/tldr-pages/tldr">tldr</a> project, providing
poignant examples of terminal commands.</strong></p>
<ul>
<li>Version: 0.3</li>
</ul>
<h2 id="installation">Installation</h2>
<p>Download the tldr bash script to the install location:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">location</span><span class="o">=</span>/usr/local/bin/tldr <span class="c"># elevated privileges needed for some locations</span>
<span class="nb">sudo </span>wget <span class="nt">-qO</span> <span class="nv">$location</span> https://raw.githubusercontent.com/pepa65/tldr-bash-client/master/tldr
<span class="nb">sudo chmod</span> +x <span class="nv">$location</span>
</code></pre></div></div>
<p>If the location is not in $PATH, you need to specify the path to run it.
Alternately, you can do <code class="language-plaintext highlighter-rouge">sudo bpkg-install pepa65/tldr</code> if you have
<a href="https://github.com/bpkg/bpkg">bpkg</a> installed.</p>
<h3 id="prerequisites">Prerequisites</h3>
<p>coreutils, less, grep, unzip, curl / wget</p>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> USAGE: tldr <span class="o">[</span>option] <span class="o">[</span>platform/]command
<span class="o">[</span>platform/]command: Show page <span class="k">for </span><span class="nb">command</span> <span class="o">(</span>from platform<span class="o">)</span>
platform is optionally one of: common, linux, osx, sunos
option is optionally one of:
<span class="nt">-l</span>, <span class="nt">--list</span> <span class="o">[</span>platform]: Show all available pages <span class="o">(</span>from platform<span class="o">)</span>
<span class="nt">-r</span>, <span class="nt">--render</span> file: Render a <span class="nb">local </span>file as tldr markdown
<span class="nt">-m</span>, <span class="nt">--markdown</span> <span class="nb">command</span>: Show the markdown <span class="nb">source </span><span class="k">for </span><span class="nb">command</span>
<span class="nt">-c</span>, <span class="nt">--cache</span>: Cache all pages by downloading archive from repo
<span class="nt">-u</span>, <span class="nt">--update</span>: Re-download index file from repo
<span class="nt">-v</span>, <span class="nt">--version</span>: Version number and repo location
<span class="o">[</span><span class="nt">-h</span>, -?, <span class="nt">--help</span><span class="o">]</span>: This <span class="nb">help </span>overview
All pages and the index are cached locally under <span class="nv">$HOME</span>/.local/share/tldr
By default, the cached copies will be freshly downloaded after 60 days.
</code></pre></div></div>
<h2 id="customization">Customization</h2>
<p>The 5 elements in TLDR markup that can be styled with these colors and
backgrounds (last one specified will be used) and modes (more can apply):</p>
<ul>
<li>Colors: Black, Red, Green, Yellow, Blue, Magenta, Cyan, White</li>
<li>BG: BlackBG, RedBG, GreenBG, YellowBG, BlueBG, MagentaBG, CyanBG, WhiteBG</li>
<li>Modes: Bold, Underline, Italic, Inverse</li>
</ul>
<p><code class="language-plaintext highlighter-rouge">Newline</code> can be added to the style list to add a newline before the element
and <code class="language-plaintext highlighter-rouge">Space</code> to add a space at the start of the line
(style items are separated by space, lower/uppercase mixed allowed)</p>
<ul>
<li>TLDR_TITLE_STYLE (defaults to: Newline Space Bold Yellow)</li>
<li>TLDR_DESCRIPTION_STYLE (defaults to: Space Yellow)</li>
<li>TLDR_EXAMPLE_STYLE (defaults to: Newline Space Bold Green)</li>
<li>TLDR_CODE_STYLE (defaults to: Space Bold Blue)</li>
<li>TLDR_VALUE_ISTYLE (defaults to: Space Bold Cyan)</li>
</ul>
<p>The Value style (above) is an Inline style: doesn’t take Newline or Space</p>
<p>Inline styles for help text: default, URL, option, platform, command, header</p>
<ul>
<li>TLDR_DEFAULT_ISTYLE (defaults to: White)</li>
<li>TLDR_URL_ISTYLE (defaults to: Yellow)</li>
<li>TLDR_HEADER_ISTYLE (defaults to: Bold)</li>
<li>TLDR_OPTION_ISTYLE (defaults to: Bold Yellow)</li>
<li>TLDR_PLATFORM_ISTYLE (defaults to: Bold Blue)</li>
<li>TLDR_COMMAND_ISTYLE (defaults to: Bold Cyan)</li>
<li>TLDR_FILE_ISTYLE (defaults to: Bold Magenta)</li>
</ul>
<p>Color/BG (Newline and Space also allowed) for error and info messages</p>
<ul>
<li>TLDR_ERROR_COLOR (defaults to: Newline Space Red)</li>
<li>TLDR_INFO_COLOR (defaults to: Newline Space Green)</li>
</ul>
<p>How many days before freshly downloading a potentially stale page</p>
<ul>
<li>TLDR_EXPIRY (defaults to: 60)</li>
</ul>
<p>Alternative location of pages cache</p>
<ul>
<li>TLDR_CACHE (not set by default)</li>
</ul>
<h2 id="contributing">Contributing</h2>
<p>Please file an issue for a question, a bug or a feature request.
Or even better, send a pull request!</p>
<h3 id="license">License</h3>
<p>Original client by Ray Lee http://github.com/raylee/tldr (MIT license)</p>
<p>Relicensed under GPLv3+</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/pepa65/tldr-bash-client">Source code (Github)</a></li>
<li>Author: <a href="mailto:solusos@passchier.net">pepa65</a></li>
</ul>
osxbootstrap
https://bpkg.sh/pkg/osxbootstrap
2016-09-12T00:00:00+00:00
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/divio/osx-bootstrap">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/finalangel">Angelo Dini</a></li>
</ul>
hr
https://bpkg.sh/pkg/hr
2016-07-04T00:00:00+00:00
<p>Tired of not finding things in your terminal because there’s a lot of logs and
garbage? Tired of destroying the Enter key by creating a “void zone” in your
terminal so that you can see the error that you’re trying to debug?</p>
<p>Use the old <code class="language-plaintext highlighter-rouge"><hr /></code> tag, but in your terminal.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/lurst/hr">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/lurst">Gil Goncalves</a></li>
</ul>
shpec
https://bpkg.sh/pkg/shpec
2015-05-05T00:00:00+00:00
<p>This package provides a command for testing your shell scripts.</p>
<h2 id="using-shpec">Using shpec</h2>
<p><a href="https://github.com/rylnd/shpec">shpec’s repo</a> itself is using shpec, so feel free to use it as an example.</p>
<p>Here is the basic structure that you’ll want:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└── shpec
└── an_example_shpec.sh
└── another_shpec.sh
</code></pre></div></div>
<p>Then to run your tests:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">shpec <span class="o">[</span>shpec_files]</code></pre></figure>
<p>If you’d like your tests to run automatically when they change, we recommend the <a href="http://entrproject.org/">entr</a> utility:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">find <span class="nb">.</span> <span class="nt">-name</span> <span class="s2">"*_shpec.sh"</span> | entr shpec</code></pre></figure>
<h3 id="examples">Examples</h3>
<p><a href="https://github.com/rylnd/shpec/tree/master/shpec/shpec_shpec.sh">shpec’s own tests</a>
are a great place to start. For more examples, see the <a href="https://github.com/rylnd/shpec/wiki/Examples">wiki page</a></p>
<h3 id="matchers">Matchers</h3>
<p>The general format is:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>assert matcher arguments
</code></pre></div></div>
<p>where <code class="language-plaintext highlighter-rouge">matcher</code> is one of the following:</p>
<h4 id="binary-matchers">Binary Matchers</h4>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">equal <span class="c"># equality</span>
unequal <span class="c"># inequality</span>
gt <span class="c"># algebraic '>'</span>
lt <span class="c"># algebraic '<'</span>
match <span class="c"># regex match</span>
no_match <span class="c"># lack of regex match</span></code></pre></figure>
<h4 id="unary-matchers">Unary Matchers</h4>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">present <span class="c"># string presence</span>
blank <span class="c"># string absence</span>
file_present <span class="c"># file presence</span>
file_absent <span class="c"># file absence</span>
symlink <span class="c"># tests a symlink's target</span>
<span class="nb">test</span> <span class="c"># evaluates a test string</span></code></pre></figure>
<h4 id="custom-matchers">Custom Matchers</h4>
<p>Custom matchers are loaded from <code class="language-plaintext highlighter-rouge">shpec/matchers/*.sh</code>.</p>
<p>For example, here’s how you’d create a <code class="language-plaintext highlighter-rouge">still_alive</code> matcher:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># in shpec/matchers/network.sh</span>
still_alive<span class="o">()</span> <span class="o">{</span>
ping <span class="nt">-oc1</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> <span class="o">></span> /dev/null 2>&1
assert equal <span class="s2">"</span><span class="nv">$?</span><span class="s2">"</span> 0
<span class="o">}</span></code></pre></figure>
<p>Then you can use that matcher like any other:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># in shpec/network_shpec.sh</span>
describe <span class="s2">"my server"</span>
it <span class="s2">"serves responses"</span>
assert still_alive <span class="s2">"my-site.com"</span>
end
end</code></pre></figure>
<h2 id="installation">Installation</h2>
<p>You can either install with bpkg</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install </span>rylnd/shpec</code></pre></figure>
<p>or with curl</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">sh <span class="nt">-c</span> <span class="s2">"</span><span class="sb">`</span>curl <span class="nt">-L</span> https://raw.github.com/rylnd/shpec/master/install.sh<span class="sb">`</span><span class="s2">"</span></code></pre></figure>
<p>or with <a href="https://github.com/zsh-users/antigen">antigen</a> for zsh by
putting <code class="language-plaintext highlighter-rouge">antigen bundle rylnd/shpec</code> in your <code class="language-plaintext highlighter-rouge">.zshrc</code></p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/rylnd/shpec">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/rylnd">Ryland Herrick</a></li>
</ul>
clock
https://bpkg.sh/pkg/clock
2015-04-19T00:00:00+00:00
<h2 id="install">Install</h2>
<p>Available as a <a href="http://www.bpkg.sh/">bpkg</a></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bpkg <span class="nb">install</span> <span class="o">[</span><span class="nt">-g</span><span class="o">]</span> lordvlad/clock
</code></pre></div></div>
<h2 id="usage">Usage</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>clock <<span class="nb">command</span><span class="o">></span> <span class="o">[</span><task>] <span class="o">[</span><options>]
</code></pre></div></div>
<h3 id="commands">Commands</h3>
<ul>
<li><code class="language-plaintext highlighter-rouge">clock help</code> show the help</li>
<li><code class="language-plaintext highlighter-rouge">clock in</code> clock in, will clock out any running task</li>
<li><code class="language-plaintext highlighter-rouge">clock out</code> clock out</li>
<li><code class="language-plaintext highlighter-rouge">clock log</code> show all log entries, or log entries for <code class="language-plaintext highlighter-rouge"><task></code></li>
<li><code class="language-plaintext highlighter-rouge">clock list</code> show sums for all tasks</li>
</ul>
<h3 id="task">Task</h3>
<p>If no task is specified, the current working directory
will be used as task identifier</p>
<h3 id="options">Options</h3>
<ul>
<li><code class="language-plaintext highlighter-rouge">-m|--message</code> record additional message when clocking in/out</li>
<li><code class="language-plaintext highlighter-rouge">-f|--file</code> where to save the clocks, defaults to <code class="language-plaintext highlighter-rouge">$HOME/.clocks</code></li>
<li><code class="language-plaintext highlighter-rouge">--by-task</code> sort log entries by task for <code class="language-plaintext highlighter-rouge">clock log</code></li>
<li><code class="language-plaintext highlighter-rouge">--gt=DATE</code> with <code class="language-plaintext highlighter-rouge">clock log</code>, show only entries after <code class="language-plaintext highlighter-rouge">DATE</code>, with <code class="language-plaintext highlighter-rouge">clock list</code> sum up only entries after <code class="language-plaintext highlighter-rouge">DATE</code>.
<code class="language-plaintext highlighter-rouge">DATE</code> can be any string that unix’ <code class="language-plaintext highlighter-rouge">date</code> understands</li>
<li><code class="language-plaintext highlighter-rouge">--lt=DATE</code> with <code class="language-plaintext highlighter-rouge">clock log</code>, show only entries before <code class="language-plaintext highlighter-rouge">DATE</code>, with <code class="language-plaintext highlighter-rouge">clock list</code> sum up only entries before <code class="language-plaintext highlighter-rouge">DATE</code>.
<code class="language-plaintext highlighter-rouge">DATE</code> can be any string that unix’ <code class="language-plaintext highlighter-rouge">date</code> understands</li>
</ul>
<h2 id="examples">Examples</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">mkdir</span> <span class="nt">-p</span> tasks/<span class="o">{</span>work,sleep<span class="o">}</span>
<span class="nv">$ </span>clock <span class="k">in </span>tasks/work
<span class="o">></span> clocked <span class="k">in</span> /home/lordvlad/tasks/work
<span class="nv">$ </span>clock <span class="k">in </span>tasks/sleep
<span class="o">></span> clocked out /home/lordvlad/tasks/work
<span class="o">></span> clocked <span class="k">in</span> /home/lordvlad/tasks/sleep
<span class="nv">$ </span>clock out
<span class="o">></span> clocked out /home/lordvlad/tasks/sleep
<span class="nv">$ </span>clock log
<span class="o">></span> Tue 21 Apr 2015 06:31:24 PM UTC 00:01:23 /home/lordvlad/tasks/work
<span class="o">></span> Tue 21 Apr 2015 06:32:47 PM UTC 00:00:04 /home/lordvlad/tasks/sleep
<span class="nv">$ </span>clock list
<span class="o">></span> 00:00:04 /home/lordvlad/tasks/sleep
<span class="o">></span> 00:01:23 /home/lordvlad/tasks/work
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/lordvlad/clock">Source Code (Github)</a></li>
<li>Author: <a href="https://github.com/lordvlad">lordvlad</a></li>
</ul>
is.sh
https://bpkg.sh/pkg/issh
2015-04-14T00:00:00+00:00
<p><strong>is.sh</strong> allows you to write conditions which can be read by average human being.</p>
<h2 id="usage">Usage</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">var</span><span class="o">=</span>123
<span class="k">if </span>is equal <span class="nv">$var</span> 123.0<span class="p">;</span> <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"it just works"</span>
<span class="k">fi
if </span>is not a substring <span class="nv">$var</span> <span class="s2">"foobar"</span><span class="p">;</span> <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"and it's easy to read"</span>
<span class="k">fi</span></code></pre></figure>
<h3 id="available-conditions">Available conditions</h3>
<ul>
<li><code class="language-plaintext highlighter-rouge">is equal <valueA> <valueB></code> - checks if values are the same or if they are equal numbers</li>
<li><code class="language-plaintext highlighter-rouge">is matching <value> <regexp></code> - checks if whole value matches to regular expression</li>
<li><code class="language-plaintext highlighter-rouge">is substring <value> <string></code> - checks if first value is a part of second one</li>
<li><code class="language-plaintext highlighter-rouge">is empty <value></code> - checks if value is empty</li>
<li><code class="language-plaintext highlighter-rouge">is number <value></code> - checks if value is a number</li>
<li><code class="language-plaintext highlighter-rouge">is gt <numberA> <numberB></code> - true if first number is greater than second one</li>
<li><code class="language-plaintext highlighter-rouge">is lt <numberA> <numberB></code> - true if first number is less than second one</li>
<li><code class="language-plaintext highlighter-rouge">is ge <numberA> <numberB></code> - true if first number is greater than or equal to second one</li>
<li><code class="language-plaintext highlighter-rouge">is le <numberA> <numberB></code> - true if first number is less than or equal to second one</li>
<li><code class="language-plaintext highlighter-rouge">is file <path></code> - checks if it is a file</li>
<li><code class="language-plaintext highlighter-rouge">is dir <path></code> - checks if it is a directory</li>
<li><code class="language-plaintext highlighter-rouge">is link <path></code> - checks if it is a symbolic link</li>
<li><code class="language-plaintext highlighter-rouge">is existent <path></code> - checks if there is a file or directory or anything else with this path</li>
<li><code class="language-plaintext highlighter-rouge">is readable <path></code> - checks if file is readable</li>
<li><code class="language-plaintext highlighter-rouge">is writeable <path></code> - checks if file is writeable</li>
<li><code class="language-plaintext highlighter-rouge">is executable <path></code> - checks if file is executable</li>
<li><code class="language-plaintext highlighter-rouge">is older <pathA> <pathB></code> - checks if first file is older than second one</li>
<li><code class="language-plaintext highlighter-rouge">is newer <pathA> <pathB></code> - checks if first file is newer than second one</li>
<li><code class="language-plaintext highlighter-rouge">is true <value></code> - true if value is equal “true” or “0”</li>
<li><code class="language-plaintext highlighter-rouge">is false <value></code> - oposite of <code class="language-plaintext highlighter-rouge">is true <value></code></li>
</ul>
<h3 id="negations">Negations</h3>
<p>You can negate any condition by putting <code class="language-plaintext highlighter-rouge">not</code> in front of it:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>is a number <span class="s2">"abc"</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"number"</span>
<span class="nv">$ </span>is not a number <span class="s2">"abc"</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"not a number"</span>
not a number</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/qzb/is.sh">Source Code (GitHub)</a>;</li>
<li>Author: <a href="https://github.com/qzb">Józef Sokołowski</a>;</li>
</ul>
node-reinstall
https://bpkg.sh/pkg/node-reinstall
2015-03-04T00:00:00+00:00
<p>This package re-installs Node.js and NPM using NVM or Nave.</p>
<h2 id="usage">Usage</h2>
<p><code class="language-plaintext highlighter-rouge">node-reinstall</code> can typically be run as-is, though you can specify several arguments to customize to your liking.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>node-reinstall <span class="nt">-h</span>
node-reinstall
completely re-installs Node & NPM and any global node modules.
It re-installs Node using NVM or Nave
Usage: node-reinstall <span class="o">[</span><span class="nt">--nave</span>|--nvm|--nvm-latest] <span class="o">[</span><span class="nt">-h</span>|--help] <span class="o">[</span><span class="nt">-v</span>|--version] <span class="o">[</span>NODE_VERSION]
Commands:
node-reinstall re-install node and npm using nvm
node-reinstall <span class="o">[</span><span class="nt">-h</span>|--help] show <span class="nb">help
</span>node-reinstall <span class="o">[</span><span class="nt">-v</span>|--version] show the node-reinstall version number
node-reinstall <span class="o">[</span><span class="nt">-f</span>|--force] installs defaults without user confirmation
node-reinstall <span class="nt">--nave</span> re-install using nave
node-reinstall <span class="nt">--nvm</span> re-install using stable nvm - the default
node-reinstall <span class="nt">--nvm-latest</span> re-install using latest nvm - creationix/nvm:master
node-reinstall 0.12 specify a default node version - currently
</code></pre></div></div>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/brock/node-reinstall">Source Code (Github)</a></li>
<li>Author: <a href="https://github.com/brock">Brock Angelo</a></li>
</ul>
gdub
https://bpkg.sh/pkg/gdub
2014-10-20T00:00:00+00:00
<p>gdub (<code class="language-plaintext highlighter-rouge">gw</code> on the command line) is a <code class="language-plaintext highlighter-rouge">gradle</code> / <code class="language-plaintext highlighter-rouge">gradlew</code> wrapper. Not to be
confused with the <a href="http://www.gradle.org">Gradle</a> <a href="http://www.gradle.org/docs/current/userguide/gradle_wrapper.html">Wrapper</a>, <code class="language-plaintext highlighter-rouge">gw</code> uses the Gradle Wrapper on
projects where one is configured, and falls back to use the <code class="language-plaintext highlighter-rouge">gradle</code> from the
<code class="language-plaintext highlighter-rouge">$PATH</code> if a wrapper is not available. Also, <code class="language-plaintext highlighter-rouge">gw</code> is 66% shorter to type than
<code class="language-plaintext highlighter-rouge">gradle</code> and 78% shorter to type than <code class="language-plaintext highlighter-rouge">./gradlew</code>. That’s science.</p>
<p>Anywhere you happen to be on your project, you can run the Gradle tasks of your
project by typing <code class="language-plaintext highlighter-rouge">gw <tasks></code>, regardless of whether you use the Gradle Wrapper
in your project or not.</p>
<p><code class="language-plaintext highlighter-rouge">gw</code> works by looking upwards from your current directory and will run the
nearest <code class="language-plaintext highlighter-rouge">build.Gradle</code> file with the nearest <code class="language-plaintext highlighter-rouge">gradlew</code>. If a <code class="language-plaintext highlighter-rouge">gradlew</code> cannot be
found, it will run the nearest <code class="language-plaintext highlighter-rouge">build.Gradle</code> with your system’s Gradle. This is
probably always what you want to do if you are running Gradle from within a
project tree that uses the Gradle build system.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="http://gdub.rocks">Project Page</a></li>
<li><a href="https://github.com/dougborg/gdub">Source Code (GitHub)</a></li>
<li>Author: <a href="http://dougborg.org">Doug Borg</a></li>
</ul>
bashsh
https://bpkg.sh/pkg/bashsh
2014-10-01T00:00:00+00:00
<p>Improves your Bash scripts.</p>
<h2 id="usage">Usage</h2>
<p>The following shebang</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env bashsh-0</span>
</code></pre></div></div>
<p>gives you:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">set -e</code> by default:</li>
</ul>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">echo </span>hello <span class="p">;</span> <span class="nb">false</span> <span class="p">;</span> <span class="nb">echo </span>world
</code></pre></div></div>
<p>will only print <code class="language-plaintext highlighter-rouge">hello</code>.</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">CMD</code> for showing executed commands in bold on stderr:</li>
</ul>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>CMD git status
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">CMD_STR</code> prints the string in bold on stderr and runs it with <code class="language-plaintext highlighter-rouge">eval</code>:</li>
</ul>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>CMD_STR <span class="s1">'gitk --all &'</span>
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">MSG</code> prints a remark in bold on stderr, formatted as a comment:</li>
</ul>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>MSG hello world
</code></pre></div></div>
<p>prints <code class="language-plaintext highlighter-rouge"># hello world</code>.</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">READ_P</code> works like <code class="language-plaintext highlighter-rouge">read -p</code> but prints the first parameter using <code class="language-plaintext highlighter-rouge">MSG</code>:</li>
</ul>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>READ_P <span class="s1">'What is your name? '</span> your_name
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">QUOTED</code> prints the given arguments in a way that is safe to pass to commands:</li>
</ul>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">echo</span> <span class="s2">"My arguments are: </span><span class="si">$(</span>QUOTED <span class="s2">"</span><span class="nv">$@</span><span class="s2">"</span><span class="si">)</span><span class="s2">"</span>
</code></pre></div></div>
<p>You can find a few examples in the examples directory.</p>
<h2 id="caveats--known-limitations">Caveats / known limitations</h2>
<p>You <strong>cannot</strong> just</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bpkg <span class="nb">install </span>bashsh
</code></pre></div></div>
<p>to install bashsh locally (it is forced to install globally anyway), because if you use</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env ./relative/path/to/bashsh-0</span>
</code></pre></div></div>
<p>the path of the command supplied to <code class="language-plaintext highlighter-rouge">env</code> will be interpreted as relative to the <em>working directory</em>, not to the <em>script’s directory</em>.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/mcrio/bashsh">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/felixrabe">Felix Rabe</a></li>
</ul>
markdown
https://bpkg.sh/pkg/markdown
2014-06-17T00:00:00+00:00
<p>markdown.bash is a Markdown interpreter using only traditional Unix tools. Specifically, it only uses <code class="language-plaintext highlighter-rouge">bash</code>, <code class="language-plaintext highlighter-rouge">sed</code>, <code class="language-plaintext highlighter-rouge">grep</code>, and <code class="language-plaintext highlighter-rouge">cut</code> (in one small instance).</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install </span>markdown.bash</code></pre></figure>
<h2 id="usage">Usage</h2>
<p>Use it just like any other Unix program - by either passing files to it or piping input into it.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Converts `test.md` to HTML and sends to</span>
<span class="c"># standard output</span>
markdown.sh samples/test.md
<span class="c"># Concatenates all the files and converts</span>
<span class="c"># them all from Markdown to HTML into `output.html`</span>
markdown.sh file1 file2 file3 <span class="o">></span> output.html
<span class="c"># Also accepts Markdown piped into it</span>
<span class="nb">echo</span> <span class="s2">"# heading1</span><span class="se">\n\n</span><span class="s2">paragraph"</span> | markdown.sh</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/markdown.bash">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/chadbraunduin">Chad Braun-Duin</a></li>
<li>Packager: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
wifi
https://bpkg.sh/pkg/wifi
2014-06-16T00:00:00+00:00
<p>This package provides convenient commands to manage your wifi networks.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> wifi</code></pre></figure>
<h2 id="usage">Usage</h2>
<p>Some commands require root privileges to access wifi info.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># List currently available wifi networks.</span>
<span class="nb">sudo </span>wifi.sh scan
<span class="c"># Connect to best network</span>
<span class="nb">sudo </span>wifi.sh connect
<span class="c"># Add a network to file.</span>
<span class="nb">sudo </span>wifi.sh add <SSID> <passphrase>
<span class="c"># Show current interface</span>
wifi.sh interface
<span class="c"># this defaults to the LAST interface</span>
<span class="c"># it finds, for me, this is the most recent USB wifi</span>
<span class="c"># dongle I plugged in.</span>
<span class="c"># Set interface manually like this:</span>
<span class="nb">sudo </span><span class="nv">INTERFACE</span><span class="o">=</span>wlan0 wifi.sh connect
<span class="c"># Set wpa_supplicant.conf location</span>
<span class="nb">sudo </span><span class="nv">WPA_CONF</span><span class="o">=</span>/etc/wpa_supplicant.conf wifi.sh connect</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/wifi">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/dominictarr">Dominic Tarr</a></li>
<li>Packager: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
umq
https://bpkg.sh/pkg/umq
2014-06-16T00:00:00+00:00
<p>This package makes easy to handle TCP requests on the command-line.</p>
<p>You can both send and receive messages with the portability only Bash can offer.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install </span>umq <span class="nt">-g</span></code></pre></figure>
<h2 id="usage">Usage</h2>
<p><code class="language-plaintext highlighter-rouge">umq</code> is quite a toolbox - there are several ways you can use it.</p>
<p>Let’s take a <strong>server</strong>, for example.
The following will create a server and listen on <code class="language-plaintext highlighter-rouge">localhost</code> port <code class="language-plaintext highlighter-rouge">3000</code> for all incoming TCP messages.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>umq recv 3000 | <span class="o">{</span> <span class="se">\</span>
<span class="k">while </span><span class="nb">read</span> <span class="nt">-r</span> line<span class="p">;</span> <span class="k">do</span> <span class="se">\</span>
<span class="nb">echo</span> <span class="s2">"got: '</span><span class="nv">$line</span><span class="s2">'"</span><span class="p">;</span> <span class="se">\</span>
<span class="k">done</span><span class="p">;</span> <span class="se">\</span>
<span class="o">}</span></code></pre></figure>
<p>You can <strong>connect</strong> and read from the server by using <code class="language-plaintext highlighter-rouge">umq</code> itself:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>umq recv localhost 3000</code></pre></figure>
<p><strong>Pushing</strong> data is just as easy:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span><span class="nb">echo</span> <span class="s2">"ping"</span> | umq push localhost 3000
<span class="c"># It should yield the following response</span>
<span class="c"># on the umq server:</span>
got: <span class="s1">'ping'</span></code></pre></figure>
<h3 id="umqs-api">umq’s API</h3>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">usage: umq <<span class="nb">command</span><span class="o">></span> <span class="o">[</span><span class="nt">-hV</span><span class="o">]</span>
examples:
<span class="nv">$ </span><span class="nb">echo</span> <span class="s2">"hello world"</span> | umq push localhost 3000
<span class="nv">$ </span>umq recv localhost 3000 | <span class="k">while </span><span class="nb">read </span>line<span class="p">;</span> <span class="k">do</span> <span class="se">\</span>
<span class="nb">echo</span> <span class="s2">"msg: </span><span class="nv">$line</span><span class="s2">"</span><span class="p">;</span> <span class="k">done
</span>commands:
push <host> <port> push message to host with port
recv <host> <port> receive message on host with port
<span class="nb">help</span> <<span class="nb">command</span><span class="o">></span> see more information on a <span class="nb">command
</span>options:
<span class="nt">-h</span>, <span class="nt">--help</span> display this message
<span class="nt">-V</span>, <span class="nt">--version</span> output version</code></pre></figure>
<h3 id="real-life-examples">Real-life Examples</h3>
<h3 id="cpu-histogram">CPU Histogram</h3>
<p>Using <code class="language-plaintext highlighter-rouge">umq</code> with the <a href="https://github.com/visionmedia/histo">histo</a> viewer allows for data to be streamed via TCP to a histogram chart.
See <a href="https://gist.github.com/jwerle/8076956">cpu-stream</a> for a preview.</p>
<h3 id="wall-server"><code class="language-plaintext highlighter-rouge">wall</code> server</h3>
<p>Streaming messages to all users via the <code class="language-plaintext highlighter-rouge">wall</code> program. See <a href="https://github.com/jwerle/umq/blob/master/examples/wall-server.sh">wall-server</a>.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/umq">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
rtail
https://bpkg.sh/pkg/rtail
2014-06-16T00:00:00+00:00
<p>Sometimes you just want to quickly access the final contents of a file on a remote SSH host.
Well, now you can do it.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> rtail</code></pre></figure>
<h2 id="usage">Usage</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># The following will open `/var/log/host.log` on</span>
<span class="c"># on `somehost.com` as if it was on our machine</span>
<span class="nv">$ </span>rtail user@somehost.com <span class="nt">-f</span> /var/log/host.log
<span class="c"># All options</span>
<span class="nv">$ </span>rtail <span class="nt">--help</span>
rtail <span class="o">[</span><span class="nt">-hvV</span><span class="o">]</span> <span class="o">[</span>ssh_options] <span class="o">[</span>user@] <span class="o">[</span>tail_options] <span class="o">[</span>files...]
<span class="nt">-v</span>, <span class="nt">--verbose</span> <span class="nb">enable </span>verbose output
<span class="nt">-h</span>, <span class="nt">--help</span> display this message
<span class="nt">-V</span>, <span class="nt">--version</span> output version
<span class="o">[</span>ssh_options] ssh options
<span class="o">[</span>tail_options] <span class="nb">tail </span>options</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/rtail">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
<li><a href="http://bpkg.sh/pkg/recho">“Sister project” <em>recho</em></a></li>
</ul>
recho
https://bpkg.sh/pkg/recho
2014-06-16T00:00:00+00:00
<p>This package makes easy to send quick strings across SSH hosts.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> recho</code></pre></figure>
<h2 id="usage">Usage</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># The following will create a file `/var/log/dump`</span>
<span class="c"># on `somehost.com` under `user` with the content `beep`</span>
<span class="nv">$ </span>recho user@somehost.com beep <span class="o">></span> /var/log/dump
<span class="c"># All options</span>
<span class="nv">$ </span>recho <span class="nt">--help</span>
recho <span class="o">[</span><span class="nt">-hvV</span><span class="o">]</span> <span class="o">[</span>ssh_options] <span class="o">[</span>user@] <span class="o">[</span>echo_options] <span class="o">[</span>string]
<span class="nt">-v</span>, <span class="nt">--verbose</span> <span class="nb">enable </span>verbose output
<span class="nt">-h</span>, <span class="nt">--help</span> display this message
<span class="nt">-V</span>, <span class="nt">--version</span> output version
<span class="o">[</span>ssh_options] ssh options
<span class="o">[</span>echo_options] <span class="nb">echo </span>options</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/recho">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
<li><a href="http://bpkg.sh/pkg/rtail">“Sister project” <em>rtail</em></a></li>
</ul>
osx-screencast
https://bpkg.sh/pkg/osx-screencast
2014-06-16T00:00:00+00:00
<p>Easily create a screencast on OS X in a few commands.
Inspired from <a href="https://gist.github.com/dergachev/4627207">this gist</a>.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> osx-screencast</code></pre></figure>
<h2 id="usage">Usage</h2>
<p>For an animated example visit the GitHub page on the links below.</p>
<p>The <code class="language-plaintext highlighter-rouge">osx-screencast-record</code> command basically just opens up an application with <code class="language-plaintext highlighter-rouge">open -a</code> defaulting to <code class="language-plaintext highlighter-rouge">Quicktime Player</code> as the application that gets opened. The <code class="language-plaintext highlighter-rouge">-a</code> or <code class="language-plaintext highlighter-rouge">--application</code> can be used to override this values.</p>
<h3 id="record">Record</h3>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>osx-screencast record
Opening <span class="sb">`</span>Quicktime Player<span class="s1">'...</span></code></pre></figure>
<p>Record your screen in the application you’ve chosen and save the file.
You will need to know the path to the file you’ve saved because it will be the <code class="language-plaintext highlighter-rouge">source</code> of the <code class="language-plaintext highlighter-rouge">osx-screencast-export</code> command.</p>
<h3 id="export">Export</h3>
<p>The <code class="language-plaintext highlighter-rouge">osx-screencast-export</code> command wraps the use of <code class="language-plaintext highlighter-rouge">ffmpeg</code> and <code class="language-plaintext highlighter-rouge">convert</code> with default arguments. You can define the output fps for a video with the <code class="language-plaintext highlighter-rouge">-f</code> or <code class="language-plaintext highlighter-rouge">--fps</code> option. The default is <code class="language-plaintext highlighter-rouge">10</code>. The delay between each frame in the output can be defined in milliseconds with the <code class="language-plaintext highlighter-rouge">-d</code> or <code class="language-plaintext highlighter-rouge">--delay</code> option. The default is <code class="language-plaintext highlighter-rouge">5</code>. The output scale can be defined with the <code class="language-plaintext highlighter-rouge">-s</code> or <code class="language-plaintext highlighter-rouge">--scale</code> option. The default is <code class="language-plaintext highlighter-rouge">320:-1</code>. See <a href="https://trac.ffmpeg.org/wiki/Scaling%20(resizing)%20with%20ffmpeg">this link</a> for more information on <code class="language-plaintext highlighter-rouge">ffmpeg</code> scaling.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>osx-screencast <span class="nb">export </span>screencast.mov screencast.gif <span class="nt">-s</span> <span class="s1">'720:-1'</span>
Transcoding frames...
Converting and writing to destination...
Ok! <span class="o">(</span>screencast.mov <span class="o">=></span> screencast.gif<span class="o">)</span></code></pre></figure>
<h3 id="api">api</h3>
<h4 id="osx-screencast">osx-screencast</h4>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">usage: osx-screenshot <span class="o">[</span><span class="nt">-hV</span><span class="o">]</span>
or: osx-screenshot record <span class="o">[</span><span class="nt">-h</span><span class="o">]</span> <span class="o">[</span><span class="nt">-a</span> application]
or: osx-screenshot <span class="nb">export</span> <span class="o">[</span><span class="nt">-h</span><span class="o">]</span> <span class="o">[</span><span class="nt">-f</span> fps] <span class="o">[</span><span class="nt">-s</span> scale] <span class="o">[</span><span class="nt">-d</span> delay] <src> <dest></code></pre></figure>
<h4 id="record-1">record</h4>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">usage: osx-screenshot-record <span class="o">[</span><span class="nt">-h</span><span class="o">]</span>
or: osx-screenshot-record <span class="o">[</span><span class="nt">-a</span> application]
options:
<span class="nt">-a</span>,--application Set screen recording application <span class="o">(</span>Default: <span class="s1">'Quicktime Player'</span><span class="o">)</span>
<span class="nt">-h</span>,--help Show this message</code></pre></figure>
<h4 id="export-1">export</h4>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">usage: osx-screenshot-export <span class="o">[</span><span class="nt">-h</span><span class="o">]</span>
or: osx-screenshot-export <span class="o">[</span><span class="nt">-f</span> fps] <span class="o">[</span><span class="nt">-s</span> scale] <span class="o">[</span><span class="nt">-d</span> delay] <src> <dest>
options:
<span class="nt">-f</span>,--fps Frames per second <span class="o">(</span>Default: 10<span class="o">)</span>
<span class="nt">-s</span>,--scale Output scaling <span class="o">(</span>Default: 320:-1<span class="o">)</span>
<span class="nt">-d</span>,--delay Frame delay
<span class="nt">-h</span>,--help Show this message</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/osx-screencast">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
nman
https://bpkg.sh/pkg/nman
2014-06-16T00:00:00+00:00
<p>This package adds the convenience of man pages to <a href="http://nodejs.org/api/">the node.js API</a>.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install </span>nman <span class="nt">-g</span></code></pre></figure>
<h2 id="usage">Usage</h2>
<p>Just use <code class="language-plaintext highlighter-rouge">nman</code> along with the node API you’d like to view.
Some examples:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># For the File System module</span>
<span class="nv">$ </span>nman fs
<span class="c"># ...and the console</span>
<span class="nv">$ </span>nman console
<span class="c"># The name is the same as you'd `require` it</span>
<span class="c"># For the "Assertion Testing", just like you</span>
<span class="c"># would `require(assert)`, do...</span>
<span class="nv">$ </span>nman assert</code></pre></figure>
<p><em>NOTE:</em> It requires <em>an active internet connection</em>. It does not come with the docs nor stores offline as they are requested.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/nman">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
json.sh
https://bpkg.sh/pkg/jsonsh
2014-06-16T00:00:00+00:00
<p>yo, so it’s a json parser written in bash</p>
<p>Pipe json to it, and it traverses the json objects and prints out the path to the current object (as a JSON array) and then the object, without whitespace.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> json.sh</code></pre></figure>
<h2 id="usage">Usage</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>json_parse < package.json
<span class="o">[</span><span class="s2">"name"</span><span class="o">]</span> <span class="s2">"JSON.sh"</span>
<span class="o">[</span><span class="s2">"version"</span><span class="o">]</span> <span class="s2">"0.0.0"</span>
<span class="o">[</span><span class="s2">"description"</span><span class="o">]</span> <span class="s2">""</span>
<span class="o">[</span><span class="s2">"homepage"</span><span class="o">]</span> <span class="s2">"http://github.com/dominictarr/JSON.sh"</span>
<span class="o">[</span><span class="s2">"repository"</span>,<span class="s2">"type"</span><span class="o">]</span> <span class="s2">"git"</span>
<span class="o">[</span><span class="s2">"repository"</span>,<span class="s2">"url"</span><span class="o">]</span> <span class="s2">"https://github.com/dominictarr/JSON.sh.git"</span>
<span class="o">[</span><span class="s2">"repository"</span><span class="o">]</span> <span class="o">{</span><span class="s2">"type"</span>:<span class="s2">"git"</span>,<span class="s2">"url"</span>:<span class="s2">"https://github.com/dominictarr/JSON.sh.git"</span><span class="o">}</span>
<span class="o">[</span><span class="s2">"bin"</span>,<span class="s2">"json_parse"</span><span class="o">]</span> <span class="s2">"./JSON.sh"</span>
<span class="o">[</span><span class="s2">"bin"</span><span class="o">]</span> <span class="o">{</span><span class="s2">"json_parse"</span>:<span class="s2">"./JSON.sh"</span><span class="o">}</span>
<span class="o">[</span><span class="s2">"dependencies"</span><span class="o">]</span> <span class="o">{}</span>
<span class="c"># ... etc</span>
<span class="c"># Here's a more complex example:</span>
<span class="c">#... try it and see</span>
curl registry.npmjs.org/express | ./JSON.sh | egrep <span class="s1">'\["versions","[^"]*"\]'</span></code></pre></figure>
<h3 id="options">Options</h3>
<ul>
<li>-b
Brief output. Combines ‘Leaf only’ and ‘Prune empty’ options.</li>
<li>-l
Leaf only. Only show leaf nodes, which stops data duplication.</li>
<li>-p
Prune empty. Exclude fields with empty values.</li>
<li>-h
Show help text.</li>
</ul>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/JSON.sh">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/dominictarr">Dominic Tarr</a></li>
<li>Packager: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
dots
https://bpkg.sh/pkg/dots
2014-06-16T00:00:00+00:00
<p><img src="https://i.cloudup.com/RCpB-ASfme.png" alt="image" /></p>
<p>The goal of <code class="language-plaintext highlighter-rouge">dots</code> is to automate the process of getting your operating system from a stock build to a fully functional machine.</p>
<p><code class="language-plaintext highlighter-rouge">dots</code> should be the first thing you download and run to get your computer set up. Dots differs from dotfiles, beacause dots installs and configures applications as well as builds your profile.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install </span>dots</code></pre></figure>
<h3 id="supported-operating-systems">Supported Operating systems:</h3>
<h4 id="mac-os-x">Mac OS X</h4>
<p>The OSX build does the following:</p>
<ul>
<li>install homebrew</li>
<li>installs binaries (graphicsmagick, python, sshfs, ack, git, etc.)</li>
<li>sets OSX defaults</li>
<li>installs applications via <code class="language-plaintext highlighter-rouge">homebrew-cask</code> (one-password, sublime-text, virtualbox, nv-alt, iterm2, etc.)</li>
<li>sets up the ~/.bash_profile</li>
</ul>
<h4 id="ubuntu-server">Ubuntu (server)</h4>
<p>The Ubuntu build does the following:</p>
<ul>
<li>dash => bash</li>
<li>creates a user</li>
<li>installs git and curl</li>
<li>sets up the ssh keys</li>
<li>configures fail2ban</li>
<li>sets up the firewall</li>
<li>installs docker</li>
</ul>
<h2 id="usage">Usage</h2>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">Usage: dots <span class="o">[</span>options] <span class="o">[</span><span class="nb">command</span><span class="o">]</span> <span class="o">[</span>args ...]
Options:
<span class="nt">-v</span>, <span class="nt">--version</span> Get the version
<span class="nt">-h</span>, <span class="nt">--help</span> This message
Commands:
reload Reload the dotfiles
boot <os> Bootstrap the given operating system
update Update dots</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/dots">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/MatthewMueller">Matthew Mueller</a></li>
<li>Packager: <a href="https://github.com/jwerle">Joseph Werle</a></li>
<li>Logo by <a href="http://www.thenounproject.com/pchuchla/">Piotrek Chuchla</a></li>
</ul>
dbu
https://bpkg.sh/pkg/dbu
2014-06-16T00:00:00+00:00
<p><img src="http://www.andreafabrizi.it/images/dropbox_logo.png" alt="logo" /></p>
<p><code class="language-plaintext highlighter-rouge">dbu</code> (Dropbox Uploader) is a BASH script which can be used to upload, download, list or delete files from Dropbox, an online file sharing, synchronization and backup service.</p>
<p>It’s written in BASH scripting language and only needs <strong>cURL</strong>.</p>
<p><strong>Why use this script?</strong></p>
<ul>
<li><strong>Portable:</strong> It’s written in BASH scripting and only needs <em>cURL</em> (curl is a tool to transfer data from or to a server, available for all operating systems and installed by default in many linux distributions).</li>
<li><strong>Secure:</strong> It’s not required to provide your username/password to this script, because it uses the official Dropbox API for the authentication process.</li>
</ul>
<p>Please refer <a href="https://github.com/andreafabrizi/Dropbox-Uploader/wiki">to the Wiki</a> for tips and additional information about this project. The Wiki is also the place where you can share your scripts and examples related to Dropbox Uploader.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> dbu</code></pre></figure>
<h2 id="usage">Usage</h2>
<p>The <code class="language-plaintext highlighter-rouge">dbu</code> package comes with two executables - <code class="language-plaintext highlighter-rouge">dropbox_uploader.sh</code> and <code class="language-plaintext highlighter-rouge">dropShell.sh</code>.</p>
<h3 id="dropbox-uploader">Dropbox Uploader</h3>
<p>This script receives commands, pretty much like <code class="language-plaintext highlighter-rouge">git</code>. The syntax is quite simple:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dropbox_uploader.sh COMMAND [PARAMETERS]...
[%%]: Optional param
<%%>: Required param
</code></pre></div></div>
<h4 id="available-commands">Available commands</h4>
<ul>
<li><strong>upload</strong> <LOCAL_FILE/DIR …> <REMOTE_FILE/DIR>
Upload a local file or directory to a remote Dropbox folder.
If the file is bigger than 150Mb the file is uploaded using small chunks (default 4Mb);
in this case a . (dot) is printed for every chunk successfully uploaded and a * (star) if an error occurs (the upload is retried for a maximum of three times).
Only if the file is smaller than 150Mb, the standard upload API is used, and if the -p option is used
the default curl progress bar is displayed during the upload process.
The local file/dir parameter supports wildcards expansion.</li>
<li><strong>download</strong> <REMOTE_FILE/DIR> [LOCAL_FILE/DIR]
Download file or directory from Dropbox to a local folder</li>
<li><strong>delete</strong> <REMOTE_FILE/DIR>
Remove a remote file or directory from Dropbox</li>
<li><strong>move</strong> <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
Move or rename a remote file or directory</li>
<li><strong>copy</strong> <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
Copy a remote file or directory</li>
<li><strong>mkdir</strong> <REMOTE_DIR>
Create a remote directory on DropBox</REMOTE_DIR></li>
<li><strong>list</strong> [REMOTE_DIR]
List the contents of the remote Dropbox folder</li>
<li><strong>share</strong> <REMOTE_FILE>
Get a public share link for the specified file or directory</REMOTE_FILE></li>
<li><strong>info</strong>
Print some info about your Dropbox account</li>
<li><strong>unlink</strong>
Unlink the script from your Dropbox account</li>
</ul>
<h4 id="optional-parameters">Optional parameters</h4>
<ul>
<li>**-f <FILENAME>**
Load the configuration file from a specific file</FILENAME></li>
<li><strong>-s</strong>
Skip already existing files when download/upload. Default: Overwrite</li>
<li><strong>-d</strong>
Enable DEBUG mode</li>
<li><strong>-q</strong>
Quiet mode. Don’t show progress meter or messages</li>
<li><strong>-p</strong>
Show cURL progress meter</li>
<li><strong>-k</strong>
Doesn’t check for SSL certificates (insecure)</li>
</ul>
<h3 id="examples">Examples</h3>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
dropbox_uploader.sh upload <span class="k">*</span>.zip /
dropbox_uploader.sh download /backup.zip
dropbox_uploader.sh delete /backup.zip
dropbox_uploader.sh <span class="nb">mkdir</span> /myDir/
dropbox_uploader.sh upload <span class="s2">"My File.txt"</span> <span class="s2">"My File 2.txt"</span>
dropbox_uploader.sh share <span class="s2">"My File.txt"</span>
dropbox_uploader.sh list</code></pre></figure>
<h2 id="dropshell">DropShell</h2>
<p>DropShell is an interactive DropBox shell, based on DropBox Uploader:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Launching the DropShell...</span>
<span class="nv">$ </span>dropShell.sh
DropShell v0.2
The Intractive Dropbox SHELL
Andrea Fabrizi - andrea.fabrizi@gmail.com
Type <span class="nb">help </span><span class="k">for </span>the list of the available commands.
andrea@Dropbox:/<span class="nv">$ </span><span class="nb">ls</span>
<span class="o">[</span>D] 0 Apps
<span class="o">[</span>D] 0 Camera Uploads
<span class="o">[</span>D] 0 Public
<span class="o">[</span>D] 0 scripts
<span class="o">[</span>D] 0 Security
<span class="o">[</span>F] 105843 notes.txt
andrea@DropBox:/ServerBackup<span class="nv">$ </span>get notes.txt</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://www.andreafabrizi.it/2016/01/01/Dropbox-Uploader/">Homepage</a></li>
<li><a href="https://github.com/bpkg/dbu">Source Code (GitHub)</a></li>
<li>Author: <a href="https://www.andreafabrizi.it/">Andrea Fabrizi</a></li>
<li>Packager: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
clip
https://bpkg.sh/pkg/clip
2014-06-16T00:00:00+00:00
<p>Really simple clipboard manager in Bash.
You can access it via command-line or inside shell scripts.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> clip</code></pre></figure>
<h2 id="usage">Usage</h2>
<p><strong>Store</strong>: <em>only stores single value:</em></p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span><span class="nb">echo </span>foo | clip</code></pre></figure>
<p><strong>Read</strong>: <em>read stored value:</em></p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>clip</code></pre></figure>
<p><em>NOTE:</em> It does not interface with the <em>actual</em> system clipboard. It has it’s own.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/clip">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
github
https://bpkg.sh/pkg/github
2014-06-15T00:00:00+00:00
<p>This package allows you to perform GitHub actions on your shell scripts.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install </span>github</code></pre></figure>
<h2 id="usage">Usage</h2>
<p>This is how you’d use it via command-line. Note that to use some commands you need to authenticate first.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Authentication</span>
<span class="nv">$ </span>github auth jwerle
Enter host password <span class="k">for </span>user <span class="s1">'jwerle'</span>:
info: Storing access token
<span class="c"># Read token:</span>
<span class="nv">$ </span>github token get
cf02301afdsfsbff6b06fdsfsbad2c225fdsfdsf
<span class="c"># Request feeds with authenticated user:</span>
<span class="nv">$ </span>github request GET /feeds
<span class="o">{</span>
<span class="s2">"timeline_url"</span>: <span class="s2">"https://github.com/timeline"</span>,
<span class="s2">"user_url"</span>: <span class="s2">"https://github.com/{user}"</span>,
<span class="s2">"current_user_public_url"</span>: <span class="s2">"https://github.com/jwerle"</span>,
<span class="s2">"_links"</span>: <span class="o">{</span>
<span class="s2">"timeline"</span>: <span class="o">{</span>
<span class="s2">"href"</span>: <span class="s2">"https://github.com/timeline"</span>,
<span class="s2">"type"</span>: <span class="s2">"application/atom+xml"</span>
<span class="o">}</span>,
<span class="s2">"user"</span>: <span class="o">{</span>
<span class="s2">"href"</span>: <span class="s2">"https://github.com/{user}"</span>,
<span class="s2">"type"</span>: <span class="s2">"application/atom+xml"</span>
<span class="o">}</span>,
<span class="s2">"current_user_public"</span>: <span class="o">{</span>
<span class="s2">"href"</span>: <span class="s2">"https://github.com/jwerle"</span>,
<span class="s2">"type"</span>: <span class="s2">"application/atom+xml"</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span></code></pre></figure>
<p>To see an example of a shell script and more info, go to the GitHub repository below.</p>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/github">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>
term
https://bpkg.sh/pkg/term
2014-06-01T00:00:00+00:00
<p>This package allows you to manipulate colors, cursor position and make animations on the terminal.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>bpkg <span class="nb">install</span> <span class="nt">-g</span> term</code></pre></figure>
<h2 id="usage">Usage</h2>
<p><code class="language-plaintext highlighter-rouge">term</code> works by accepting commands, just like <code class="language-plaintext highlighter-rouge">git</code>.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># It's supposed to output green-ish underlined text</span>
<span class="nv">$ </span><span class="o">{</span> term color green<span class="p">;</span> <span class="o">}</span> <span class="o">&&</span> <span class="o">{</span> term underline<span class="p">;</span> <span class="o">}</span> <span class="o">&&</span> <span class="o">{</span> <span class="nb">echo </span>heyaaaa<span class="p">;</span> <span class="o">}</span>
heyaaaa</code></pre></figure>
<h3 id="terms-api">term’s API</h3>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">usage: term <span class="o">[</span><span class="nt">-hV</span><span class="o">]</span> <<span class="nb">command</span><span class="o">></span> <span class="o">[</span>args]
commands:
write <code> Write a terminal escape code
cursor <op> Perform operation to cursor
color <color> Set terminal color by name <span class="o">(</span>See colors<span class="o">)</span>
background <color> Set terminal background by name <span class="o">(</span>See colors<span class="o">)</span>
move <x> <y> Move to <span class="o">(</span>x, y<span class="o">)</span>
transition <x> <y> Transition to <span class="o">(</span>x, y<span class="o">)</span>
clear <section> Clear terminal section by name <span class="o">(</span>See sections<span class="o">)</span>
reset Reset the terminal escape code sequence
bright Write bright escape code
dim Write dim escape code
underline Write underline escape code
blink Write blink escape code
reverse Write reverse escape code
hidden Write hidden escape code
colors:
black <span class="nv">$ </span>term color black
red <span class="nv">$ </span>term color red
green <span class="nv">$ </span>term color green
yellow <span class="nv">$ </span>term color yellow
blue <span class="nv">$ </span>term color blue
magenta <span class="nv">$ </span>term color magenta
cyan <span class="nv">$ </span>term color cyan
white <span class="nv">$ </span>term color white
gray|grey <span class="nv">$ </span>term color gray
sections:
start Start of line
end End of line
up Upper section
down Lower section
line Current line
screen Entire screen</code></pre></figure>
<h2 id="links">Links</h2>
<ul>
<li><a href="https://github.com/bpkg/term">Source Code (GitHub)</a></li>
<li>Author: <a href="https://github.com/jwerle">Joseph Werle</a></li>
</ul>