Project

General

Profile

1
#!/bin/bash -e
2
# Imports all inputs at once
3

    
4
. "$(dirname "${BASH_SOURCE[0]}")"/../lib/runscripts/util.run "$@"
5

    
6
set -o errexit -o pipefail # errexit since may be called from shell
7

    
8
if test "$1" = .; then set --; fi # was .-included without args, so $@ is wrong
9

    
10
hidden_srcs()
11
{
12
    local hidden_srcs=1 inputs=() # with_all adds the hidden srcs to @inputs
13
    . "$selfDir/with_all" import "$@"
14
}
15

    
16
delete_logs()
17
{
18
	if test "$delete_logs"; then
19
		(set -x; find . -name "${n:+n=$n.}$version.log.sql" -delete)
20
	fi
21
}
22

    
23
main()
24
{
25
    local self="${BASH_SOURCE[0]}"
26
    local selfDir="$(dirname -- "$self")"
27
    pushd "$selfDir/.."
28
    
29
    if ! test "$SHLVL" -ge 2; then # was run without subshell
30
        # needs subshell so errexits don't close the terminal window
31
        echo 'usage: must be run in a subshell, obtained by running `$0`' >&2
32
        return 0 # not nonzero because this will close the terminal window
33
    fi
34
    if test "${BASH_LINENO[1]}" = 0; then # was run without initial "."
35
        echo "usage: (*in subshell*) [version=...] [inputs=(inputs/src/ ...)]; \
36
. $self [vars...] (note initial \".\")"|fold -s >&2
37
        return 0 # not nonzero because this will close the subshell
38
    fi
39
    : ${version=$(output_data=1 make -s version)}
40
    local by_col=${by_col-1} full_import=1
41
    export version by_col full_import
42
    
43
    if test ! "${log-1}"; then local delete_logs=1; fi #log==''
44
    trap delete_logs SIGINT SIGTERM #not EXIT b/c doesn't run until *shell* exit
45
    
46
    local log=1 # always use log files for background processes
47
    
48
    # remove any leftover TNRS lockfile. usually, the PID in it would not exist,
49
    # but sometimes it now refers to an active process which blocks tnrs.make.
50
    "rm" -f inputs/.TNRS/tnrs/tnrs.make.lock
51
    
52
    make schemas/$version/reinstall
53
    
54
    set +o errexit # don't errexit if a background process is Ctrl-C'd
55
    
56
    local hidden_srcs=1; . "$selfDir/with_all" Source/import "$@"
57
        # note that this isn't affected by $import_source
58
    wait # wait for asynchronous commands
59
    unset hidden_srcs
60
    
61
    local import_source= # Source tables have already been imported
62
    export import_source # must come after local
63
    
64
    hidden_srcs "$@" # separate function to avoid overwriting @inputs
65
    wait # wait for asynchronous commands
66
    
67
    . "$selfDir/with_all" import_scrub "$@" # uses $by_col
68
    
69
    local jobs="$(jobs -p)"
70
    echo "import_scrub PIDs: $jobs" >&2
71
    
72
    bin/after_import $jobs &
73
    echo "after_import PID: $!" >&2
74
    
75
    popd
76
    delete_logs # manually run b/c `trap EXIT` doesn't run until *shell* exit
77
}
78

    
79
on_exit
(31-31/87)