#!/usr/bin/tclsh # The ridiculous npaste client. # Public domain. package require http set posturl http://npaste.de/ variable desc "" lang "" text "" interactive [catch {exec tty >/dev/null}] proc get {cmd t {v ""}} { # get default value if non-empty or read it from stdin using $cmd if {$v != ""} {return $v} if {$::interactive} { puts -nonewline $t; flush stdout; } $cmd stdin } proc shift {v} { # perl-ish shift: pop value from beginning of list upvar 1 $v arg if {[llength $arg]} { set l [lindex $arg 0] set arg [lreplace $arg 0 0] return $l } } while 1 { set arg [shift argv] switch -exact $arg { -d { set desc [shift argv]; set arg "" } -l { set lang [shift argv]; set arg "" } -h - --help { puts {npaste [-d description] [-l language] [file]} exit } default break } } if {$arg == ""} { set text [get read "Paste:\n"] } else { set fd [open $arg] set text [read $fd] close $fd } set desc [get gets "Description: " $desc] set lang [get gets "Language: " $lang] if {[string length $text]} { set query [http::formatQuery content $text desc $desc lang $lang] set res [http::geturl $posturl -query $query] puts -nonewline [http::data $res] } # $Id: np,v 1.2 2013/02/12 14:22:46 mw Exp $