Intégration de la branche release-7.4.0

This commit is contained in:
Jephté Clain 2017-12-20 19:01:55 +04:00
commit 9d8787afae
6 changed files with 91 additions and 13 deletions

View File

@ -1,3 +1,11 @@
## Version 7.4.0 du 20/12/2017-19:01
* `48e4359` sqlcsv: possibilité de spécifier le chemin de chargement des drivers jdbc
* `a7e6228` ufile: par défaut -c ne charge que le fichier spécifié
* `0b59583` support de quelques combinaisons de diacritiques
* `4f520db` authftp: support préliminaire de --sftp
* `4f11cc4` ufile: possibilité d'écraser les fichiers sans confirmation
## Version 7.3.0 du 19/10/2017-12:12 ## Version 7.3.0 du 19/10/2017-12:12
* `72d7d15` maj version ulib * `72d7d15` maj version ulib

View File

@ -1 +1 @@
7.3.0 7.4.0

17
authftp
View File

@ -31,6 +31,8 @@ OPTIONS
--verify-certificate --verify-certificate
Avec la connexion --tls, forcer la vérification du certificat, qui est Avec la connexion --tls, forcer la vérification du certificat, qui est
désactivée par défaut. désactivée par défaut.
--sftp
Indiquer que la connexion se fait via SFTP. Implique --lftp --noproxy
note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
@ -47,6 +49,7 @@ lftp=
options=() options=()
tls= tls=
verify_certificate=no verify_certificate=no
sftp=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-p,--proxy noproxy= \ -p,--proxy noproxy= \
@ -55,6 +58,7 @@ parse_opts "${PRETTYOPTS[@]}" \
-o:,--option: options \ -o:,--option: options \
--tls tls=1 \ --tls tls=1 \
--verify-certificate verify_certificate=yes \ --verify-certificate verify_certificate=yes \
--sftp sftp=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
[ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini" [ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini"
@ -67,17 +71,24 @@ read_value -i "Entrez l'identifiant de connexion" login "$2"
read_value -i "Entrez le mot de passe" password "$3" read_value -i "Entrez le mot de passe" password "$3"
read_value -i "Entrez le chemin" path "$4" N read_value -i "Entrez le chemin" path "$4" N
[ -n "$tls" ] && lftp=1 [ -n "$tls" -o -n "$sftp" ] && lftp=1
[ -n "$sftp" ] && noproxy=1
if [ -n "$lftp" ]; then if [ -n "$lftp" ]; then
if [ -n "$noproxy" ]; then if [ -n "$noproxy" ]; then
if [ -n "$sftp" ]; then
url="sftp://$host/$path"
else
url="ftp://$host/$path"
fi
exec lftp "${options[@]}" -e "\ exec lftp "${options[@]}" -e "\
set ssl:verify-certificate $verify_certificate set ssl:verify-certificate $verify_certificate
open -u $login,$password ftp://$host/$path" open -u $login,$password $url"
else else
url="ftp://$AUTHFTP_PROXY_HOST/$path"
exec lftp "${options[@]}" -e "\ exec lftp "${options[@]}" -e "\
set ssl:verify-certificate $verify_certificate set ssl:verify-certificate $verify_certificate
open -u ${login}@${my_login}@${host},${password}@${my_password} ftp://$AUTHFTP_PROXY_HOST/$path" open -u ${login}@${my_login}@${host},${password}@${my_password} $url"
fi fi
else else
if [ -n "$noproxy" ]; then if [ -n "$noproxy" ]; then

View File

@ -1229,6 +1229,18 @@ s/[œ]/oe/g
s/[Œ]/OE/g s/[Œ]/OE/g
s/[æ]/ae/g s/[æ]/ae/g
s/[Æ]/AE/g s/[Æ]/AE/g
s/a\xCC\x80/à/g
s/e\xCC\x81/é/g; s/e\xCC\x80/è/g; s/e\xCC\x82/ê/g; s/e\xCC\x88/ë/g
s/i\xCC\x88/ï/g; s/i\xCC\x82/î/g
s/o\xCC\x82/ô/g; s/o\xCC\x88/ö/g
s/u\xCC\x88/ü/g; s/u\xCC\x82/û/g
s/c\xCC\xA7/ç/g
s/A\xCC\x80/À/g
s/E\xCC\x81/É/g; s/E\xCC\x80/È/g; s/E\xCC\x82/Ê/g; s/E\xCC\x88/Ë/g
s/I\xCC\x88/Ï/g; s/I\xCC\x82/Î/g
s/O\xCC\x82/Ô/g; s/O\xCC\x88/Ö/g
s/U\xCC\x88/Ü/g; s/U\xCC\x82/Û/g
s/C\xCC\xA7/Ç/g
' '
} }
function _noaccents() { function _noaccents() {

49
sqlcsv
View File

@ -1050,6 +1050,15 @@ public class sqlcsv {
+ "\najoutés au CLASSPATH. La présence de certains fichiers est testée pour activer" + "\najoutés au CLASSPATH. La présence de certains fichiers est testée pour activer"
+ "\néventuellement les logs détaillés." + "\néventuellement les logs détaillés."
+ "\n\nOPTIONS" + "\n\nOPTIONS"
+ "\n -J<JARDIR>"
+ "\n +J<JARDIR>"
+ "\n Spécifier un répertoire de chargement des drivers JDBC."
+ "\n Avec l'option -J, le répertoire spécifié est ajouté aux répertoires de"
+ "\n configuration par défaut ~/.sqlcsv et /etc/sqlcsv. Avec la variante +J,"
+ "\n seul le répertoire spécifié est analysé."
+ "\n Cette option *doit* être spécifiée en premier et il ne doit pas y avoir"
+ "\n d'espace entre l'option et son argument."
+ "\n"
+ "\n -C, --config CONFIG" + "\n -C, --config CONFIG"
+ "\n Prendre les informations de connexion depuis le fichier de propriété" + "\n Prendre les informations de connexion depuis le fichier de propriété"
+ "\n spécifié. Pour l'identifiant CONN, la propriété 'CONN.url' doit exister" + "\n spécifié. Pour l'identifiant CONN, la propriété 'CONN.url' doit exister"
@ -1071,8 +1080,8 @@ public class sqlcsv {
+ "\n Si -C n'est pas spécifié et que -l est spécifié, alors l'identifiant de" + "\n Si -C n'est pas spécifié et que -l est spécifié, alors l'identifiant de"
+ "\n connexion est enregistré dans les préférences utilisateur. Si ni -C" + "\n connexion est enregistré dans les préférences utilisateur. Si ni -C"
+ "\n ni -l ne sont spécifiés, alors le dernier identifiant est utilisé s'il" + "\n ni -l ne sont spécifiés, alors le dernier identifiant est utilisé s'il"
+ "\n existe. L'option -z permet de démarrer comme si aucun identifiant n'avait" + "\n existe. L'option -z permet de démarrer comme si aucun identifiant"
+ "\n jamais été enregistré." + "\n n'avait jamais été enregistré."
+ "\n -u, --user USER" + "\n -u, --user USER"
+ "\n -p, --password PASSWORD" + "\n -p, --password PASSWORD"
+ "\n Spécifier un nom de connexion et un mot de passe si l'url ne le fournit" + "\n Spécifier un nom de connexion et un mot de passe si l'url ne le fournit"
@ -1091,7 +1100,7 @@ public class sqlcsv {
+ "\n requête. Sinon, il est possible de spécifier plusieurs fois cette option" + "\n requête. Sinon, il est possible de spécifier plusieurs fois cette option"
+ "\n pour nommer les fichiers correspondant à chaque requête." + "\n pour nommer les fichiers correspondant à chaque requête."
+ "\n -t, --autocommit" + "\n -t, --autocommit"
+ "\n Activer le mode autocommit" + "\n Activer le mode autocommit. Par défaut, le mode autocommit n'est pas activé"
+ "\n -c, --ignore-io-error" + "\n -c, --ignore-io-error"
+ "\n Continuer le traitement même en cas d'erreur du système de fichiers." + "\n Continuer le traitement même en cas d'erreur du système de fichiers."
+ "\n Cependant le traitement s'arrête et la transaction est annulée si une" + "\n Cependant le traitement s'arrête et la transaction est annulée si une"
@ -1146,7 +1155,9 @@ public class sqlcsv {
int i = 0, max = args.length; int i = 0, max = args.length;
while (i < max) { while (i < max) {
String arg = args[i]; String arg = args[i];
if (arg.equals("-C") || arg.equals("--config")) { if (arg.substring(0, 2).equals("-J") || arg.substring(0, 2).equals("+J")) {
die("L'option -J doit être spécifiée en premier", null);
} else if (arg.equals("-C") || arg.equals("--config")) {
config = getArg(args, ++i, "Vous devez spécifier le fichier de configuration"); config = getArg(args, ++i, "Vous devez spécifier le fichier de configuration");
} else if (arg.equals("-l") || arg.equals("--conn")) { } else if (arg.equals("-l") || arg.equals("--conn")) {
connid = getArg(args, ++i, "Vous devez spécifier l'identifiant de connexion"); connid = getArg(args, ++i, "Vous devez spécifier l'identifiant de connexion");
@ -1387,10 +1398,36 @@ public class sqlcsv {
|| new File(SYSTEM_CONFDIR + "/SQL_DEBUG").exists()) { || new File(SYSTEM_CONFDIR + "/SQL_DEBUG").exists()) {
DriverManager.setLogWriter(new PrintWriter(System.err)); DriverManager.setLogWriter(new PrintWriter(System.err));
} }
boolean jardirOption = false;
String jardir = null;
boolean jardirOnly = false;
if (args.length > 0) {
String firstOption = args[0].substring(0, 2);
if (firstOption.equals("-J")) {
jardirOption = true;
jardir = args[0].substring(2);
jardirOnly = false;
} else if (firstOption.equals("+J")) {
jardirOption = true;
jardir = args[0].substring(2);
jardirOnly = true;
}
if (jardirOption) {
if (jardir.length() == 0) die("L'option -J doit avoir un argument", null);
String[] newArgs = new String[args.length - 1];
System.arraycopy(args, 1, newArgs, 0, newArgs.length);
args = newArgs;
}
}
boolean shouldUpdateClasspath = false; boolean shouldUpdateClasspath = false;
ArrayList<URL> urls = new ArrayList<URL>(); ArrayList<URL> urls = new ArrayList<URL>();
shouldUpdateClasspath |= findJars(new File(USER_CONFDIR), urls); if (jardirOption) {
shouldUpdateClasspath |= findJars(new File(SYSTEM_CONFDIR), urls); shouldUpdateClasspath |= findJars(new File(jardir), urls);
}
if (!jardirOption || !jardirOnly) {
shouldUpdateClasspath |= findJars(new File(USER_CONFDIR), urls);
shouldUpdateClasspath |= findJars(new File(SYSTEM_CONFDIR), urls);
}
if (shouldUpdateClasspath) { if (shouldUpdateClasspath) {
ClassLoader parentLoader = Thread.currentThread().getContextClassLoader(); ClassLoader parentLoader = Thread.currentThread().getContextClassLoader();
ClassLoader loader = new URLClassLoader(urls.toArray(new URL[0]), parentLoader); ClassLoader loader = new URLClassLoader(urls.toArray(new URL[0]), parentLoader);

16
ufile
View File

@ -46,7 +46,10 @@ USAGE
OPTIONS OPTIONS
-c, --config CONFIG -c, --config CONFIG
Utiliser le fichier de configuration spécifié au lieu de la valeur par Utiliser le fichier de configuration spécifié au lieu de la valeur par
défaut ~/etc/default/ufile défaut ~/etc/default/ufile et ~/etc/ufile.d/*.conf
-C, --other-configs
Charger les fichiers ~/etc/ufile.d/*.conf en plus du fichier spécifié
avec --config. Cette option est ignorée si --config n'est pas utilisé.
--file --file
Classer les fichiers spécifiés. C'est l'action par défaut Classer les fichiers spécifiés. C'est l'action par défaut
--force-cp --force-cp
@ -61,6 +64,9 @@ OPTIONS
Toujours utiliser scp pour une copie distante. Par défaut s'il est Toujours utiliser scp pour une copie distante. Par défaut s'il est
déterminé que l'hôte distant est en réalité l'hôte courant, alors la déterminé que l'hôte distant est en réalité l'hôte courant, alors la
copie est effectuée directement. copie est effectuée directement.
-f, --force
Si le fichier destination existe, alors l'écraser sans confirmation.
Cette option est ignorée pour un classement distant.
-r, --recursive -r, --recursive
Classer récursivement tous les fichiers d'un répertoire. Sans cette Classer récursivement tous les fichiers d'un répertoire. Sans cette
option, il n'est pas autorisé de fournir un répertoire comme argument. option, il n'est pas autorisé de fournir un répertoire comme argument.
@ -120,10 +126,12 @@ function __set_dest() {
args=(% args=(%
--help '$exit_with display_help' --help '$exit_with display_help'
-c:,--config: config= -c:,--config: config=
-C,--other-configs other_configs=1
--file action=file --file action=file
--force-cp force_cp=1 --force-cp force_cp=1
-S:,--ssh: SSH= -S:,--ssh: SSH=
--force-scp force_scp=1 --force-scp force_scp=1
-f,--force force=1
-r,--recursive recursive=1 -r,--recursive recursive=1
-n,--fake fake=1 -n,--fake fake=1
-l,--list action=list -l,--list action=list
@ -145,10 +153,11 @@ if [ -n "$config" ]; then
if [ -f "$config" ]; then if [ -f "$config" ]; then
source "$config" || die "$config: erreur lors de la lecture du fichier" source "$config" || die "$config: erreur lors de la lecture du fichier"
fi fi
[ -n "$other_configs" ] && conf_load "$HOME/etc/ufile.d/*.conf"
else else
set_defaults ufile set_defaults ufile
conf_load "$HOME/etc/ufile.d/*.conf"
fi fi
conf_load "$HOME/etc/ufile.d/*.conf"
## actions particulières ## actions particulières
@ -256,6 +265,7 @@ for file in "${files[@]}"; do
i=1 i=1
mvi=${#dests[*]} mvi=${#dests[*]}
[ -z "$force" ] && mvint=-i || mvint=
for dest in "${dests[@]}"; do for dest in "${dests[@]}"; do
if [[ "$dest" == *:* ]]; then if [[ "$dest" == *:* ]]; then
[ "$interaction" == --DEFAULT-- ] && int= || int="$interaction" [ "$interaction" == --DEFAULT-- ] && int= || int="$interaction"
@ -280,7 +290,7 @@ for file in "${files[@]}"; do
mvdesc="de la copie" mvdesc="de la copie"
mvcmd=cp mvcmd=cp
fi fi
docmd "$mvcmd" -i "$file" "$dest" || die "problème lors $mvdesc du fichier" docmd "$mvcmd" $mvint "$file" "$dest" || die "problème lors $mvdesc du fichier"
fi fi
i=$(($i + 1)) i=$(($i + 1))
done done