Page 1 sur 1

[conf] Récupérer le fichier par défaut

Publié : mar. 28 oct. 2014, 20:40
par Moviuro
Plop,

Alors, j'adore arch, mais quand tu fais le con, y'a pas d'outil facile pour te raccrocher aux branches. (J'envie FreeBSD qui apporte toujours par défaut un fichier .sample ou -dist pour chaque paquet, qui est en ro). Et comme j'aime faire l'andouille :bravo:, bah j'me suis écrit ce petit script tout mignon :

Code : Tout sélectionner

#!/usr/bin/env bash
case "$1" in
  /*)
    pacman -Qo "$1" >/dev/null || exit 1
    tar --extract --to-stdout --file "/var/cache/pacman/pkg/$(pacman -Q $(pacman -Qqo "$1") | sed 's/ /-/g')-$(uname --machine).pkg.tar.xz" "${1/\//}" > "$1.sample" || exit 2
    chmod a-w "$1.sample" || exit 3
    ;;
  *)
    echo "Use an abolute path." >&2 && exit 4
    ;;
esac
En gros : tester si ledit fichier appartient à un paquet, si oui, récupérer dans ledit paquet dans le cache ledit fichier de conf et l'écrire dans un .sample sur lequel on enlève les droits de modif -w.

Et puis c'est tout :)

Re: [conf] Récupérer le fichier par défaut

Publié : mer. 29 oct. 2014, 09:36
par staskr
Beau script :-)

Re: [conf] Récupérer le fichier par défaut

Publié : jeu. 30 oct. 2014, 23:34
par Moviuro

Code : Tout sélectionner

#!/usr/bin/env bash

cache_dir="/var/cache/pacman/pkg"

while getopts "hd:" opt; do
  case "$opt" in
    d)
      cache_dir="$OPTARG"
      ;;
    \?|h)
      cat << EOF
usage: $(basename "$0") [-h] [-d dir] file

-h display this help

restores original file (absolute path) from package in package cache in dir.
dir defaults to $cache_dir
EOF
      [[ "$opt" == "h" ]] && exit 0
      exit 5
      ;;
  esac
done

echo $cache_dir
shift "$((OPTIND-1))"

case "$1" in
  /*)
    pacman -Qo "$1" >/dev/null || exit 1
    tar --extract --to-stdout --file "$cache_dir/$(pacman -Q $(pacman -Qqo "$1") | sed 's/ /-/g')-$(uname --machine).pkg.tar.xz" "${1/\//}" > "$1.sample" || exit 2
    chmod a-w "$1.sample" || exit 3
    ;;
  *)
    echo "Use an abolute path." >&2 && exit 4
    ;;
esac
Up pour pouvoir donner un autre chemin pour le cache de paquets (comme moi qui mets les paquets compilés par yaourt dans /var/cache/aur/pkg)