avr 28

Une de plus ! Après avoir ajouté une fonction de recherche ainsi que le support des tags, j’ai un peu simplifié l’utilisation basique de CutMyUrl. L’option [ -u ] qui était suivie de l’adresse à raccourcir à tout simplement était supprimée. La syntaxe d’utilisation est donc légèrement modifiée…

Syntaxe :

$ cutmyurl [URL] [TAG]

Problèmes :

Lors de la modification du script, la recherche des arguments m’a posé des problèmes : Le script est développé à la base pour être utilisé avec des options [ -u, -c, -s, -h, -H, -v, -i, -d ]. L’url ainsi que le tag avaient une place fixe : L’adresse en tant qu’argument numéro 2 et le tag en tant qu’argument numéro 3.

À présent ce n’est plus le cas, l’url et le tag peuvent se trouver respectivement en tant que premier et deuxième argument ce qui inévitablement a forcé à des modifications qui ne sont pas très « esthétiques ».

Le script vérifie la manière dont il est lancé et attribue ensuite les variables… Si une personne peut proposer une solution plus propre, je suis preneur !

Script :

Voici le script en question, la vérification et l’attribution des variables se fait dans la section ## Check for arg and tag ##.

#!/bin/sh
 
#  CutMyUrl
#  Version 1.6
#  A shortener url command line
#  Using the open source service ur1.ca, http://ur1.ca/
#  By Lopes Ferreira David, http://ubunblox.servhome.org/
#  ubunblox@gmail.com
#  Licence GPL
#  Depends : curl, xclip
#########################
 
 
	## Variables ##
r="\033[0m"				# regular
f="\033[1m"				# fat
v="1.6"					# version
n="CutMyUrl"				# name
u="http://ur1.ca/"			# url
path="$XDG_CONFIG_HOME/cutmyurl" 	# path
log="$path/log"				# log file
date=`date '+%F %T'`			# date
#
#
	## Check for arg and tag ##
case "$1" in
	http* )		
arg="$1"
if [ -n "$2" ] ; then 
	tag="#$2"
else
	tag="#none"
fi	;;
	* )		
arg="$2"
if [ -n "$3" ] ; then 
	tag="#$3"
else
	tag="#none"
fi
	;;
esac
#
#
	## Check for path ##
if ! [ -d $path ] ; then
	mkdir -p $path
fi
#
#
	## Check for log file ##
if ! [ -r $log ] ; then
	echo -e "## $n log file ## \n \n " > $log
fi
#
#
	## Fonction cut url ##
_cut_url () {
short_url=$(curl -s "$u" -d"longurl=$arg" | grep 'Your ur1 is' | sed 's/^.*<a href="//;s/".*$//')
}
#
#
	## Fonction display short url ##
_url () {
_cut_url
if [ -z $short_url ] ; then
	echo -e "\n$f---------→ Need help $USER ? $r\n"
	_help
else
	echo -e "\n$short_url \n"
	_log
fi	
}
#
#
	## Fontion copy short url to clipboard ##
_copy () {
_cut_url
if [ -z $short_url ] ; then
	echo -e "\n$g---------→ Need help $USER ? $n\n"
	_help
else
	echo "$short_url" |  xclip -selection c	
	echo -e "\nThe url $f"$short_url"$r has been copied to your clipboard. \n"
	_log
fi	
}
#
#
	## Fonction log ##
_log (){
sed -i '3i\'"$date \t$arg \t$short_url \t$tag"'' $log
}
#
#
	## Fontion history ##
_hist () {
less $log
}
#
#
	##Fonction delete history ##
_delete () {
echo -e " Do you really want to$f delete$r the history file ? $f[Y/N]$r"
read reply
case "$reply" in
	y | Y | yes | YES | o | O | oui | OUI )	echo -e "## $n log file ## \n \n " > $log & echo "History deleted, bye !"
	;;
	* )					echo "\n$f Nothing to do, bye !$r \n"
	;;
esac
}
#
#
	## Fonction search ##
_search () {
_hist | grep "$arg"
if [ $? != 0 ] ; then
	echo -e " No result for $arg"
fi
}
#
#
	## Fonction help ##
_help () {
echo -e "$f NAME$r"
echo -e "\t$f $n $r- Shortener url command line. \n"
echo -e "$f SYNOPSIS$r"
echo -e "\t$f cutmyurl$r OPTION [URL] [TAG]\n"
echo -e "$f DESCRIPTION$r"
echo -e "\t $f-c, --copy $r \t[URL]\tCopy short url to clipboard."
echo -e "\t $f-s, --search $r \t[EXP]\tSearch expression in history file."
echo -e "\t $f-h, --help $r\t\tHelp."
echo -e "\t $f-v, --version $r\t\tVersion."
echo -e "\t $f-i, --info $r\t\tInformations."
echo -e "\t $f-H, --history $r\t\tView the history file."
echo -e "\t $f-d, --delete $r\t\tDelete history file.\n"
echo -e "$f EXAMPLES$r"
echo -e "\t$f cutmyurl$r http://google.com"
echo -e "\t$f cutmyurl$r -c http://google.com"
echo -e "\t$f cutmyurl$r http://website_about_cat_and_dog.com \"cat and dog\""
echo -e "\t$f cutmyurl$r -c http://google.com google\n"
echo -e "$f END$r"
}
#
#
	## Fonction informations ##
_info () {
echo -e "$f $n$r"
echo -e "\n\t # A shortener url Command line "
echo -e "\t # Using the open source service ur1.ca, http://ur1.ca/"
echo -e "\t # By Lopes Ferreira David, http://ubunblox.servhome.org/"
echo -e "\t # ubunblox@gmail.com"
echo -e "\t # Licence GPL \n"
}
#
#
	## Fonction version ##
_version () {
echo -e "$f VERSION$r"
echo -e "\t$f version :$r\t$v\n"
echo -e "$f CHANGE LOG$r"
echo -e "\t$f 28/04/2011 :$r\tRemove -u fonction, just put the url\n"
echo -e "\t$f 26/04/2011 :$r\tAdd search fonction and tag support\n"
echo -e "\t$f 19/04/2011 :$r\tAdd history fonction and delete fonction\n"
echo -e "\t$f 18/04/2011 :$r\tChange in copy fonction\n"
echo -e "\t$f 18/04/2011 :$r\tAdd copy fonction\n"
echo -e "\t$f 16/04/2011 :$r\tFirst release\n"
echo -e "$f DEPENDS$r"
echo -e "\t$f curl, xclip$r\n"
}
#
#
	## Start CutMyUrl ##
 
case "$1" in
	http* )			_url
	;;
	-h | --help)		_help
	;;
	-i | --info)		_info
	;;
	-v | --version)		_version
	;;
	-c | --copy)		_copy
	;;
	-H | --history)		_hist
	;;
	-d | --delete)		_delete
	;;
	-s | --search)		_search
	;;
	*)			_help
esac
#
#
	## End ##
exit 0
#
#

Comme vous pouvez le voir, la fonction « case » est utilisée une première fois puis une seconde fois si une option est donnée en tant qu’argument, ce qui évidement n’est pas très propre…

écrit par David Lopes Ferreira

4 commentaires à “CutMyUrl : Une version 1.6 bancale”

  1. Guillaume Dit:

    Si tu veux faire l’analyse des arguments tu peux utiliser getopt[s].
    Ça permet entre autre d’interpréter la ligne de commande GNU style.
    http://en.wikipedia.org/wiki/Getopt#Shell

    La prise en main n’est pas forcément des plus simples mais après quelques expérimentations tu verras que c’est vraiment puissant.

  2. Aldo Dit:

    Voici comment je procède dans mes scripts : http://pastebin.com/V7qjPErE

  3. David Lopes Ferreira Dit:

    Merci pour vos propositions je pense qu’un boucle while sera de bonne augure !

  4. Intégrer CutMyUrl au launcher de WMFS » UbunBloX Dit:

    [...] CutMyUrl : Une version 1.6 bancale avr [...]

Laisser une Réponse