From: Christian Heller Date: Fri, 5 Apr 2019 20:38:37 +0000 (+0200) Subject: Generalize copy_etc.sh. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdb.prefix%7D%7D/static/blog?a=commitdiff_plain;h=93f5ea313297999e0c68eb48f6d5cd4984c5dd4b;p=config Generalize copy_etc.sh. --- diff --git a/buster/apt-mark/eeepc b/buster/apt-mark/eeepc index d6e3a40..e04ae31 100644 --- a/buster/apt-mark/eeepc +++ b/buster/apt-mark/eeepc @@ -24,4 +24,8 @@ redshift alsa-utils # browser firefox-esr +# also useful +less +man-db +manpages diff --git a/buster/setup_scripts/copy_dirtree.sh b/buster/setup_scripts/copy_dirtree.sh new file mode 100755 index 0000000..ff4d5b4 --- /dev/null +++ b/buster/setup_scripts/copy_dirtree.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# Copy files in argument-selected subdirectories of $1 to subdirectories +# of $2 (which may be an empty string), e.g. with $1 of "etc_files", $2 +# of "" and $3 of "all", copy files below etc_files/all such as +# etc_files/all/etc/foo/bar to equivalent locations below / such as +# /etc/foo/bar. Create directories as necessary. Multiple arguments after +# $3 are possible. +# +# CAUTION: This removes original files at the affected paths. +set -e + +if [ "$#" -lt 3 ]; then + echo 'Need arguments: source root, target root, modules.' + false +fi +source_root="$1" +target_root="$2" +shift 2 + +config_tree_prefix="${HOME}/config/buster" +etc_files_dir="${config_tree_prefix}/etc_files" + +for target_module in "$@"; do + cd "${source_root}/${target_module}" + for path in $(find . -type f); do + target_path="${target_root}"$(echo "${path}" | cut -c2-) + source_path=$(realpath "${path}") + dir=$(dirname "${target_path}") + mkdir -p "${dir}" + cp "${source_path}" "${target_path}" + done +done diff --git a/buster/setup_scripts/copy_etc.sh b/buster/setup_scripts/copy_etc.sh deleted file mode 100755 index db07e4c..0000000 --- a/buster/setup_scripts/copy_etc.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# Copy files to those in argument-selected subdirectories of -# linkable_etc_files//, e.g. copy /etc/foo/bar to -# linkable_etc_files/$1/etc/foo/bar and so on. Create directories as -# necessary. -# -# CAUTION: This removes original files at the affected paths. -set -e - -config_tree_prefix="${HOME}/config/buster" -etc_files_dir="${config_tree_prefix}/etc_files" - -for target in "$@"; do - cd "${etc_files_dir}/${target}" - for path in $(find . -type f); do - target=$(echo "${path}" | cut -c2-) - source=$(realpath "${path}") - dir=$(dirname "${target}") - mkdir -p "${dir}" - cp "${source}" "${target}" - done -done diff --git a/buster/setup_scripts/setup.sh b/buster/setup_scripts/setup.sh index 93f3012..792a807 100755 --- a/buster/setup_scripts/setup.sh +++ b/buster/setup_scripts/setup.sh @@ -13,10 +13,10 @@ config_tree_prefix="${HOME}/config/buster" setup_scripts_dir="${config_tree_prefix}/setup_scripts" cd "${setup_scripts_dir}" -# Adapt /etc/ to our needs by hardlinking into ./linkable_etc_files. This -# will set basic configurations affecting following steps, such as setup -# of APT and the locale selection, so needs to be right at the beginning. -./copy_etc.sh all +# Adapt /etc/ to our needs by copying from ./etc_files. This will set +# basic configurations affecting following steps, such as setup of APT +# and the locale selection, so needs to be right at the beginning. +./copy_dirtree.sh "${config_tree_prefix}/etc_files" "" all # Set hostname and FQDN. ./set_hostname_and_fqdn.sh "${hostname}" "${fqdn}" diff --git a/buster/setup_scripts/setup_eeepc.sh b/buster/setup_scripts/setup_eeepc.sh index 212c2c0..7dcb351 100755 --- a/buster/setup_scripts/setup_eeepc.sh +++ b/buster/setup_scripts/setup_eeepc.sh @@ -11,5 +11,5 @@ config_tree_prefix="${HOME}/config/buster" setup_scripts_dir="${config_tree_prefix}/setup_scripts" cd "${setup_scripts_dir}" ./setup.sh "${hostname}" "" -./copy_etc.sh eeepc +./copy_dirtree.sh "${config_tree_prefix}/etc_files" "" eeepc ./install_for_target.sh eeepc