Project

General

Profile

1 11823 aaronmk
#!/bin/bash -e
2 1541 aaronmk
# Imports all inputs at once
3 11823 aaronmk
set -o errexit -o pipefail # errexit since may be called from shell
4 1541 aaronmk
5 11422 aaronmk
if test "$1" = .; then set --; fi # was .-included without args, so $@ is wrong
6
7 13978 aaronmk
hidden_srcs()
8
{
9
    local hidden_srcs=1 inputs=() # with_all adds the hidden srcs to @inputs
10
    . "$selfDir/with_all" import by_col=1 "$@"
11
}
12
13 13985 aaronmk
delete_logs() { find . -name "n=$n.$version.log.sql" -delete; }
14
15 11416 aaronmk
main()
16 1952 aaronmk
{
17
    local self="${BASH_SOURCE[0]}"
18
    local selfDir="$(dirname -- "$self")"
19 11430 aaronmk
    pushd "$selfDir/.."
20 1952 aaronmk
21 13982 aaronmk
    if ! test "$SHLVL" -ge 2; then # was run without subshell
22
        # needs subshell so errexits don't close the terminal window
23
        echo 'usage: must be run in a subshell, obtained by running `$0`' >&2
24
        return 0 # not nonzero because this will close the terminal window
25
    fi
26 1953 aaronmk
    if test "${BASH_LINENO[1]}" = 0; then # was run without initial "."
27 13981 aaronmk
        echo "usage: (*in subshell*) [version=...] [inputs=(inputs/src/ ...)]; \
28
. $self [vars...] (note initial \".\")"|fold -s >&2
29 13983 aaronmk
        return 0 # not nonzero because this will close the subshell
30 1952 aaronmk
    fi
31 7103 aaronmk
    : ${version=$(make -s version)}
32 10579 aaronmk
    local by_col=${by_col-1} full_import=1
33
    export version by_col full_import
34 1952 aaronmk
35 13985 aaronmk
    if test ! "${log-1}"; then trap delete_logs EXIT SIGINT SIGTERM; fi #log==''
36
37 13980 aaronmk
    local log=1 # always use log files for background processes
38
39 10847 aaronmk
    # remove any leftover TNRS lockfile. usually, the PID in it would not exist,
40
    # but sometimes it now refers to an active process which blocks tnrs.make.
41 11419 aaronmk
    "rm" -f inputs/.TNRS/tnrs/tnrs.make.lock
42 10847 aaronmk
43 11421 aaronmk
    make schemas/$version/reinstall
44 6946 aaronmk
45 13984 aaronmk
    set +o errexit # don't errexit if a background process is Ctrl-C'd
46
47 13979 aaronmk
    local hidden_srcs=1; . "$selfDir/with_all" Source/import "$@"
48 6897 aaronmk
        # note that this isn't affected by $import_source
49 6593 aaronmk
    wait # wait for asynchronous commands
50 11374 aaronmk
    unset hidden_srcs
51 6593 aaronmk
52 7095 aaronmk
    local import_source= # Source tables have already been imported
53
    export import_source # must come after local
54 6897 aaronmk
55 13978 aaronmk
    hidden_srcs "$@" # separate function to avoid overwriting @inputs
56 6594 aaronmk
    wait # wait for asynchronous commands
57 5503 aaronmk
58 11286 aaronmk
    . "$selfDir/with_all" import_scrub "$@" # uses $by_col
59 6210 aaronmk
60 7418 aaronmk
    local jobs="$(jobs -p)"
61
    echo "import_scrub PIDs: $jobs" >&2
62
63 10586 aaronmk
    bin/after_import $jobs &
64 7276 aaronmk
    echo "after_import PID: $!" >&2
65 7228 aaronmk
66
    . bin/disown_all
67 11430 aaronmk
68
    popd
69 1952 aaronmk
}
70 11416 aaronmk
main "$@"