Skip to content

Commit 94997f5

Browse files
committed
✨ Add --sudo option to laptop_file_ensure_template for elevated permissions
1 parent 2fcfdcd commit 94997f5

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

lib/function/file_ensure_template.sh

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ laptop_require "laptop_path_print"
1111
# laptop_file_ensure_template <template> <target>
1212
# Options:
1313
# --force Force to overwrite file if present
14+
# --sudo Run mkdir/cp under sudo (via sh -c so the whole pipeline is elevated)
1415
#
1516
laptop_file_ensure_template() {
1617
local template="$1"
1718
local target="$2"
1819
local force=0
20+
local use_sudo=0
1921
local positional_args=()
2022

2123
while [[ $# -gt 0 ]]; do
@@ -24,6 +26,10 @@ laptop_file_ensure_template() {
2426
force=1
2527
shift
2628
;;
29+
--sudo)
30+
use_sudo=1
31+
shift
32+
;;
2733
-*)
2834
echo "Unknown option $1"
2935
exit 1
@@ -48,9 +54,10 @@ laptop_file_ensure_template() {
4854
if [ "$force" -eq 0 ] && [ -f "$target" ]; then
4955
laptop_step_status "pass"
5056
else
51-
laptop_step_eval "\
52-
mkdir -p $(quote "$(dirname "$target")") && \
53-
cp -f $(quote "$template") $(quote "$target") \
54-
"
57+
local sudo
58+
if [ "$use_sudo" -eq 1 ]; then
59+
sudo="sudo"
60+
fi
61+
laptop_step_eval "$sudo mkdir -p $(quote "$(dirname "$target")") && $sudo cp -f $(quote "$template") $(quote "$target")"
5562
fi
5663
}

0 commit comments

Comments
 (0)