Compare commits

...

6 Commits

Author SHA1 Message Date
Benjamin Morrison f682df279f
version bump to 2.1.4 2020-07-03 19:54:19 -04:00
Benjamin Morrison 4b30a05ba2
explicit test if /etc/profile.d is a directory rather than for the
general existence of /etc/profile.d
2020-07-03 19:49:33 -04:00
Benjamin Morrison 3eac3167ac
switching from a full build to 'cargo check' in CI
accomplishes mostly the same thing for my purposes and reduces
the CI run time.
2020-07-03 19:40:48 -04:00
Benjamin Morrison a69f61ca98
moved makefile install target to shellscript
Testing for OS before decided what group to assign to binary and
files. If Linux, both groups are 'root'. If OpenBSD, the groups
are 'bin' and 'wheel'. I don't have a FreeBSD or NetBSD system
handy right now to check those.
2020-07-03 19:14:51 -04:00
Benjamin Morrison e7544b9b1d
corrected post subject stated max length in man page 2020-07-03 18:15:45 -04:00
Benjamin Morrison fe77fcfc55
man page for clinte
Amended Makefile to install said man page.
Explicitly installing files -o root -g root.
2020-07-03 17:02:24 -04:00
7 changed files with 159 additions and 29 deletions

View File

@ -9,5 +9,5 @@ environment:
tasks:
- build: |
cd clinte
cargo test
cargo build
cargo check
cargo test

View File

@ -15,6 +15,6 @@ before_script:
- bash <(curl https://raw.githubusercontent.com/xd009642/tarpaulin/master/travis-install.sh)
script:
- cargo build --verbose
- cargo check
- cargo tarpaulin --out Xml
- bash <(curl -s https://codecov.io/bash)

2
Cargo.lock generated
View File

@ -103,7 +103,7 @@ dependencies = [
[[package]]
name = "clinte"
version = "2.1.3"
version = "2.1.4"
dependencies = [
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",

View File

@ -1,6 +1,6 @@
[package]
name = "clinte"
version = "2.1.3"
version = "2.1.4"
authors = ["Ben Morrison <ben@gbmor.dev>"]
edition = "2018"
description = "CLI note posting system for shared UNIX boxes."

View File

@ -14,32 +14,9 @@ clean:
cargo clean
@printf "\n%s\n" "...Done!"
.PHONY: update
update:
@printf "\n%s\n" "Making sure we're on master..."
git checkout master
@printf "\n%s\n" "Updating from upstream repository..."
git pull --rebase
@printf "\n%s\n" "Checking out latest tag..."
git checkout $(git describe --tags --abbrev=0)
@printf "\n%s\n" "...Done!"
.PHONY: install
install:
@printf "\n%s\n" "Installing clinte..."
@printf "\n%s\n" "Creating directories..."
mkdir -p $(DBDIR)
@printf "\n%s\n" "Copying files..."
install -m755 target/release/clinte $(BINDIR)
@if [ -f "$(DBDIR)/clinte.json" ]; then printf "\n%s\n" "clinte.json exists. Skipping ..."; else install -m666 clinte.json "$(DBDIR)"; fi
@if [ -e /etc/profile.d ]; then printf "%s\n" "Installing check_new_clinte_posts.sh to /etc/profile.d" && install -m644 check_new_clinte_posts.sh /etc/profile.d/; fi
@printf "\n%s\n" "...Done!"
@sh install.sh $(PREFIX)
.PHONY: test
test:
@ -51,6 +28,7 @@ test:
uninstall:
@printf "\n%s\n" "Uninstalling clinte..."
rm -f $(BINDIR)/clinte
rm -f $(PREFIX)/share/man/man1/clinte.1
@if [ -e /etc/profile.d ]; then printf "%s\n" "rm -f /etc/profile.d/check_new_clinte_posts.sh" && rm -f /etc/profile.d/check_new_clinte_posts.sh; fi
@printf "\n%s\n" "...Done!"
@printf "%s %s\n" "The posts are still intact in" $(DBDIR)

108
clinte.1 Normal file
View File

@ -0,0 +1,108 @@
.Dd July 3, 2020
.Dt CLINTE 1
.Os
.Sh NAME
.Nm clinte
.Nd Command-line community notes board - CLI NoTEs
.Sh SYNOPSIS
.Nm
.Op Fl v
.Op Fl l Ar length
.Op post
.Op update Ar id
.Op delete Ar id
.
.Sh DESCRIPTION
.Nm
is a command-line community notes board, aimed at public-access UNIX systems.
Users may append a note, which is automatically tagged with their username.
Other users may view all notes, but users may only edit or delete their own.
Upon login, users are notified of unseen notes.
.Pp
All flags and commands are optional.
The default behavior is to display the 15 most recent posts.
.Pp
Subject lines are truncated to 30 characters.
Post bodies are truncated to 500 characters.
.Pp
When creating a new post or editing a previous post,
.Ev $EDITOR
is called.
If
.Ev $EDITOR
is not set,
.Xr nano 1
is called.
.
.Ss Flags
.Bl -tag -width Ds
.It Fl v
Verbose logging.
If there's an error, hopefully something useful will be included in
.Pa /tmp/clinte_$USER.log
.It Fl l Ar length
Specify the line length for wrapping post bodies.
Defaults to 80.
If the value passed is below 10, line wrapping will be disabled.
.El
.
.Ss Commands
.Bl -tag -width Ds
.It Cm post
Compose a new post to add to the notes board.
.
.It Cm update Op Ar id
Edit the post numbered
.Ar id
if it was previously composed by the user.
If
.Ar id
is omitted, the user will be prompted for it.
.
.It Cm delete Op Ar id
Remove a post numbered
.Ar id
if it was previously composed by the user.
If
.Ar id
is omitted, the user will be prompted for it.
.El
.
.Ss Files
Posts are stored chronologically in a file located at
.Pa /usr/local/clinte/clinte.json
.Pp
The format of the file is as follows:
.
.Bd -literal -offset indent
{
"posts": [
{
"title": "sample title",
"author": "sample author",
"body": "sample body"
}
]
}
.Ed
.
.
.Ss Notifications
.Nm
installs a script to
.Pa /etc/profile.d/
which notifies you of unseen posts upon logging in.
However, some people may find this behavior to be annoying.
To suppress notifications,
.Xr touch 1
.Pa $HOME/.hushclinte .
.Sh AUTHORS
.An gbmor Aq Mt ben@gbmor.dev
.Sh BUGS
Send a message to the mailing list:
.Mt ~gbmor/clinte@lists.sr.ht
.Pp
You may also open a ticket at:
.Lk https://todo.sr.ht/~gbmor/clinte
.Pp
Or, /msg gbmor on tilde.chat or freenode.

44
install.sh Normal file
View File

@ -0,0 +1,44 @@
#!/bin/sh
# This is called in the Makefile.
if [ ! -e 'target/release/clinte' ]; then
printf '\n%s "%s"\n\n' 'Please build clinte first:' 'make'
exit 1
fi
PREFIX="$1"
BINDIR="$PREFIX/bin"
DBDIR="$PREFIX/clinte"
OS=$(uname)
BINGRP='root'
FILEGRP='root'
printf '\n%s\n' 'Installing clinte...'
printf '\n%s\n' 'Creating directories...'
mkdir -p "$DBDIR"
printf '\n%s\n' 'Copying files...'
if [ "$OS" = 'OpenBSD' ]; then
BINGRP='bin'
FILEGRP='wheel'
fi
install -m755 -o root -g "$BINGRP" target/release/clinte "$BINDIR"
if [ -f "$DBDIR/clinte.json" ]; then
printf '\n%s\n' 'clinte.json exists. Skipping ...'
else
install -m666 -o root -g "$FILEGRP" clinte.json "$DBDIR"
fi
if [ -d /etc/profile.d ]; then
printf '%s\n' 'Installing check_new_clinte_posts.sh to /etc/profile.d'
install -m644 -o root -g "$FILEGRP" check_new_clinte_posts.sh /etc/profile.d/
fi
install -m644 -o root -g "$FILEGRP" clinte.1 "$PREFIX/share/man/man1/"
printf '\n%s\n' '...Done!'