aboutsummaryrefslogtreecommitdiff
path: root/content/blog/miscellaneous/etc-update-alpine.md
blob: 86fdcae2582013feb8c3d3fe7ed121752d83c7e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
---
title: "etc-update script for alpine linux"
date: 2019-04-02
description: etc-update script for alpine linux
tags:
- Alpine
- linux
---

## The script

Alpine linux doesn't seem to have a tool to merge pending configuration changes, so I wrote one :
```sh
#!/bin/sh
set -eu
 
for new_file in $(find /etc -iname '*.apk-new'); do
    current_file=${new_file%.apk-new}
    echo "===== New config file version for $current_file ====="
    diff ${current_file} ${new_file} || true
    while true; do
        echo "===== (r)eplace file with update?  (d)iscard update?  (m)erge files?  (i)gnore ====="
        PS2="k/d/m/i? "
        read choice
        case ${choice} in
            r)
                mv ${new_file} ${current_file}
                break;;
            d)
                rm -f ${new_file}
                break;;
            m)
                vimdiff ${new_file} ${current_file}
                break;;
            i)
                break;;
        esac
    done
done
```