Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#!/bin/bash # Author: Rainer Mueller <raimue@codingfarm.de> # Version: 1.6 # License: Public Domain usage() { cat <<END Usage: $argv0 [options] [files...] Options: -h, --help display this help -l, --lang <lang> set language of the paste -p, --private make paste private If --lang is not specified, this script will try to determine the type of each file automatically based on the extension. If no files are given on the command line it reads from standard input. END } map-lang() { local file="$1" local ext=${file##*.} local lang="" # Based on file name case $ext in css|d|diff|go|ini|io|java|lisp|lua|nu|php|scala|sql|tex) lang=$ext ;; as) lang=actionscript ;; c|cpp|cc|cxx|h|hpp|hh|hxx) lang=c++ ;; clj) lang=clojure ;; conf) lang=apache ;; cs) lang=csharp ;; erb|rhtml) lang=html_rails ;; erl) lang=erlang ;; f|for|f90|f95) lang=fortran ;; js) lang=javascript ;; htm|html|xml) lang=html ;; hs) lang=haskell ;; lhs) lang=literate_haskell ;; m|mm) lang=objective-c++ ;; Makefile|makefile|GNUmakefile) lang=makefile ;; py) lang=python ;; pas) lang=pascal ;; pl) lang=perl ;; rb) lang=ruby_on_rails ;; scm|ss) lang=scheme ;; *sh) lang=shell-unix-generic ;; tpl) lang=smarty ;; yaml|yml) lang=yaml ;; esac if [ "$lang" != "" ]; then echo $lang return fi # Executable files are usually shell scripts (who would pastie a binary?) if [ -x "$file" ]; then echo shell-unix-generic return fi } # default settings private=0 lang="auto" file="-" files=() # save name of the script argv0=$(basename $0) # parse arguments while [ $# -gt 0 ]; do case $1 in -h|--help) usage exit 1 ;; -l|--lang) shift lang=$1 ;; -p|--private) private=1 ;; *) # Everything else is a file files=( ${files[@]} $1 ) ;; esac shift done # read files if [ ${#files[@]} -gt 0 ]; then # Create temporary file tmpfile=$(mktemp -t $argv0.XXXXX) trap "rm -f $tmpfile" EXIT for f in ${files[@]}; do if [ ! -r "$f" ]; then echo "$f: cannot read file" >&2 exit 1 fi if [ ! -f "$f" ]; then echo "$f: not a regular file" >&2 exit 1 fi if [ "$lang" == "auto" ]; then flang=$(map-lang "$f") fi if [ ${#files[@]} -gt 1 ]; then if [ -z "$flang" ]; then echo "## $f" >> $tmpfile else echo "## $f [$flang]" >> $tmpfile fi else if [ "$lang" == "auto" ]; then lang=$flang fi fi cat $f >> $tmpfile done file="$tmpfile" fi # pastie now! if [ "$lang" == "auto" ]; then lang="plain_text" fi auth='burger' # Enable this in case the authorization token ever changes #REGEX="\$('paste_authorization')\.value='\(.*\)';" #auth=$(curl -s -L http://pastie.org/pastes/new \ # | sed -e "/$REGEX/!d" -e "/$REGEX/s/$REGEX/\1/") url=$(curl http://pastie.org/pastes \ -F "paste[parser]=$lang" \ -F "paste[body]=<$file" \ -F "paste[restricted]=$private" \ -F "paste[authorization]=$auth" \ -s -L -o /dev/null -w "%{url_effective}") echo "$url"
This paste will be private.
From the Design Piracy series on my blog: