# Table of Contents
1. [Introduction](#org2ed09e2)
2. [License](#org3821e51)
3. [Prerequistes](#org59add51)
4. [Installation](#orge2db134)
5. [Status & Roadmap](#org4b113ee)
# Introduction
[Pinboard](https://pinboard.in/) is "social bookmarking for introverts"– a social bookmarking web service along the lines of (the now defunct) [del.icio.us](https://en.wikipedia.org/wiki/Delicious_(website)). [pin](https://github.com/sp1ff/pin) is a command-line client for [Pinboard](https://pinboard.in). It is by no means complete; it supports a few operations which I have found useful in my workflow. Here are a few examples:
You can send a link `http://foo.com/bar` to [Pinboard](https://pinboard.in) with title "splat" & tags `a`, `b` & `c` like so:
pin send -t a -t b -t c "http://foo.com/bar | splat"
You can setup canned tag clouds you use repeatedly & refer to them by name:
$> cat ~/.pin
token = "you:XXX"
[targets]
[targets.frobnitz]
tags = ["@review", "frobinate"]
read_later = true
...
# This link will get tags @review & frobinate, and have the "read later" flag set:
$> pin send -r frobnitz "http://foo.com/bar | splat"
You can send the link to [Instapaper](https://www.instapaper.com) at the same time:
$> pin send -r frobnitz --with-instapaper "http://foo.com/bar | splat"
I use it for curating my tags:
$> pin get-tags
| Tag | Use Count |
+--------------------------------+-----------+
| flapdoodl | 1 |
| flapdoodle | 10000 |
...
# Hmmm... likely a mis-spelling
$> pin rename-tag flapdoodl flapdoodle
or, say, deleting all links with a given combination of tags when they're no longer useful:
ping delete old-company+jira
Type `pin --help` for a description of all flags & sub-commands.
# License
[pin](https://github.com/sp1ff/pin) is GPL v3 software.
# Prerequistes
The Rust [toolchain](https://rustup.rs/) (Rust version 1.57 at minimum).
# Installation
This crate is available on [crates.io](https://crates.io), but you can also download an Autotools tarball:
cd /tmp
curl -O https://www.unwoundstack.com/dist/pin-0.2.8.tar.xz
tar xf pin-0.2.8.tar.xz
cd pin-0.2.8
./configure
make
make check
sudo make install
# Status & Roadmap
[pin](https://github.com/sp1ff/pin) is still early code; I have chosen the version number (0.2) in the hopes of conveying that this is a preliminary release. [pinboard.py](https://github.com/lionheart/pinboard.py) provides far more complete coverage of the Pinboard API, albeit at the cost of forcing users to navigate Python's package management. Still, [pin](https://github.com/sp1ff/pin) provides an interface that is task-oriented, not API-oriented. For instance, deleting all links with a given tag combination is actually a complex operation; one needs to:
- ask the API for all links that have that combination of tags
- delete those links one at a time (because that is what the API allows)
- while respecting the API's rate limits
In other words, this package is intended to provide an interface organized around user operations, not API endpoints.
Bugs, comments, problems, PRs, feature requests &c welcome at [sp1ff@pobox.com](mailto:sp1ff@pobox.com) and in the [issues](https://github.com/sp1ff/pin/issues).