<commit_before>#!/bin/bash

usage() { 
  program=$(basename "$0") 
  echo "==> usage :"
  echo "$program [-i inputpath=.] [-o output] [-d datapath=.] [-p paramfile=./.geosync.conf] -w workspace -s datastore [-c coveragestore] [-e epsg] [-v]"
  echo "$program -i 'directory of vectors/rasters' [-d datapath=.] [-p paramfile=./.geosync.conf] -w workspace -s datastore [-e epsg] [-v]"
  echo "$program -i vector.shp [-p paramfile=./.geosync.conf] -w workspace -s datastore -g pg_datastore -b db [-e epsg] [-v]"
  echo "$program -i raster.tif|png|adf|jpg|ecw [-p paramfile=./.geosync.conf] -w workspace -c coveragestore [-e epsg] [-v]"
  echo ""
  echo "Publie les couches (rasteurs, vecteurs) dans le geoserver depuis le dossier donné ([input]) ou sinon courant et ses sous-dossiers"
  echo ""
  echo "le login, mot de passe et l'url du geoserver doivent être dans un fichier (par défaut, .geosync.conf dans le même dossier que ce script)"
} 

echoerror() {
  echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $@" >&2  #Redirection vers la sortie d'erreurs standard  (stderr)
} 

error() {
  echoerror "$@"
  exit 1
}

# importe les vecteurs et rasteurs du dossier (path) et sous-dossiers
# écrit dans un fichier dans le datapath la date de changement la plus récente des fichiers indexés
importallfiles() {
  local path="$1"
  shift #consomme l'argument du tableau des arguments, pour pouvoir récupérer le reste dans "$@"
  local datapath="$1"
  shift #consomme l'argument du tableau des arguments, pour pouvoir récupérer le reste dans "$@"

  local lastdatemodif=0
  local newlastdatemodif

  # si datapath n'est pas un dossier existant alors on le créée
  if  [ ! -d "$datapath" ]; then
    echo "creation de datapath : $datapath"
    mkdir $datapath
  fi

  # fichier dédié à stocker la valeur lastdatemodif, date de changement la plus récente des fichiers indexés
  configfile="$datapath/lastdate.txt"

  # teste si le fichier  temporaire stockant la date de modif la plus récente existe
  # si tel est le cas, alors la récupère
  if [ -f "$configfile" ]; then 
    lastdatemodif=$(cat "$configfile")
  fi
  # newlastdatemodif est la valeur qui sera stockée à la place de lastdatemodif
  newlastdatemodif=$lastdatemodif

  cd "$path"

  shopt -s globstar
  # shopt -s globstar nocaseglob
  # set globstar, so that the pattern ** used in a pathname expansion context will 
  # match a files and zero or more directories and subdirectories.
  # nocaseglob : case insensitive
  #shopt -s extglob allow (.tif|.jpg) but does not work with globstar **
  # TODO: format des rasters supportés: tif, png, adf, jpg, ecw

  # si des extension sont rajouter, alors penser à mettre à jour lib/util.sh util::typeoflayer()
  for filepath in **/*.{shp,tif,png,jpg,ecw,sld,xml} **/w001001.adf; do
      # alternative dangereuse :
      # for filepath in $(find "$path" -iname "*.shp"); do
      # option -iname à find pour un filtre (-name) mais insensible à la casse (.SHP,.shp...)
    
      # teste si le fichier existe bien car (dans certaines conditions encore inconnues selon qu'on le lance par le terminal ou le cron)
      # **/*.shp retourne aussi un fichier nommé "**/*.shp"
      if [ -f "$filepath" ]; then 
        # récupère la date de changement la plus récente des fichiers (de même nom) de la couche, exemple .shp.xml
        # attention cela différe de la date de modification
        # le rsync la modifie à l'heure locale lorsque le fichier est a été modifié
        datemodif=$(util::getlastchangedate "$filepath")
    
        if [[ "$datemodif" > "$lastdatemodif" ]]; then  # [[ .. ]] nécessaire pour comparer les chaines avec >
    
          importfile "$filepath" ""
    
          # TODO: ne modifier la date que si l'import du fichier a été un succés
          if [[ "$datemodif" > "$newlastdatemodif" ]]; then # [[ .. ]] nécessaire pour comparer les chaines avec >
            newlastdatemodif=$datemodif
          fi
        fi
    
      fi
  done
<commit_msg>pb casse<commit_after>#!/bin/bash

usage() { 
  program=$(basename "$0") 
  echo "==> usage :"
  echo "$program [-i inputpath=.] [-o output] [-d datapath=.] [-p paramfile=./.geosync.conf] -w workspace -s datastore [-c coveragestore] [-e epsg] [-v]"
  echo "$program -i 'directory of vectors/rasters' [-d datapath=.] [-p paramfile=./.geosync.conf] -w workspace -s datastore [-e epsg] [-v]"
  echo "$program -i vector.shp [-p paramfile=./.geosync.conf] -w workspace -s datastore -g pg_datastore -b db [-e epsg] [-v]"
  echo "$program -i raster.tif|png|adf|jpg|ecw [-p paramfile=./.geosync.conf] -w workspace -c coveragestore [-e epsg] [-v]"
  echo ""
  echo "Publie les couches (rasteurs, vecteurs) dans le geoserver depuis le dossier donné ([input]) ou sinon courant et ses sous-dossiers"
  echo ""
  echo "le login, mot de passe et l'url du geoserver doivent être dans un fichier (par défaut, .geosync.conf dans le même dossier que ce script)"
} 

echoerror() {
  echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $@" >&2  #Redirection vers la sortie d'erreurs standard  (stderr)
} 

error() {
  echoerror "$@"
  exit 1
}

# importe les vecteurs et rasteurs du dossier (path) et sous-dossiers
# écrit dans un fichier dans le datapath la date de changement la plus récente des fichiers indexés
importallfiles() {
  local path="$1"
  shift #consomme l'argument du tableau des arguments, pour pouvoir récupérer le reste dans "$@"
  local datapath="$1"
  shift #consomme l'argument du tableau des arguments, pour pouvoir récupérer le reste dans "$@"

  local lastdatemodif=0
  local newlastdatemodif

  # si datapath n'est pas un dossier existant alors on le créée
  if  [ ! -d "$datapath" ]; then
    echo "creation de datapath : $datapath"
    mkdir $datapath
  fi

  # fichier dédié à stocker la valeur lastdatemodif, date de changement la plus récente des fichiers indexés
  configfile="$datapath/lastdate.txt"

  # teste si le fichier  temporaire stockant la date de modif la plus récente existe
  # si tel est le cas, alors la récupère
  if [ -f "$configfile" ]; then 
    lastdatemodif=$(cat "$configfile")
  fi
  # newlastdatemodif est la valeur qui sera stockée à la place de lastdatemodif
  newlastdatemodif=$lastdatemodif

  cd "$path"

  # shopt -s globstar
  shopt -s globstar nocaseglob
  # set globstar, so that the pattern ** used in a pathname expansion context will 
  # match a files and zero or more directories and subdirectories.
  # nocaseglob : case insensitive
  #shopt -s extglob allow (.tif|.jpg) but does not work with globstar **
  # TODO: format des rasters supportés: tif, png, adf, jpg, ecw

  # si des extensions sont rajoutées, alors penser à mettre à jour lib/util.sh util::typeoflayer()
  for filepath in **/*.{shp,tif,png,jpg,ecw,sld,xml} **/w001001.adf; do
      # alternative dangereuse :
      # for filepath in $(find "$path" -iname "*.shp"); do
      # option -iname à find pour un filtre (-name) mais insensible à la casse (.SHP,.shp...)
    
      # teste si le fichier existe bien car (dans certaines conditions encore inconnues selon qu'on le lance par le terminal ou le cron)
      # **/*.shp retourne aussi un fichier nommé "**/*.shp"
      if [ -f "$filepath" ]; then 
        # récupère la date de changement la plus récente des fichiers (de même nom) de la couche, exemple .shp.xml
        # attention cela différe de la date de modification
        # le rsync la modifie à l'heure locale lorsque le fichier est a été modifié
        datemodif=$(util::getlastchangedate "$filepath")
    
        if [[ "$datemodif" > "$lastdatemodif" ]]; then  # [[ .. ]] nécessaire pour comparer les chaines avec >
    
          importfile "$filepath" ""
    
          # TODO: ne modifier la date que si l'import du fichier a été un succés
          if [[ "$datemodif" > "$newlastdatemodif" ]]; then # [[ .. ]] nécessaire pour comparer les chaines avec >
            newlastdatemodif=$datemodif
          fi
        fi
    
      fi
  done

{'fraction_non_alphanumeric': 0.11350737797956867, 'fraction_numerical': 0.003026863412788498, 'mean_word_length': 3.213602550478215, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1109787', 'n_tokens_mistral': 2806, 'n_tokens_neox': 2721, 'n_words': 989}