zugpferd 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/setup-schemas +176 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b9958c2c1a118694c6232c624d11e2d0d9ea07ec9908e3b7d4398c236d505343
|
|
4
|
+
data.tar.gz: 0d9a7e373aa70c17becd0c24c1a9ef67eaaa63d67a388b0f31d8f47f1fdb5acd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ae3c9fa8a8fd24afe433d91ec1aedd8695d8bf1b59ace7d3c81a1d9cdf91709c48a6c53910883f62273c1d7f5d16ac3b61ed009f942ed78e0f66b21cde9334bd
|
|
7
|
+
data.tar.gz: a2cdadd08aab4a70567629555124c22fb620441e6c05d93d6d675d6b0bdbf58c7c0e5c5d8f3b8d180fa26557ee02bc13ebafb55e541d0facf70dfcdee9ef1112
|
data/bin/setup-schemas
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
VENDOR_DIR="$(cd "$(dirname "$0")/../vendor" && pwd)"
|
|
5
|
+
SCHEMAS_DIR="$VENDOR_DIR/schemas"
|
|
6
|
+
TMP_DIR=$(mktemp -d)
|
|
7
|
+
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
8
|
+
|
|
9
|
+
# --- Saxon HE (for Schematron validation) ---
|
|
10
|
+
|
|
11
|
+
echo "==> Downloading Saxon HE..."
|
|
12
|
+
SAXON_DIR="$SCHEMAS_DIR/saxon"
|
|
13
|
+
mkdir -p "$SAXON_DIR"
|
|
14
|
+
|
|
15
|
+
SAXON_VERSION="12.5"
|
|
16
|
+
XMLRESOLVER_VERSION="5.2.2"
|
|
17
|
+
MAVEN="https://repo1.maven.org/maven2"
|
|
18
|
+
|
|
19
|
+
if [ ! -f "$SAXON_DIR/saxon-he-$SAXON_VERSION.jar" ]; then
|
|
20
|
+
echo " Downloading saxon-he-$SAXON_VERSION.jar..."
|
|
21
|
+
curl -fsSL "$MAVEN/net/sf/saxon/Saxon-HE/$SAXON_VERSION/Saxon-HE-$SAXON_VERSION.jar" \
|
|
22
|
+
-o "$SAXON_DIR/saxon-he-$SAXON_VERSION.jar"
|
|
23
|
+
else
|
|
24
|
+
echo " saxon-he-$SAXON_VERSION.jar already present"
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
if [ ! -f "$SAXON_DIR/xmlresolver-$XMLRESOLVER_VERSION.jar" ]; then
|
|
28
|
+
echo " Downloading xmlresolver-$XMLRESOLVER_VERSION.jar..."
|
|
29
|
+
curl -fsSL "$MAVEN/org/xmlresolver/xmlresolver/$XMLRESOLVER_VERSION/xmlresolver-$XMLRESOLVER_VERSION.jar" \
|
|
30
|
+
-o "$SAXON_DIR/xmlresolver-$XMLRESOLVER_VERSION.jar"
|
|
31
|
+
else
|
|
32
|
+
echo " xmlresolver-$XMLRESOLVER_VERSION.jar already present"
|
|
33
|
+
fi
|
|
34
|
+
echo " OK"
|
|
35
|
+
|
|
36
|
+
# --- UBL 2.1 XSD ---
|
|
37
|
+
|
|
38
|
+
echo ""
|
|
39
|
+
echo "==> Downloading UBL 2.1 XSD schemas..."
|
|
40
|
+
UBL_DIR="$SCHEMAS_DIR/ubl"
|
|
41
|
+
|
|
42
|
+
if [ ! -d "$UBL_DIR/xsd/maindoc" ]; then
|
|
43
|
+
echo " Downloading UBL-2.1.zip..."
|
|
44
|
+
curl -fsSL "http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.zip" \
|
|
45
|
+
-o "$TMP_DIR/UBL-2.1.zip"
|
|
46
|
+
mkdir -p "$UBL_DIR/xsd"
|
|
47
|
+
unzip -qo "$TMP_DIR/UBL-2.1.zip" "os-UBL-2.1/xsd/*" -d "$TMP_DIR"
|
|
48
|
+
cp -r "$TMP_DIR/os-UBL-2.1/xsd/"* "$UBL_DIR/xsd/"
|
|
49
|
+
else
|
|
50
|
+
echo " UBL XSD already present"
|
|
51
|
+
fi
|
|
52
|
+
echo " OK"
|
|
53
|
+
|
|
54
|
+
# --- CII D16B XSD ---
|
|
55
|
+
|
|
56
|
+
echo ""
|
|
57
|
+
echo "==> Downloading CII D16B XSD schemas..."
|
|
58
|
+
CII_DIR="$SCHEMAS_DIR/cii"
|
|
59
|
+
|
|
60
|
+
if [ ! -f "$CII_DIR/CrossIndustryInvoice_100pD16B.xsd" ]; then
|
|
61
|
+
echo " Downloading D16B SCRDM (Subset) CII..."
|
|
62
|
+
CII_URL="https://unece.org/fileadmin/DAM/cefact/xml_schemas/D16B_SCRDM__Subset__CII.zip"
|
|
63
|
+
curl -fsSL "$CII_URL" -o "$TMP_DIR/cii-outer.zip" || {
|
|
64
|
+
echo " WARN: Could not download CII XSD from UN/CEFACT."
|
|
65
|
+
echo " Download manually from: $CII_URL"
|
|
66
|
+
echo " Extract the 'uncoupled' XSD files into $CII_DIR/"
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if [ -f "$TMP_DIR/cii-outer.zip" ]; then
|
|
70
|
+
mkdir -p "$CII_DIR"
|
|
71
|
+
unzip -qo "$TMP_DIR/cii-outer.zip" -d "$TMP_DIR/cii-outer"
|
|
72
|
+
# The outer ZIP contains nested ZIPs — extract the uncoupled one
|
|
73
|
+
UNCOUPLED_ZIP=$(find "$TMP_DIR/cii-outer" -name "*uncoupled.zip" -type f | head -1)
|
|
74
|
+
if [ -n "$UNCOUPLED_ZIP" ]; then
|
|
75
|
+
unzip -qo "$UNCOUPLED_ZIP" -d "$CII_DIR"
|
|
76
|
+
else
|
|
77
|
+
echo " WARN: Could not find uncoupled ZIP inside CII archive"
|
|
78
|
+
fi
|
|
79
|
+
fi
|
|
80
|
+
else
|
|
81
|
+
echo " CII XSD already present"
|
|
82
|
+
fi
|
|
83
|
+
echo " OK"
|
|
84
|
+
|
|
85
|
+
# --- CEN Schematron EN16931 ---
|
|
86
|
+
|
|
87
|
+
echo ""
|
|
88
|
+
echo "==> Downloading CEN Schematron EN16931..."
|
|
89
|
+
CEN_VERSION="1.3.15"
|
|
90
|
+
CEN_BASE="https://github.com/ConnectingEurope/eInvoicing-EN16931/releases/download/validation-$CEN_VERSION"
|
|
91
|
+
|
|
92
|
+
CEN_UBL_DIR="$SCHEMAS_DIR/schematron/cen/ubl"
|
|
93
|
+
if [ ! -f "$CEN_UBL_DIR/xslt/EN16931-UBL-validation.xslt" ]; then
|
|
94
|
+
echo " Downloading en16931-ubl-$CEN_VERSION.zip..."
|
|
95
|
+
curl -fsSL "$CEN_BASE/en16931-ubl-$CEN_VERSION.zip" -o "$TMP_DIR/cen-ubl.zip"
|
|
96
|
+
mkdir -p "$CEN_UBL_DIR"
|
|
97
|
+
unzip -qo "$TMP_DIR/cen-ubl.zip" -d "$CEN_UBL_DIR"
|
|
98
|
+
else
|
|
99
|
+
echo " CEN UBL Schematron already present"
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
CEN_CII_DIR="$SCHEMAS_DIR/schematron/cen/cii"
|
|
103
|
+
if [ ! -f "$CEN_CII_DIR/xslt/EN16931-CII-validation.xslt" ]; then
|
|
104
|
+
echo " Downloading en16931-cii-$CEN_VERSION.zip..."
|
|
105
|
+
curl -fsSL "$CEN_BASE/en16931-cii-$CEN_VERSION.zip" -o "$TMP_DIR/cen-cii.zip"
|
|
106
|
+
mkdir -p "$CEN_CII_DIR"
|
|
107
|
+
unzip -qo "$TMP_DIR/cen-cii.zip" -d "$CEN_CII_DIR"
|
|
108
|
+
else
|
|
109
|
+
echo " CEN CII Schematron already present"
|
|
110
|
+
fi
|
|
111
|
+
echo " OK"
|
|
112
|
+
|
|
113
|
+
# --- XRechnung Schematron ---
|
|
114
|
+
|
|
115
|
+
echo ""
|
|
116
|
+
echo "==> Downloading XRechnung Schematron..."
|
|
117
|
+
XRECHNUNG_SCHEMATRON_VERSION="2.5.0"
|
|
118
|
+
XRECHNUNG_SPEC_VERSION="3.0.2"
|
|
119
|
+
XR_DIR="$SCHEMAS_DIR/schematron/xrechnung"
|
|
120
|
+
|
|
121
|
+
if [ ! -f "$XR_DIR/schematron/ubl/XRechnung-UBL-validation.xsl" ]; then
|
|
122
|
+
echo " Downloading xrechnung-$XRECHNUNG_SPEC_VERSION-schematron-$XRECHNUNG_SCHEMATRON_VERSION.zip..."
|
|
123
|
+
curl -fsSL "https://github.com/itplr-kosit/xrechnung-schematron/releases/download/release-$XRECHNUNG_SCHEMATRON_VERSION/xrechnung-$XRECHNUNG_SPEC_VERSION-schematron-$XRECHNUNG_SCHEMATRON_VERSION.zip" \
|
|
124
|
+
-o "$TMP_DIR/xrechnung-schematron.zip"
|
|
125
|
+
mkdir -p "$XR_DIR"
|
|
126
|
+
unzip -qo "$TMP_DIR/xrechnung-schematron.zip" -d "$XR_DIR"
|
|
127
|
+
else
|
|
128
|
+
echo " XRechnung Schematron already present"
|
|
129
|
+
fi
|
|
130
|
+
echo " OK"
|
|
131
|
+
|
|
132
|
+
# --- XRechnung Testsuite ---
|
|
133
|
+
|
|
134
|
+
echo ""
|
|
135
|
+
echo "==> Downloading XRechnung test suite..."
|
|
136
|
+
if [ ! -d "$VENDOR_DIR/testsuite" ]; then
|
|
137
|
+
git clone --depth 1 \
|
|
138
|
+
https://github.com/itplr-kosit/xrechnung-testsuite.git \
|
|
139
|
+
"$VENDOR_DIR/testsuite"
|
|
140
|
+
else
|
|
141
|
+
cd "$VENDOR_DIR/testsuite" && git pull --ff-only
|
|
142
|
+
fi
|
|
143
|
+
echo " OK"
|
|
144
|
+
|
|
145
|
+
# --- ZUGFeRD PDF artifacts ---
|
|
146
|
+
|
|
147
|
+
echo ""
|
|
148
|
+
echo "==> Downloading ZUGFeRD PDF artifacts..."
|
|
149
|
+
ZUGFERD_DIR="$VENDOR_DIR/zugferd"
|
|
150
|
+
mkdir -p "$ZUGFERD_DIR"
|
|
151
|
+
|
|
152
|
+
GS_REF="master"
|
|
153
|
+
GS_RAW="https://raw.githubusercontent.com/ArtifexSoftware/ghostpdl/$GS_REF"
|
|
154
|
+
|
|
155
|
+
if [ ! -f "$ZUGFERD_DIR/zugferd.ps" ]; then
|
|
156
|
+
echo " Downloading zugferd.ps..."
|
|
157
|
+
curl -fsSL "$GS_RAW/lib/zugferd.ps" -o "$ZUGFERD_DIR/zugferd.ps"
|
|
158
|
+
else
|
|
159
|
+
echo " zugferd.ps already present"
|
|
160
|
+
fi
|
|
161
|
+
|
|
162
|
+
if [ ! -f "$ZUGFERD_DIR/default_rgb.icc" ]; then
|
|
163
|
+
echo " Downloading default_rgb.icc..."
|
|
164
|
+
curl -fsSL "$GS_RAW/iccprofiles/default_rgb.icc" -o "$ZUGFERD_DIR/default_rgb.icc"
|
|
165
|
+
else
|
|
166
|
+
echo " default_rgb.icc already present"
|
|
167
|
+
fi
|
|
168
|
+
echo " OK"
|
|
169
|
+
|
|
170
|
+
echo ""
|
|
171
|
+
echo "All artifacts ready in: $VENDOR_DIR"
|
|
172
|
+
echo ""
|
|
173
|
+
echo "Optional dependencies:"
|
|
174
|
+
echo " - Java (for Schematron validation with Saxon)"
|
|
175
|
+
echo " - Ghostscript (for PDF/A-3 embedding)"
|
|
176
|
+
echo " - Docker (for veraPDF / Mustangproject validation)"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zugpferd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Zeitler
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-02-
|
|
11
|
+
date: 2026-02-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: nokogiri
|
|
@@ -75,6 +75,7 @@ executables: []
|
|
|
75
75
|
extensions: []
|
|
76
76
|
extra_rdoc_files: []
|
|
77
77
|
files:
|
|
78
|
+
- bin/setup-schemas
|
|
78
79
|
- lib/zugpferd.rb
|
|
79
80
|
- lib/zugpferd/cii/mapping.rb
|
|
80
81
|
- lib/zugpferd/cii/reader.rb
|