bin/update
author Tero Marttila <terom@paivola.fi>
Mon, 19 Mar 2012 17:48:04 +0200
changeset 37 f28db5535b10
parent 36 3208cd6540dc
child 38 39799fc994e9
permissions -rwxr-xr-x
update: fix pvl.txt
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/bin/bash
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
# vim: set ft=sh :
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
set -ue
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
ROOT=$(pwd)
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
     8
# resolve $0
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
     9
self=$0
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    10
while [ -L $self ]; do
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    11
    tgt=$(readlink $self)
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    12
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    13
    if [ "${tgt:0:1}" == "/" ]; then
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    14
        self=$tgt
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    15
    else
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    16
        self=$(dirname $self)/$tgt
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    17
    fi
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    18
done
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    19
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    20
# bin dir
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    21
BIN=$(dirname $self)
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
PROCESS_ZONE=$BIN/process-zone
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
EXPAND_ZONE=$BIN/expand-zone
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    24
UPDATE_SERIAL=$BIN/update-serial
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    26
# data files
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    27
DATA=settings
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    28
ZONES=zones
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    29
SERIALS=$DATA
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    30
REPO=$DATA
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    32
# data args
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
PROCESS_ARGS='--input-charset latin-1'
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
FORWARD_MX=mail
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
REVERSE_ZONE=194.197.235
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
REVERSE_DOMAIN=paivola.fi
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    39
# external progs
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
    40
NAMED_CHECKZONE=/usr/sbin/named-checkzone
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    41
HG=/usr/bin/hg
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
    42
RNDC=/usr/sbin/rndc
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
    43
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    44
## options
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    45
IS_TTY=
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    46
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
    47
LOG_WARN=y
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    48
LOG=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    49
LOG_INFO=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    50
LOG_DEBUG=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    51
LOG_CMD=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    52
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    53
UPDATE_FORCE=
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    54
UPDATE_NOOP=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    55
UPDATE_DIFF=
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    56
SERIAL_NOUPDATE=
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    57
COMMIT_SKIP=
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    58
COMMIT_FORCE=
22
5d2a8510a28f update: fix COMMIT_MSG bug
Tero Marttila <terom@paivola.fi>
parents: 21
diff changeset
    59
COMMIT_MSG=' '
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    60
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
    61
DEPLOY_SKIP=
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
    62
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    63
function help_args {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    64
    local prog=$1
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    65
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    66
    cat <<END
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    67
Usage: $prog [options]
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    68
15
e517ad3376f7 update: fixup help
Tero Marttila <terom@paivola.fi>
parents: 14
diff changeset
    69
General:
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    70
    -h      display this help text
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    71
    -d DIR  datadir
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    72
15
e517ad3376f7 update: fixup help
Tero Marttila <terom@paivola.fi>
parents: 14
diff changeset
    73
Logging:    
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    74
    -q      quiet
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    75
    -v      verbose
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    76
    -D      debug
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    77
    -V      debug commands
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
    78
    
15
e517ad3376f7 update: fixup help
Tero Marttila <terom@paivola.fi>
parents: 14
diff changeset
    79
Updates:
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
    80
    -p      show changes
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    81
    -F      force-updates without checking src mtime
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    82
    -S      do not update serial
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    83
    -n      no-op/mock-update; don't actually change anything; implies -SpC
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    84
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    85
Commit    
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    86
    -C      do not commit changes
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
    87
    -c      commit changes
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    88
    -m MSG  commit message
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    89
END
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    90
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    91
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    92
function parse_args {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    93
    OPTIND=1
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    94
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
    95
    while getopts 'hd:qvDVpFSnCcm:' opt "$@"; do
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    96
        case $opt in
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    97
            h)  
15
e517ad3376f7 update: fixup help
Tero Marttila <terom@paivola.fi>
parents: 14
diff changeset
    98
                help_args $0
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
    99
                exit 0
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   100
            ;;
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   101
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   102
            d)  ROOT="$OPTARG" ;;
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   103
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   104
            q)  
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   105
                LOG= 
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   106
                LOG_WARN=
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   107
                ;;
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   108
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   109
            v)  LOG_INFO=y ;;
16
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   110
            D)  
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   111
                LOG_DEBUG=y
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   112
                LOG_INFO=y
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   113
                ;;
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   114
            V)  LOG_CMD=y ;;
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   115
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   116
            p)  UPDATE_DIFF=y ;;
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   117
            F)  UPDATE_FORCE=y ;;
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   118
            S)  SERIAL_NOUPDATE=y ;;
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   119
 
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   120
            n)  
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   121
                UPDATE_NOOP=y 
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   122
                # implies -Sp
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   123
                UPDATE_DIFF=y
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   124
                SERIAL_NOUPDATE=y
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   125
                COMMIT_SKIP=y
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   126
                DEPLOY_SKIP=y
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   127
                ;;
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   128
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   129
            C)  COMMIT_SKIP=y ;;
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   130
            c)  COMMIT_FORCE=y ;;
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   131
            m)  COMMIT_MSG="$OPTARG" ;;
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   132
           
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   133
            ?)  
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   134
                die 
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   135
            ;;
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   136
        esac
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   137
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   138
    done
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   139
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   140
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   141
## lib
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   142
function log_msg {
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   143
    echo "$*" >&2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   144
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   145
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   146
function log_color {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   147
    local code=$1; shift
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   148
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   149
    if [ $IS_TTY ]; then
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   150
        echo $'\e[0;'${code}'m'"$*"$'\e[00m' >&2
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   151
    else
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   152
        echo "$*" >&2
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   153
    fi
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   154
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   155
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   156
function log_error {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   157
    log_color 31 "$*"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   158
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   159
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   160
function log_warn {
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   161
    [ $LOG_WARN ] && log_color 33 "$*" || true
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   162
}
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   163
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   164
function log {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   165
    [ $LOG ] && log_msg "$*" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   166
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   167
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   168
function log_info {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   169
    [ $LOG_INFO ] && log_color 36 "  $*" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   170
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   171
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   172
function log_debug {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   173
    [ $LOG_DEBUG ] && log_color 32 "    $*" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   174
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   175
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   176
function log_cmd {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   177
    [ $LOG_CMD ] && log_color 35 "        \$ $*" || true
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   178
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   179
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   180
# XXX: broken
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   181
function log_stack {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   182
    local level=1
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   183
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   184
    while info=$(caller $level); do
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   185
        echo $info | read line sub file
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   186
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   187
        log_msg "$file:$lineno $sub()"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   188
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   189
        level=$(($level + 1))
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   190
    done
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   191
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   192
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   193
function fail {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   194
    func=$(caller 1 | cut -d ' ' -f 2)
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   195
    
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   196
    log_error "$func: $*"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   197
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   198
    exit 2
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   199
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   200
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   201
function die {
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   202
    log_error "$*"
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   203
    exit 1
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   204
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   205
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   206
function cmd {
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   207
    log_cmd "$@"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   208
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   209
    "$@" || die "Failed"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   210
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   211
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   212
function run_cmd {
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   213
    local msg=$1; shift
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   214
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   215
    log_info "$msg... "
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   216
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   217
    cmd "$@"
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   218
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   219
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   220
function indent () {
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   221
    local indent=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   222
18
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   223
    log_cmd "$@"
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   224
26
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   225
    "$@" | sed "s/^/$indent/"
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   226
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   227
    return ${PIPESTATUS[0]}
18
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   228
}
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   229
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   230
function abspath () {
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   231
    echo "$ROOT/$1"
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   232
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   233
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   234
## hg
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   235
function hg {
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   236
    local repo=$1; shift
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   237
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   238
    cmd $HG -R $ROOT/$repo "$@"
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   239
}
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   240
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   241
function hg_modified {
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   242
    local repo=$1
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   243
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   244
    hg $repo id | grep -q '+'
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   245
}
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   246
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   247
function hg_user {
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   248
    if [ ${SUDO_USER:-} ]; then
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   249
        echo '-u' "$SUDO_USER"
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   250
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   251
    elif [ $HOME ] && [ -e $HOME/.hgrc ]; then
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   252
        log_debug "using .hgrc user"
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   253
        echo ''
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   254
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   255
    else
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   256
        echo '-u' "$USER"
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   257
    fi
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   258
}
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   259
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   260
function hg_diff {
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   261
    local repo=$1
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   262
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   263
    hg $repo diff
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   264
}
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   265
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   266
function hg_commit {
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   267
    local repo=$1
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   268
    local msg=$2
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   269
    local user_opt=$(hg_user)
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   270
    
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   271
    log_debug "commit: $user_opt: $msg"
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   272
    hg $repo commit $user_opt -m "$msg"
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   273
}
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   274
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   275
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   276
## functions
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   277
function check_update {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   278
    # target
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   279
    local dst=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   280
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   281
    log_debug "check_update: $dst"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   282
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   283
    # need update?
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   284
    local update=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   285
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   286
    if [ ! -e $dst ] || [ $UPDATE_FORCE ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   287
        log_debug "  update forced"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   288
        update=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   289
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   290
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   291
    # check deps
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   292
    for dep in "$@"; do
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   293
        # don't bother checking if already figured out
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   294
        [ $update ] && continue
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   295
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   296
        # check
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   297
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   298
        if [ $ROOT/$dst -ot $ROOT/$dep ]; then
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   299
            log_debug "  changed: $dep"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   300
            update=y
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   301
        fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   302
    done
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   303
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   304
    [ ! $update ] && log_debug "  up-to-date"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   305
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   306
    # return
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   307
    [ $update ]
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   308
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   309
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   310
function do_update {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   311
    local dst=$1; shift
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   312
    local tmp=$dst.new
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   313
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   314
    log_debug "update: $dst"
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   315
    cmd "$@" > $ROOT/$tmp
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   316
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   317
    # compare
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   318
    if [ -e $ROOT/$dst ] && [ $UPDATE_DIFF ]; then
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   319
        log_debug "  changes:"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   320
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   321
        # terse
32
694dab02a6b0 update: do_update: ignore diff error exit
Tero Marttila <terom@paivola.fi>
parents: 31
diff changeset
   322
        indent "        " diff --unified=1 $ROOT/$dst $ROOT/$tmp || true
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   323
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   324
    
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   325
    if [ $UPDATE_NOOP ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   326
        # cleanup
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   327
        log_debug "  no-op"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   328
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   329
        cmd rm $ROOT/$tmp
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   330
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   331
        # commit
9
beb4bef2498a update: bugfix, -C
Tero Marttila <terom@paivola.fi>
parents: 8
diff changeset
   332
        log_debug "  update"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   333
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   334
        cmd mv $ROOT/$tmp $ROOT/$dst
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   335
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   336
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   337
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   338
function update {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   339
    local dst=$1; shift;
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   340
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   341
    local sep=
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   342
    local dep=()
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   343
    local cmd=()
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   344
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   345
    for arg in "$@"; do
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   346
        if [ $arg == '--' ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   347
            sep=y
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   348
        fi
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   349
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   350
        if [ $sep ]; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   351
            cmd=("${cmd[@]:-}" "$arg")
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   352
        else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   353
            dep=("${dep[@]:-}" "$arg")
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   354
        fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   355
    done
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   356
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   357
    [ ! $sep ] && fail "Invalid args given: $@"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   358
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   359
    check_update $dst "${dep[@]}" && do_update $dst "${cmd[@]}" || true
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   360
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   361
16
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   362
## actions
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   363
function update_zone_serial {
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   364
    local name=$1; shift
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   365
    local file=$SERIALS/$name.serial
14
b883ef452cd8 fix handling of initial serial
Tero Marttila <terom@paivola.fi>
parents: 13
diff changeset
   366
    
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   367
    local old=$(test -e $ROOT/$file && cat $ROOT/$file || echo '')
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   368
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   369
    log_info "Updating $file..."
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   370
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   371
    cmd $UPDATE_SERIAL $* $ROOT/$file
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   372
    
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   373
    local new=$(cat $ROOT/$file)
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   374
        
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   375
    log_debug "  $old -> $new"
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   376
}
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   377
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   378
function link_zone_serial {
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   379
    local name=$1
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   380
    local base=$2
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   381
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   382
    local lnk=$SERIALS/$name.serial
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   383
    local tgt=$SERIALS/$base.serial
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   384
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   385
    if [ -e $ROOT/$lnk ] && [ $(readlink $ROOT/$lnk) == $ROOT/$tgt ]; then
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   386
        log_info "Linking $lnk -> $tgt: not changed"
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   387
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   388
    else
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   389
        log_info "Linking $lnk -> $tgt..."
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   390
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   391
        cmd ln -sf $ROOT/$tgt $ROOT/$lnk
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   392
    fi
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   393
}
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   394
16
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   395
function update_zone_part {
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   396
    local zone=$1
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   397
    local part=$2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   398
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   399
    local name=$zone.zone.$part
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   400
    local src=$DATA/$name
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   401
    local dst=$ZONES/$name
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   402
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   403
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   404
    if check_update $dst $src; then
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   405
        log_info "Copying zones/$name..."
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   406
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   407
        do_update $dst cat $ROOT/$src
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   408
    else
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   409
        log_info "Copying zones/$name: not changed"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   410
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   411
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   412
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   413
function update_zone {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   414
    local zone=$1
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   415
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   416
    local out=$ZONES/$zone
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   417
    local in=$DATA/$zone.zone
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   418
    local serial=$SERIALS/$zone.serial
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   419
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   420
    if check_update $out $in $serial; then
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   421
        log_info "Generating $out..." 
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   422
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   423
        do_update $out \
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   424
            $EXPAND_ZONE $ROOT/$DATA/$zone.zone   \
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   425
                --serial $ROOT/$SERIALS/$zone.serial  \
18
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   426
                --expand zones=$(abspath $ZONES)
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   427
    else
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   428
        log_info "Generating $out: not changed" 
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   429
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   430
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   431
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   432
function update_zone_view {
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   433
    local zone=$1
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   434
    local view=$2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   435
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   436
    local out=$ZONES/$view/$zone
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   437
    local in=$DATA/$zone.zone
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   438
    local serial=$SERIALS/$zone.serial
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   439
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   440
    if check_update $out $in $serial; then
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   441
        log_info "Generating $out..."
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   442
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   443
        do_update $out \
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   444
            $EXPAND_ZONE $ROOT/$DATA/$zone.zone   \
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   445
                --serial $ROOT/$SERIALS/$zone.serial  \
18
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   446
                --expand zones=$(abspath $ZONES)    \
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   447
                --expand view=$view
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   448
    else
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   449
        log_info "Generating $out: not changed"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   450
    fi
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   451
}
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   452
30
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   453
function link_zone_view {
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   454
    local zone=$1
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   455
    local view=$2
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   456
    local base=$3
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   457
    
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   458
    local lnk=$ZONES/$view/$zone
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   459
    local tgt=
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   460
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   461
    # find tgt
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   462
    for path in "$ZONES/$view/$base" "$ZONES/$base"; do
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   463
        if [ -e "$ROOT/$path" ]; then
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   464
            log_debug "$view/$zone: base $base from $path"
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   465
            tgt="$path"
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   466
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   467
            break
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   468
        fi
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   469
    done
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   470
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   471
    if [ ! $tgt ]; then
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   472
        die "$view/$zone: base $base not found!"
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   473
    fi
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   474
   
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   475
    # link
30
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   476
    if [ -e $ROOT/$lnk ] && [ $(readlink $ROOT/$lnk) == $ROOT/$tgt ]; then
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   477
        log_info "Linking $lnk -> $tgt: not changed"
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   478
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   479
    else
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   480
        log_info "Linking $lnk -> $tgt..."
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   481
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   482
        cmd ln -sf $ROOT/$tgt $ROOT/$lnk
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   483
    fi
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   484
}
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   485
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   486
function update_hosts {
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   487
    local dst=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   488
    local src=$1; shift
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   489
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   490
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   491
    if check_update $dst $src; then
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   492
        log_info "Generating $dst..."
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   493
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   494
        do_update $dst $PROCESS_ZONE $PROCESS_ARGS $ROOT/$src "$@"
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   495
    else
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   496
        log_info "Generating $dst: not changed"
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   497
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   498
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   499
26
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   500
# feed `hg annotate -qd`'d version of input to process-zone --input-line-date
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   501
# only applies commit'd data
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   502
function update_hosts_meta {
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   503
    local dst=$1; shift
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   504
    local src=$1; shift
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   505
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   506
    if check_update $dst $src; then
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   507
        log_info "Generating $dst..."
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   508
        
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   509
        # via stdin
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   510
        $hg $DATA annotate -qd $ROOT/$src | \
26
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   511
            do_update $dst $PROCESS_ZONE $PROCESS_ARGS --input-line-date --meta-zone "$@"
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   512
    else
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   513
        log_info "Generating $dst: not changed"
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   514
    fi
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   515
}
d2fdfe98b7b9 update: fix indent leading whitespace; implement update_hosts_meta, but not used - commit workflow becomes a little weird
Tero Marttila <terom@paivola.fi>
parents: 22
diff changeset
   516
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   517
function check_hosts {
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   518
    local hosts=$1; shift 1
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   519
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   520
    local cmd=($PROCESS_ZONE $PROCESS_ARGS $ROOT/$hosts --check-hosts "$@")
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   521
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   522
    if "${cmd[@]}" -q; then
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   523
        log_info "Check $hosts: OK"
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   524
    else
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   525
        log_error "  Check $hosts: Failed"
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   526
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   527
        indent "    " "${cmd[@]}"
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   528
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   529
        exit 1
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   530
    fi
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   531
}
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   532
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   533
function check_zone {
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   534
    local name=$1
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   535
    local file=$2
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   536
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   537
    local cmd=($NAMED_CHECKZONE $name $ROOT/$file)
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   538
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   539
    # test
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   540
    # XXX: checkzone is very specific about the order of arguments, -q must be first
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   541
    if $NAMED_CHECKZONE -q $name $ROOT/$file; then
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   542
        log_info "Check $file($name): OK"
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   543
    else
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   544
        log_error "  Check $file($name): Failed:"
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   545
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   546
        indent "    " "${cmd[@]}"
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   547
        
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   548
        exit 1
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   549
    fi
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   550
}
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   551
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   552
# deploy new zone data to bind
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   553
function deploy_zones {
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   554
    indent "        rndc: " $RNDC reload
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   555
}
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   556
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   557
# commit data changes
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   558
function commit_data {
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   559
    local repo=$1
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   560
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   561
    if hg_modified $repo; then
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   562
        log_info "Commit changes in $repo:"
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   563
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   564
        indent "    " hg_diff $repo
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   565
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   566
        hg_commit $repo "$COMMIT_MSG"
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   567
    else
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   568
        log_info "Commit changes in $repo: no changes"
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   569
    fi
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   570
}
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   571
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   572
function ensure_dir {
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   573
    local dir=$1
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   574
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   575
    if [ ! -d $ROOT/$dir ]; then
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   576
        log_warn "Creating output dir: $dir"
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   577
        cmd mkdir $ROOT/$dir
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   578
    fi
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   579
}
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   580
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   581
function main {
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   582
    # test tty
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   583
    [ -t 1 ] && IS_TTY=y
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   584
    
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   585
    local views=(internal external)
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   586
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   587
    parse_args "$@"
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   588
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   589
    ## test env
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   590
    [ -d $ROOT/$DATA ] || die "Missing data: $ROOT/$DATA"
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   591
    ensure_dir  $ZONES
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   592
    
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   593
    # views
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   594
    for view in "${views[@]}" "common" "hosts"; do
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   595
        ensure_dir $ZONES/$view
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   596
    done
28
647f6de0d0ac update: implement -d for $ROOT
Tero Marttila <terom@paivola.fi>
parents: 27
diff changeset
   597
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   598
    ## hosts
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   599
    # test
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   600
    log "Testing hosts..."
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   601
        check_hosts     $DATA/paivola.txt --check-exempt ufc
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   602
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   603
    # update
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   604
    log "Generating host zones..."
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   605
        update_hosts    $ZONES/hosts/paivola.internal       $DATA/paivola.txt --forward-zone --forward-txt --forward-mx $FORWARD_MX
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   606
        update_hosts    $ZONES/hosts/paivola.external       $DATA/paivola.txt --forward-zone
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   607
        update_hosts    $ZONES/hosts/194.197.235            $DATA/paivola.txt --reverse-zone $REVERSE_ZONE --reverse-domain $REVERSE_DOMAIN
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   608
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   609
        
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   610
        # XXX: foward
37
f28db5535b10 update: fix pvl.txt
Tero Marttila <terom@paivola.fi>
parents: 36
diff changeset
   611
        update_hosts    $ZONES/hosts/pvl                    $DATA/pvl.txt      --forward-zone
f28db5535b10 update: fix pvl.txt
Tero Marttila <terom@paivola.fi>
parents: 36
diff changeset
   612
        update_hosts    $ZONES/hosts/10                     $DATA/pvl.txt      --reverse-zone 10 --reverse-domain pvl -q
f28db5535b10 update: fix pvl.txt
Tero Marttila <terom@paivola.fi>
parents: 36
diff changeset
   613
        update_hosts    $ZONES/hosts/192.168                $DATA/pvl.txt      --reverse-zone 192.168 --reverse-domain pvl -q
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   614
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   615
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   616
    ## zones
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   617
    # parts
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   618
    log "Copying zone parts..."
16
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   619
        update_zone_part    paivola         auto
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   620
        update_zone_part    paivola         services
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   621
        update_zone_part    paivola         internal
6516dc848a47 update: tweak functions
Tero Marttila <terom@paivola.fi>
parents: 15
diff changeset
   622
        update_zone_part    paivola         external
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   623
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   624
    # serials
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   625
    if [ $SERIAL_NOUPDATE ]; then
18
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   626
        log "Updating serials: skipped"
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   627
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   628
    else
18
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   629
        log "Updating serials..."
826103fe3c8c update: abspath; fixup serials log; indent log_cmd
Tero Marttila <terom@paivola.fi>
parents: 17
diff changeset
   630
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   631
        update_zone_serial  pvl
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   632
        link_zone_serial    10          pvl
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   633
        link_zone_serial    192.168     pvl
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   634
17
6cb141e5de6b update: fixup info
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
   635
        update_zone_serial  paivola
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   636
        update_zone_serial  194.197.235
13
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   637
    fi
7d02a07e0354 update: check_hosts
Tero Marttila <terom@paivola.fi>
parents: 10
diff changeset
   638
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   639
    # headers
8
dab145ee3f81 update: mad bash wizardry
Tero Marttila <terom@paivola.fi>
parents: 7
diff changeset
   640
    log "Updating zones headers..."
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   641
        update_zone_view    pvl                 internal
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   642
        update_zone_view    paivola             internal
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   643
        update_zone_view    paivola             external
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   644
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   645
        update_zone_view    10                  internal
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   646
        update_zone_view    192.168             internal
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   647
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   648
        update_zone_view    194.197.235         common
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   649
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   650
    # test
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   651
    log "Testing zones..."
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   652
        check_zone          paivola.fi                  $ZONES/external/paivola
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   653
        check_zone          paivola.fi                  $ZONES/internal/paivola
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   654
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   655
        check_zone          10.in-addr.arpa             $ZONES/internal/10
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   656
        check_zone          192.168.in-addr.arpa        $ZONES/internal/192.168
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   657
        check_zone          235.197.194.in-addr.arpa    $ZONES/common/194.197.235
10
26e789db3f72 update: named-checkzone
Tero Marttila <terom@paivola.fi>
parents: 9
diff changeset
   658
30
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   659
    # extra zones...
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   660
    local base_zone=paivola
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   661
    local link_zones=(paivola.fi paivola.net paivola.org paivola.info paivola.mobi xn--pivl-load8j.fi)
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   662
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   663
    log "Linking extra zones..."
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   664
    for view in "${views[@]}"; do
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   665
        for zone in "${link_zones[@]}"; do
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   666
            link_zone_view  $zone   $view   $base_zone
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   667
            check_zone      $zone   $ZONES/$view/$zone
30
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   668
        done
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   669
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   670
        # reverse
36
3208cd6540dc update: restructure zones/, manage .pvl
Tero Marttila <terom@paivola.fi>
parents: 32
diff changeset
   671
        link_zone_view      194.197.235     $view   common/194.197.235
30
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   672
    done
1a8bc67b1eb7 update: link_zones for paivola.*.zone -> paivola.zone
Tero Marttila <terom@paivola.fi>
parents: 29
diff changeset
   673
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   674
    ## deploy
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   675
    if [ $DEPLOY_SKIP ]; then
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   676
        log "Deploy zones: skipped"
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   677
27
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   678
    else
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   679
        log "Deploy zones..."
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   680
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   681
        deploy_zones
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   682
    fi
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   683
773c91a7547a update: deploy_zones
Tero Marttila <terom@paivola.fi>
parents: 26
diff changeset
   684
    ## commit
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   685
    if [ $COMMIT_SKIP ] && [ ! $COMMIT_FORCE ]; then
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   686
        log "Commit data: skipped"
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   687
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   688
    else
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   689
        log "Commit data..."
31
2b7aad3466c6 update: log_warn, -q; ensure_dir; link_zone paivola-reverse; indent error exit
Tero Marttila <terom@paivola.fi>
parents: 30
diff changeset
   690
            commit_data $REPO
21
81cd07bc5f76 update: commit
Tero Marttila <terom@paivola.fi>
parents: 19
diff changeset
   691
    fi
2
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   692
}
aeb106b9487c update: update zonefiles
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   693
7
f4457348faa0 update: function update { ... }, color logging, update_serial
Tero Marttila <terom@paivola.fi>
parents: 2
diff changeset
   694
main "$@"