#!/bin/sh

# Copyright (C) 2016 Richard Burke, ISC licensed

vc_fatal() {
	echo "$@" >&2
	exit 1
}

vc_usage() {
	vc_fatal "`basename $0` [--usable|--copy|--paste]"
}

vc_determine_command() {
	if [ -n "$DISPLAY" ]; then
		for c in xclip xsel; do
			if type "$c" >/dev/null 2>&1; then
				echo "$c"
				return 0
			fi
		done
	fi

	if type pbcopy >/dev/null 2>&1; then
		echo 'mac'
		return 0
	fi

	if [ -c /dev/clipboard ]; then
		echo 'cygwin'
		return 0
	fi

	return 1
}

vc_usable() {
	if vc_determine_command >/dev/null 2>&1; then
		exit 0
	fi

	exit 1
}

vc_copy() {
	COPY_CMD="`vc_determine_command 2>/dev/null`"

	if [ $? -ne 0 ] || [ -z "$COPY_CMD" ]; then
		vc_fatal 'System clipboard not supported'
	fi

	vc_${COPY_CMD}_copy

	exit $?
}

vc_paste() {
	PASTE_CMD="`vc_determine_command 2>/dev/null`"

	if [ $? -ne 0 ] || [ -z "$PASTE_CMD" ]; then
		vc_fatal 'System clipboard not supported'
	fi

	vc_${PASTE_CMD}_paste

	exit $?
}

vc_xsel_copy() {
	xsel -bi
}

vc_xsel_paste() {
	xsel -bo
}

vc_xclip_copy() {
	xclip -selection clipboard -i >/dev/null 2>&1
}

vc_xclip_paste() {
	xclip -selection clipboard -o
}

vc_mac_copy() {
	pbcopy
}

vc_mac_paste() {
	pbpaste
}

vc_cygwin_copy() {
	cat >/dev/clipboard
}

vc_cygwin_paste() {
	cat /dev/clipboard
}

case "$1" in
	--usable) vc_usable;;
	--copy) vc_copy;;
	--paste) vc_paste;;
	*) ;;
esac

vc_usage
