Intégration de la branche release-7.4.0
This commit is contained in:
commit
9d8787afae
|
@ -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
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
7.3.0
|
7.4.0
|
||||||
|
|
17
authftp
17
authftp
|
@ -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
|
||||||
|
|
|
@ -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
49
sqlcsv
|
@ -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
16
ufile
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue