Project

General

Profile

« Previous | Next » 

Revision 9074

*{.sh,run}: removed extra space between function name and (), which is apparently not needed even though `help function` includes it. this greatly improves readability, including when function names are pasted into commit messages!

View differences:

inputs/GBIF/table.run
4 4

  
5 5
if self_not_included; then
6 6

  
7
table.tsv/make ()
7
table.tsv/make()
8 8
{
9 9
	echo_func; set_make_vars; check_target_exists
10 10
	to_target echo_run "$(dirname "${BASH_SOURCE[0]}")"/MySQL_export
11 11
}
12 12

  
13
export_mysql ()
13
export_mysql()
14 14
{
15 15
	echo_func
16 16
	table.tsv/make
17 17
}
18 18

  
19 19
func_override import__table_run
20
import ()
20
import()
21 21
{
22 22
	echo_func
23 23
	export_mysql
inputs/GBIF/raw_occurrence_record/run
4 4
if self_not_included; then
5 5

  
6 6
func_override export_mysql__table_run
7
export_mysql ()
7
export_mysql()
8 8
{
9 9
	echo_func
10 10
	export_mysql__table_run "$@"
inputs/GBIF/_MySQL/run
3 3

  
4 4
if self_not_included; then
5 5

  
6
import ()
6
import()
7 7
{
8 8
	echo_func
9 9
	make --directory="$top_dir"
inputs/GBIF/run
5 5

  
6 6
subdirs=(_MySQL raw_occurrence_record)
7 7

  
8
import ()
8
import()
9 9
{
10 10
	echo_func
11 11
	fwd "$FUNCNAME" "$@"
schemas/VegCore/VegCore.pg.sql.run
5 5

  
6 6
if self_not_included; then
7 7

  
8
install ()
8
install()
9 9
{
10 10
	echo_func
11 11
	root_make schemas/temp/reinstall
12 12
	psql_script_vegbien <"$top_file"
13 13
}
14 14

  
15
all ()
15
all()
16 16
{
17 17
	echo_func
18 18
	install
schemas/VegCore/VegCore.ERD.mwb.run
7 7

  
8 8
if self_not_included; then
9 9

  
10
VegCore.my.sql/make ()
10
VegCore.my.sql/make()
11 11
{
12 12
	echo_func; set_make_vars
13 13
	database=VegCore mysqldump_local --skip-add-drop-table >"$target"
14 14
}
15 15

  
16
export_mysql ()
16
export_mysql()
17 17
{
18 18
	echo_func
19 19
	VegCore.my.sql/make
20 20
}
21 21

  
22
VegCore.pg.sql/make ()
22
VegCore.pg.sql/make()
23 23
{
24 24
	echo_func; set_make_vars
25 25
	sql_ascii=1 my2pg <"${target%.pg.sql}.my.sql" >"$target"
26 26
}
27 27

  
28
export_postgres ()
28
export_postgres()
29 29
{
30 30
	echo_func
31 31
	VegCore.pg.sql/make
32 32
}
33 33

  
34
export_ ()
34
export_()
35 35
{
36 36
	echo_func
37 37
	(cd "$top_dir"; unzip_newer "$top_filename" document.mwb.xml)
......
39 39
	export_postgres
40 40
}
41 41

  
42
import ()
42
import()
43 43
{
44 44
	echo_func
45 45
	(cd "$top_dir"; zip_newer "$top_filename" document.mwb.xml)
46 46
}
47 47

  
48
sync ()
48
sync()
49 49
{
50 50
	echo_func
51 51
	export_
52 52
	import
53 53
}
54 54

  
55
all ()
55
all()
56 56
{
57 57
	echo_func
58 58
	sync
run
8 8
: "${schema:=public}"
9 9
: "${exports_dir:="$top_dir"/exports}"
10 10

  
11
geoscrub_input/make ()
11
geoscrub_input/make()
12 12
{
13 13
	echo_func; set_make_vars; check_fake_target_exists
14 14
	pg_export_table_to_dir_no_header "$target_filename"
15 15
}
16 16

  
17
export_ ()
17
export_()
18 18
{
19 19
	echo_func
20 20
	geoscrub_input/make
lib/import.sh
22 22
: "${table="$(basename "$PWD")"}"
23 23
export schema table
24 24

  
25
psql ()
25
psql()
26 26
{
27 27
	(cat <<EOF
28 28
\set schema "$schema"
......
34 34
	env no_search_path=1 "$bin_dir"/psql_verbose_vegbien
35 35
}
36 36

  
37
make ()
37
make()
38 38
{
39 39
	(set -x; env make --directory=.. --makefile=../input.Makefile \
40 40
"${@/#/$table/}")
41 41
}
42 42

  
43
map_table ()
43
map_table()
44 44
{
45 45
	make map.csv
46 46
	psql <<EOF
......
50 50
EOF
51 51
}
52 52

  
53
mk_derived () { "$root_dir"/schemas/VegCore/mk_derived; }
53
mk_derived() { "$root_dir"/schemas/VegCore/mk_derived; }
54 54

  
55
public_schema_exists ()
55
public_schema_exists()
56 56
{ "$bin_dir"/psql_script_vegbien </dev/null 2>/dev/null; }
57 57

  
58
remake_VegBIEN_mappings ()
58
remake_VegBIEN_mappings()
59 59
{
60 60
	public_schema_exists || return 0
61 61
	rm header.csv map.csv # remake them
lib/runscripts/util.run
8 8
. "$(dirname "${BASH_SOURCE[0]}")"/path/to/util.run or file_including_util.run
9 9
. "$(dirname "${BASH_SOURCE[0]}")"/other_includes
10 10

  
11
cmd ()
11
cmd()
12 12
{
13 13
	echo_func
14 14
	"$(dirname "${BASH_SOURCE[0]}")"/path_relative_to_self
......
23 23

  
24 24
# users can override run_args_cmd to perform other commands (or no commands)
25 25
# after the script is read
26
on_exit () { run_args_cmd; }
26
on_exit() { run_args_cmd; }
27 27
trap on_exit EXIT
28 28

  
29 29
top_file="${top_script%.run}"
lib/runscripts/table.run
5 5
. "$(dirname "${BASH_SOURCE[0]}")"/path/to/table.run
6 6

  
7 7
func_override import__table_run
8
import ()
8
import()
9 9
{
10 10
	echo_func
11 11
	before_import_cmds
......
25 25
mk_esc_name table
26 26
export schema table
27 27

  
28
input_make ()
28
input_make()
29 29
{
30 30
	echo_func
31 31
	extern make --directory="$top_dir"/.. "${@/#/$table/}"
32 32
}
33 33

  
34
map_table ()
34
map_table()
35 35
{
36 36
	echo_func
37 37
	input_make map.csv
......
42 42
EOF
43 43
}
44 44

  
45
mk_derived ()
45
mk_derived()
46 46
{
47 47
	echo_func
48 48
	"$root_dir"/schemas/VegCore/mk_derived
49 49
}
50 50

  
51
remake_VegBIEN_mappings ()
51
remake_VegBIEN_mappings()
52 52
{
53 53
	echo_func
54 54
	public_schema_exists || return 0
......
56 56
	yes|input_make test
57 57
}
58 58

  
59
postprocess () # overridable
59
postprocess() # overridable
60 60
{
61 61
	echo_func
62 62
	local file="$top_dir"/postprocess.sql
63 63
	if test -e "$file"; then psql "$@"; fi
64 64
}
65 65

  
66
import ()
66
import()
67 67
{
68 68
	echo_func
69 69
	map_table
lib/runscripts/import.run
4 4
#!/bin/bash -e
5 5
. "$(dirname "${BASH_SOURCE[0]}")"/path/to/import.run
6 6

  
7
import ()
7
import()
8 8
{
9 9
	echo_func
10 10
	import_cmds
......
15 15

  
16 16
if self_not_included; then
17 17

  
18
import ()
18
import()
19 19
{
20 20
	echo_func
21 21
}
22 22

  
23
export_ ()
23
export_()
24 24
{
25 25
	echo_func
26 26
}
27 27

  
28
all ()
28
all()
29 29
{
30 30
	echo_func
31 31
	import
lib/sh/local.sh
13 13

  
14 14
#### make
15 15

  
16
root_make () { echo_func; make --directory="$root_dir" "$@"; }
16
root_make() { echo_func; make --directory="$root_dir" "$@"; }
17 17

  
18 18
#### connection vars
19 19

  
......
28 28

  
29 29
: "${postgres_compat=1}"
30 30

  
31
mysqldump_local () { echo_func; use_local_remote; mysqldump_diffable "$@"; }
31
mysqldump_local() { echo_func; use_local_remote; mysqldump_diffable "$@"; }
32 32

  
33 33
### PostgreSQL
34 34

  
35
psql () # usage: [file=...] [dir=...] self
35
psql() # usage: [file=...] [dir=...] self
36 36
{
37 37
	echo_func
38 38
	if test "$file"; then
......
53 53
	env no_search_path=1 "$psql_cmd" --output /dev/fd/4 "$@" 4>&1 >&2
54 54
}
55 55

  
56
public_schema_exists () { psql_script_vegbien </dev/null 2>/dev/null; }
56
public_schema_exists() { psql_script_vegbien </dev/null 2>/dev/null; }
57 57

  
58 58
fi
lib/sh/make.sh
3 3

  
4 4
if self_not_included; then
5 5

  
6
# usage: target_filename/command () { echo_func; set_make_vars; ...; }
6
# usage: target_filename/command() { echo_func; set_make_vars; ...; }
7 7
alias set_make_vars="$(cat <<'EOF'
8 8
local command="${FUNCNAME##*/}"; echo_vars command
9 9
local target_filename="${FUNCNAME%/*}"; echo_vars target_filename
......
21 21
# usage: set_make_vars; to_target cmd...
22 22
alias to_target='stdout="$target" to_file ' # last space alias-expands next word
23 23

  
24
make () { echo_func; stdout2stderr=1 limit_stderr_cmd self "$@"; }
24
make() { echo_func; stdout2stderr=1 limit_stderr_cmd self "$@"; }
25 25

  
26 26
if false; then ## usage:
27 27
inline_make 3<<'EOF'
......
30 30
EOF
31 31
# target will be run automatically because it's first in the makefile
32 32
fi ##
33
inline_make ()
33
inline_make()
34 34
{
35 35
	echo_func
36 36
	local self="$(readlink -f "${BASH_SOURCE[1]}")"
lib/sh/util.sh
4 4
if test ! "$_util_sh_include_guard_utils"; then
5 5
_util_sh_include_guard_utils=1
6 6

  
7
function extern () { (exec "$@") || return; }
7
function extern() { (exec "$@") || return; }
8 8

  
9
isset () { test "${!1+isset}"; }
9
isset() { test "${!1+isset}"; }
10 10

  
11
realpath () { readlink -f -- "$1"; }
11
realpath() { readlink -f -- "$1"; }
12 12

  
13
include_guard_var () { realpath "$1"|"extern" sed 's/[^a-zA-Z0-9_]/_/g'; }
13
include_guard_var() { realpath "$1"|"extern" sed 's/[^a-zA-Z0-9_]/_/g'; }
14 14

  
15
self_not_included () # usage: if self_not_included; then ... fi
15
self_not_included() # usage: if self_not_included; then ... fi
16 16
{
17 17
	test $# -ge 1 || set -- "${BASH_SOURCE[1]}"
18 18
	local include_guard="$(include_guard_var "$1")"
......
40 40

  
41 41
#### aliases
42 42

  
43
unalias () { builtin unalias "$@" 2>&- || true; } # no error if undefined
43
unalias() { builtin unalias "$@" 2>&- || true; } # no error if undefined
44 44

  
45 45

  
46 46
#### exceptions
......
56 56

  
57 57
# usage: try cmd...; ignore status; if catch status; then ...; fi; end_try
58 58

  
59
function try () { e=0; "$@" || { export_e; true; }; }
59
function try() { e=0; "$@" || { export_e; true; }; }
60 60
alias try='declare e; try ' # last space alias-expands next word
61 61

  
62
catch () { test "$e" -eq "$1"; e=0; }
62
catch() { test "$e" -eq "$1"; e=0; }
63 63

  
64
ignore () { catch "$@" || true; }
64
ignore() { catch "$@" || true; }
65 65

  
66 66
alias end_try='rethrow'
67 67
alias end_try_subshell='rethrow_subshell'
......
72 72

  
73 73
#### integers
74 74

  
75
let! () { let "$@" || true; } # always returns true; safe to use for setting
75
let!() { let "$@" || true; } # always returns true; safe to use for setting
76 76
	# "If the last ARG evaluates to 0, let returns 1" (`help let`)
77 77

  
78
bool2int () { try test ! "$1"; echo "$e"; } # empty->0; non-empty->1
78
bool2int() { try test ! "$1"; echo "$e"; } # empty->0; non-empty->1
79 79

  
80 80

  
81 81
#### arrays
82 82

  
83
join () { local IFS="$delim"; echo "$*"; } # usage: delim=... join elems...
83
join() { local IFS="$delim"; echo "$*"; } # usage: delim=... join elems...
84 84

  
85
reverse () # usage: array=($(reverse args...))
85
reverse() # usage: array=($(reverse args...))
86 86
{
87 87
	local i
88 88
	for (( i=$#; i >= 1; i-- )); do printf '%q ' "${!i}"; done
......
91 91

  
92 92
#### paths
93 93

  
94
canon_rel_path ()
94
canon_rel_path()
95 95
{
96 96
	local path="$1"
97 97
	path="$(realpath "$path")" # canonicalize
......
112 112
#### verbose output
113 113

  
114 114
# usage: (stdout2stderr; cmd...) || return
115
# `|| return` needed on Mac because of bug where -e doesn't apply to ()
116
stdout2stderr () { exec >&2; }
115
# `|| return` needed on Mac because of bug where -e doesn't apply to()
116
stdout2stderr() { exec >&2; }
117 117

  
118 118
# set verbosity
119 119
if isset verbose; then : "${verbosity:=$(bool2int "$verbose")}"; fi
......
122 122
declare -i verbosity # ensure integer
123 123
export verbosity # propagate the verbosity to invoked commands
124 124

  
125
can_log () { test "$verbosity" -gt 0; } # verbosity=0 turns off all logging
125
can_log() { test "$verbosity" -gt 0; } # verbosity=0 turns off all logging
126 126

  
127
log () { if can_log; then echo "$PS4$1" >&2; fi; }
127
log() { if can_log; then echo "$PS4$1" >&2; fi; }
128 128

  
129 129
# usage: symbol=... log_custom msg
130
log_custom () { local PS4="${PS4%[^ ] }$symbol "; log "$@"; }
130
log_custom() { local PS4="${PS4%[^ ] }$symbol "; log "$@"; }
131 131

  
132
log_err () { symbol=! log_custom "$@"; }
132
log_err() { symbol=! log_custom "$@"; }
133 133

  
134
log_info () { symbol=? log_custom "$@"; }
134
log_info() { symbol=? log_custom "$@"; }
135 135

  
136 136
# usage: cmd || { save_e; log_e; ...; rethrow; }
137
log_e () { log_err "command exited with error $e"; }
137
log_e() { log_err "command exited with error $e"; }
138 138

  
139 139
# usage: cmd || [type=...] die msg
140
die () { save_e; "log_${type:-err}" "$1"; rethrow; }
140
die() { save_e; "log_${type:-err}" "$1"; rethrow; }
141 141

  
142 142
: "${log_indent=  }"
143 143

  
......
151 151
fi # load new aliases
152 152
if self_being_included; then
153 153

  
154
echo_cmd ()
154
echo_cmd()
155 155
{
156 156
	case "$1" in extern) shift;; esac # extern implied by the log_level
157 157
	log "$*"
158 158
}
159 159

  
160
echo_run () { cmd2rel_path; echo_cmd "$@"; "$@"; }
160
echo_run() { cmd2rel_path; echo_cmd "$@"; "$@"; }
161 161

  
162 162
# usage: (limit_stderr; cmd...) || return
163
# `|| return` needed on Mac because of bug where -e doesn't apply to ()
164
limit_stderr () { inc_log_level; if ! can_log; then exec 2>/dev/null; fi; }
163
# `|| return` needed on Mac because of bug where -e doesn't apply to()
164
limit_stderr() { inc_log_level; if ! can_log; then exec 2>/dev/null; fi; }
165 165

  
166
limit_stderr_cmd () # usage: [stdout2stderr=1] limit_stderr_cmd cmd...
166
limit_stderr_cmd() # usage: [stdout2stderr=1] limit_stderr_cmd cmd...
167 167
{
168 168
	case "$1" in echo_run) shift; cmd2rel_path; echo_cmd "$@";; esac
169 169
	(limit_stderr
......
179 179
# echo all external commands
180 180
alias extern="echo_run extern " # last space alias-expands next word
181 181

  
182
alias self='extern "$FUNCNAME"' # usage: wrapper () { self ...; }
182
alias self='extern "$FUNCNAME"' # usage: wrapper() { self ...; }
183 183

  
184 184
# commands that are always external
185 185
for cmd in env; do alias "$cmd=extern $cmd"; done; unset cmd
186 186

  
187
function echo_func ()
187
function echo_func()
188 188
{
189 189
	inc_log_level
190 190
	local script="$(canon_rel_path "${BASH_SOURCE[1]}")"
......
197 197
fi # load new aliases
198 198
if self_being_included; then
199 199

  
200
echo_stdin () # usage: input|echo_stdin|cmd
200
echo_stdin() # usage: input|echo_stdin|cmd
201 201
{
202 202
	inc_log_level
203 203
	if can_log; then
......
211 211

  
212 212
alias echo_stdout='echo_stdin' # usage: cmd|echo_stdout
213 213

  
214
echo_vars () # usage: echo_vars var...
214
echo_vars() # usage: echo_vars var...
215 215
{
216 216
	inc_log_level; inc_log_level
217 217
	if can_log; then
......
220 220
	fi
221 221
}
222 222

  
223
echo_export () { builtin export "$@"; echo_vars "$@"; }
223
echo_export() { builtin export "$@"; echo_vars "$@"; }
224 224

  
225 225
if test "$verbosity" -ge 2; then
226 226
	alias export="echo_export" # automatically echo env vars when they are set
227 227
fi
228 228

  
229
usage () { echo "Usage: $1" >&2; (exit 2); }
229
usage() { echo "Usage: $1" >&2; (exit 2); }
230 230

  
231 231
fi # load new aliases
232 232
if self_being_included; then
......
236 236

  
237 237
sed_ere_flag="$(test "$(uname)" = Darwin && echo E || echo r)"
238 238

  
239
sed () { self -"$sed_ere_flag" "$@";}
239
sed() { self -"$sed_ere_flag" "$@";}
240 240

  
241 241

  
242 242
#### vars
243 243

  
244
set_var () { eval "$1"'="$2"'; }
244
set_var() { eval "$1"'="$2"'; }
245 245

  
246
set_inv () { set_var no_"$1" "$(test "${!1}" || echo 1)"; }
246
set_inv() { set_var no_"$1" "$(test "${!1}" || echo 1)"; }
247 247

  
248 248
# usage: local var=...; local_inv
249 249
alias local_inv='declare "no_$var=$(test "${!var}" || echo 1)"'
......
262 262

  
263 263
#### functions
264 264

  
265
func_exists () { declare -f "$1" >/dev/null; }
265
func_exists() { declare -f "$1" >/dev/null; }
266 266

  
267
copy_func () # usage: from=... to=... copy_func
267
copy_func() # usage: from=... to=... copy_func
268 268
# $to must not exist. to get around the no-clobber restriction, use `unset -f`.
269 269
{
270 270
	: "${from:?}" "${to:?}"
......
274 274
	eval "$to${from_def#$from}"
275 275
}
276 276

  
277
func_override () # usage: func_override old_name__suffix
277
func_override() # usage: func_override old_name__suffix
278 278
{ from="${1%%__*}" to="$1" copy_func; }
279 279

  
280 280

  
......
283 283
top_script="$0" # outermost script
284 284
top_dir="$(dirname "$top_script")"
285 285

  
286
require_exists () # usage: require_exists file || return 0
286
require_exists() # usage: require_exists file || return 0
287 287
{ test ! -e "$1" || type=info die "file "$1" already exists, skipping"; }
288 288

  
289 289
# auto-removes a command's output file on error (like make's .DELETE_ON_ERROR)
290
function to_file () # usage: stdout=... [if_not_exists=1] to_file cmd...
290
function to_file() # usage: stdout=... [if_not_exists=1] to_file cmd...
291 291
{
292 292
	echo_func
293 293
	: "${stdout?}"; echo_vars stdout
......
296 296
}
297 297
alias to_file='to_file ' # last space alias-expands next word
298 298

  
299
run_args_cmd () # runs the command line args command
299
run_args_cmd() # runs the command line args command
300 300
{
301 301
	test $? -eq 0 || return
302 302
	eval set -- "$(reverse "${BASH_ARGV[@]}")"
......
304 304
	echo_cmd "$(canon_rel_path "$0")" "$@"; "$@"
305 305
}
306 306

  
307
fwd () # usage: subdirs=(...); fwd "$FUNCNAME" "$@"
307
fwd() # usage: subdirs=(...); fwd "$FUNCNAME" "$@"
308 308
{
309 309
	echo_func
310 310
	: "${subdirs?}"
......
317 317

  
318 318
#### URLs
319 319

  
320
localize_url () { test _"$1" = _"$(hostname -f)" || echo "$1"; }
320
localize_url() { test _"$1" = _"$(hostname -f)" || echo "$1"; }
321 321

  
322 322
fi
lib/sh/archives.sh
5 5

  
6 6
### zip
7 7

  
8
zip ()
8
zip()
9 9
{
10 10
	stdout2stderr=1 try limit_stderr_cmd self "$@"
11 11
	ignore 12 # "zip has nothing to do" (`man zip`)
12 12
	end_try
13 13
}
14 14

  
15
unzip () { stdout2stderr=1 limit_stderr_cmd self "$@"; }
15
unzip() { stdout2stderr=1 limit_stderr_cmd self "$@"; }
16 16

  
17 17
set_inv force
18 18
alias zip_newer='zip ${no_force:+-u }'
lib/sh/db.sh
10 10

  
11 11
quote='"'
12 12

  
13
esc_name () { echo "$quote${1//$quote/$quote$quote}$quote"; }
13
esc_name() { echo "$quote${1//$quote/$quote$quote}$quote"; }
14 14

  
15
mk_esc_name () { set_var "$1"_esc "$(esc_name "${!1}")"; }
15
mk_esc_name() { set_var "$1"_esc "$(esc_name "${!1}")"; }
16 16

  
17 17
alias mk_schema_esc='declare schema_esc; mk_esc_name schema'
18 18
alias mk_table_esc='declare table_esc; mk_esc_name table'
......
20 20
fi # load new aliases
21 21
if self_being_included; then
22 22

  
23
log_sql () { test "$verbosity" -ge 2; }
23
log_sql() { test "$verbosity" -ge 2; }
24 24

  
25 25

  
26 26
### MySQL
27 27

  
28 28
# auto-adds connection/login opts when specified
29
mysql_cmd () # usage: mysql* () { ...; mysql_cmd "$@"; }
29
mysql_cmd() # usage: mysql*() { ...; mysql_cmd "$@"; }
30 30
{
31 31
	echo_func
32 32
	local ssh_server="$(localize_url "$ssh_server")"
......
42 42
${password+="$password"} ${database:+--databases "$database" --tables } "$@"
43 43
}
44 44

  
45
mysql () { echo_func; mysql_cmd --verbose "$@"; }
45
mysql() { echo_func; mysql_cmd --verbose "$@"; }
46 46

  
47
mysql_ANSI ()
47
mysql_ANSI()
48 48
{
49 49
	echo_func
50 50
	(echo "SET sql_mode = 'ANSI';"; cat)|mysql "$@"
51 51
}
52 52

  
53
mysqldump () # usage: [schema=1 | data=1] mysqldump db [table...]
53
mysqldump() # usage: [schema=1 | data=1] mysqldump db [table...]
54 54
{
55 55
	echo_func
56 56
	mysql_cmd --quick --lock-tables=false --set-charset \
......
58 58
${schema:+--no-data }${data:+--no-create-info }"$@"
59 59
}
60 60

  
61
mysqldump_diffable ()
61
mysqldump_diffable()
62 62
{
63 63
	echo_func
64 64
	mysqldump "$@"|{ pipe_delay; sed 's/^(-- Dump completed).*$/\1/'; }
......
67 67

  
68 68
### PostgreSQL
69 69

  
70
pg_copy_to ()
70
pg_copy_to()
71 71
{
72 72
	echo_func
73 73
	if test ! "$source"; then
......
81 81
	psql "$@" <<<"COPY $source TO STDOUT $pg_copy_format;"
82 82
}
83 83

  
84
pg_header ()
84
pg_header()
85 85
{
86 86
	echo_func
87 87
	local pg_copy_format="CSV HEADER" limit=0
88 88
	pg_copy_to "$@"|echo_stdout
89 89
}
90 90

  
91
pg_export_table_no_header ()
91
pg_export_table_no_header()
92 92
{
93 93
	echo_func
94 94
	local pg_copy_format="CSV"
95 95
	pg_copy_to "$@"
96 96
}
97 97

  
98
pg_export_table_to_dir_no_header ()
98
pg_export_table_to_dir_no_header()
99 99
{
100 100
	echo_func
101 101
	local table="$1"; shift; mk_table_esc
web/links/index.htm.run
7 7

  
8 8
export linked_file="${BASH_SOURCE[0]%.run}"
9 9

  
10
clean_up ()
10
clean_up()
11 11
{
12 12
	echo_func
13 13
	echo_run in_place "$linked_file" repl \
14 14
	"$root_dir"/lib/Firefox_bookmarks.reformat.csv
15 15
}
16 16

  
17
all ()
17
all()
18 18
{
19 19
	echo_func
20 20
	clean_up

Also available in: Unified diff