/clinte

Simple note-posting system for shared UNIX boxes. CLI NoTEs.

Primary LanguageRustISC LicenseISC

clinte   builds.sr.ht status Build Status codecov

Command-line community notice board for public-access UNIX systems. Post text-only notes for other users to see.

Features

  • Username is tagged based on the executing user
  • Shows the 15 most recent posts in descending order
  • Able to edit or delete your own posts
  • Title <= 30 chars
  • Body <= 500 chars
  • Calls $EDITOR when creating or modifying the body of a post
  • If $EDITOR is unset, calls nano
  • Stores posts in JSON
  • Uses advisory locking via flock(2) to synchronize access to the posts file

Screenshot

Installation

Clone the repository and jump into the directory:

$ git clone git://github.com/gbmor/clinte.git
...
$ cd clinte

Run the makefile and install:

$ make
...
...Done!

$ sudo make install

Upgrading

Note: v1.0.0 used sqlite3, which presented some issues. v2.x uses a json structure for posts, as this will be safer on a multi-user system. When upgrading from v1.0.0 to v2.x, you won't be able to save the posts without using a third-party tool to dump the posts table to json, and manually adjusting it to fit the expected format (which can be seen in the included clinte.json).

If upgrading from v1.0.0 -> v2.x, do a fresh install, including removing the database directory /usr/local/clinte. The following applies to upgrading when already running at least v2.0.0

$ make update
$ make
$ make install

This will:

  • checkout master
  • pull / rebase changes from upstream
  • checkout the latest tag
  • rebuild
  • replace the clinte binary, but leave the posts file untouched.

Usage

Issuing the program name itself will list the currently available posts, like in the screenshot above.

Display recent posts

$ clinte

Create a post

$ clinte post

clinte will then ask for the title of the post, and the body. The username will be tagged automatically by your logged-in username, reflecting its intended use on multi-user UNIX-like systems.

Edit a post

$ clinte update [id]

If the [id] argument is absent, clinte will ask for the ID number of the post. If it's been authored by you, then you will be asked for the new title. Your $EDITOR will be called, and will be populated with the previous body.

Delete a post

$ clinte delete [id]

If the [id] argument is absent, clinte asks for the numeric ID of the post to delete.

Verbose logging

$ clinte -v [post|update|delete] [id]

Use this flag if something's going wrong. Additional information will be written to `/tmp/clinte_$USER.log** that will, hopefully, reveal the cause of the error.

Line Wrapping

$ clinte -l 80

Wraps posts at the given line length. Set to <10 to disable line wrapping. Defaults to 80.

Notes

The file where the posts are stored, /usr/local/clinte/clinte.json, must be writeable by all users on the system. Keep this in mind.

The main project is at sr.ht/~gbmor/clinte, with a mirror at github.com/gbmor/clinte. Please send patches to ~gbmor/clinte@lists.sr.ht. For more info on this workflow, check out git send-email