summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
Diffstat (limited to 'script')
-rw-r--r--script/delete_dir.sh13
-rw-r--r--script/delete_file.sh14
-rw-r--r--script/install_dir.sh37
-rw-r--r--script/install_file.sh55
4 files changed, 119 insertions, 0 deletions
diff --git a/script/delete_dir.sh b/script/delete_dir.sh
new file mode 100644
index 0000000..93df582
--- /dev/null
+++ b/script/delete_dir.sh
@@ -0,0 +1,13 @@
+delete_dir() {
+ path="$1"
+
+ if [ "$DELETE_OBSOLETE" = 'YES' ]; then
+ if [ -e "$path" ]; then
+ echo '==='
+ echo "rmdir \"$path\""
+ if [ "$DRY" != 'YES' ]; then
+ rmdir "$path"
+ fi
+ fi
+ fi
+}
diff --git a/script/delete_file.sh b/script/delete_file.sh
new file mode 100644
index 0000000..ebcc5b0
--- /dev/null
+++ b/script/delete_file.sh
@@ -0,0 +1,14 @@
+delete_file() {
+ path="$1"
+
+ if [ "$DELETE_OBSOLETE" = 'YES' ]; then
+ if [ -e "$path" -o -e "$path.old" ]; then
+ echo '==='
+ if [ -e "$path" ]; then echo "rm -f \"$path\""; fi
+ if [ -e "$path.old" ]; then echo "rm -f \"$path.old\""; fi
+ if [ "$DRY" != 'YES' ]; then
+ rm -f "$path" "$path.old"
+ fi
+ fi
+ fi
+}
diff --git a/script/install_dir.sh b/script/install_dir.sh
new file mode 100644
index 0000000..a476ad0
--- /dev/null
+++ b/script/install_dir.sh
@@ -0,0 +1,37 @@
+install_dir() {
+ mode="$1"
+ owner="$2"
+ group="$3"
+ path="$4"
+
+ if [ "$DRY" = 'YES' ]; then
+ before_mode_stat="$(stat -f '%p' "$path" 2>/dev/null || echo '????')"
+ before_mode_prefix="${before_mode_stat%????}"
+ before_mode="${before_mode_stat#"$before_mode_prefix"}"
+ before_mode_user_group="$(stat -f '%Su %Sg' "$path" 2>/dev/null || echo '???? ????')"
+
+ before_cmp="$before_mode $before_mode_user_group"
+ after_cmp="$mode $owner $group"
+
+ before="$before_cmp $path"
+ after="$after_cmp $path"
+ else
+ before="$(ls -dl "$path" 2>&1 || true)"
+ install -m "$mode" -o "$owner" -g "$group" -d "$path"
+ after="$(ls -dl "$path" 2>&1)"
+
+ before_cmp="$(echo "$before" | awk '{ print $1 " " $2 " " $3 " " $4 }')"
+ after_cmp="$(echo "$after" | awk '{ print $1 " " $2 " " $3 " " $4 }')"
+ fi
+
+ changed=''
+ if [ "$before_cmp" != "$after_cmp" ]; then
+ changed='YES'
+ fi
+
+ if [ "$changed" = 'YES' ]; then
+ echo '==='
+ echo "$before"
+ echo "$after"
+ fi
+}
diff --git a/script/install_file.sh b/script/install_file.sh
new file mode 100644
index 0000000..71ff624
--- /dev/null
+++ b/script/install_file.sh
@@ -0,0 +1,55 @@
+install_file() {
+ mode="$1"
+ owner="$2"
+ group="$3"
+ path="$4"
+
+ if [ "$DRY" = 'YES' ]; then
+ before_mode_stat="$(stat -f '%p' "$path" 2>/dev/null || echo '????')"
+ before_mode_prefix="${before_mode_stat%????}"
+ before_mode="${before_mode_stat#"$before_mode_prefix"}"
+ before_mode_user_group="$(stat -f '%Su %Sg' "$path" 2>/dev/null || echo '???? ????')"
+
+ before_cmp="$before_mode $before_mode_user_group"
+ after_cmp="$mode $owner $group"
+
+ before="$before_cmp $path"
+ after="$after_cmp $path"
+
+ old="$path"
+ new="$REPO$path"
+ else
+ before="$(ls -dl "$path" 2>&1 || true)"
+ install -b -m "$mode" -o "$owner" -g "$group" "$REPO$path" "$path"
+ after="$(ls -dl "$path" 2>&1)"
+
+ before_cmp="$(echo "$before" | awk '{ print $1 " " $2 " " $3 " " $4 }')"
+ after_cmp="$(echo "$after" | awk '{ print $1 " " $2 " " $3 " " $4 }')"
+
+ old="$path.old"
+ new="$path"
+ fi
+
+ changed=''
+ diffed=''
+ if [ "$before_cmp" != "$after_cmp" ]; then
+ changed='YES'
+ fi
+ if [ -f "$old" ]; then
+ if ! diff "$old" "$new" >/dev/null 2>/dev/null; then
+ changed='YES'
+ diffed='YES'
+ fi
+ fi
+
+ if [ "$changed" = 'YES' ]; then
+ echo '==='
+ echo "$before"
+ echo "$after"
+
+ if [ "$diffed" = 'YES' ]; then
+ echo '---'
+ diff "$old" "$new" || true
+ fi
+ fi
+}