-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprinter.sh
More file actions
131 lines (100 loc) · 2.92 KB
/
printer.sh
File metadata and controls
131 lines (100 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash
[[ "" == "$PRINTER_TARGET_STDOUT" ]] && \
export readonly PRINTER_TARGET_STDOUT="stdout"
[[ "" == "$PRINTER_TARGET_FILE" ]] && \
export readonly PRINTER_TARGET_FILE="file"
export PRINTER_PRINT_TARGET
export PRINTER_PRINT_FILENAME
export PRINTER_INITED
export PRINTER_INFO
function printer_init() {
[[ "" != "$PRINTER_INITED" ]] && return
local filename="$1"
local target="$2"
PRINTER_PRINT_TARGET="$PRINTER_TARGET_STDOUT"
[[ "$PRINTER_TARGET_STDOUT" != "$target" ]] && \
PRINTER_PRINT_TARGET="$PRINTER_TARGET_FILE"
unset PRINTER_PRINT_FILENAME
[[ "$PRINTER_TARGET_FILE" == "$PRINTER_PRINT_TARGET" ]] && { \
PRINTER_PRINT_FILENAME="$filename"
}
[[ "" == "$PRINTER_PRINT_FILENAME" ]] && { \
PRINTER_PRINT_TARGET="$PRINTER_TARGET_STDOUT"
}
[[ -f "$PRINTER_PRINT_FILENAME" ]] && { \
echo "$PRINTER_PRINT_FILENAME exists!"
unset PRINTER_PRINT_FILENAME
PRINTER_PRINT_TARGET="$PRINTER_TARGET_STDOUT"
}
printer_targetinfo_
PRINTER_INITED=true
}
function printer_println() {
local line="$*"
local target_cmd=
[[ "$PRINTER_TARGET_FILE" == "$PRINTER_PRINT_TARGET" ]] && { \
flock -x "$PRINTER_PRINT_FILENAME"
echo -e "$line" >> $PRINTER_PRINT_FILENAME
flock -u "$PRINTER_PRINT_FILENAME"
printer_sync
return
}
echo -e "$line"
}
function printer_targetinfo_() {
PRINTER_TARGETINFO=`echo -e \
"Printer[$PRINTER_PRINT_TARGET/$PRINTER_PRINT_FILENAME]"`
}
function printer_targetinfo() {
echo -e "$PRINTER_TARGETINFO"
}
function printer_test() {
source module.sh
module_import timing.sh
local now="$REQUEST_STARTDATETIME"
local filename="printer_test.$now.data"
echo printer_test RUNNING
echo Printing to $filename
printer_init "$filename" ; { \
printer_targetinfo
printer_println hello
printer_println nihao
printer_println bonjour
printer_println $now $filename
}
printer_finalize
echo Printing to $PRINTER_TARGET_STDOUT
printer_init && { \
printer_targetinfo
printer_println hello
printer_println nihao
printer_println bonjour
printer_println 20230312
}
printer_finalize
echo printer_test FINISED
}
function printer_finalize() {
printer_sync
unset PRINTER_INITED
unset PRINTER_INFO
unset PRINTER_PRINT_TARGET
unset PRINTER_PRINT_FILENAME
}
function printer_sync() {
[[ "true" != "$PRINTER_INITED" ]] && return
[[ "$PRINTER_TARGET_FILE" != "$PRINTER_PRINT_TARGET" ]] && return
[[ "" == "$PRINTER_PRINT_FILENAME" ]] && return
fsync "$PRINTER_PRINT_FILENAME"
}
function printer_load() {
MODULE_PRINTER_LOADED=true
echo printer_load
}
function printer_exit() {
unset MODULE_PRINTER_LOADED
}
if [[ "$MODULE_PRINTER_LOADED" != 'true' ]]; then
echo "Loading printer"
printer_load
fi