zugpferd 0.3.0 → 0.3.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/setup-schemas +178 -0
  3. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 668190b295d1286b2f8efd2f2896054e9c102c48da549d70486ef13677d042ad
4
- data.tar.gz: '0274834d75a8c12690e178b5e075a8bed9792180b627c19a1fd3313534d9914c'
3
+ metadata.gz: a5f92588b928e3ddebb536ee082e58b47f25b078defb969d0407c9ad5f86ec2e
4
+ data.tar.gz: 8375975a159bc34c31a9dc7231dd64567faf31bec021c51311b4453e7dc7cbbb
5
5
  SHA512:
6
- metadata.gz: 74be6147cd6ef40e90a23548e0e15c0b65e7c5e402535c2575f1dc41926b66b981f7c1e555d297f006ae69988ff9470c4d8b2eb2e8a4c7c83aa8791cc8bde1f5
7
- data.tar.gz: 2cb11d5ef99e1d3341006fd37d2fa8e9ba3703fbebc7c642577f269aaa9aae3ddf666c2ed892a6ca5e92df17945d1d2b916b9b542c16f283b909ec862ddd8cdd
6
+ metadata.gz: a8a4faadffd2c53608959f6610f7aae35513eb262a885da430ac22cc248069c0ac9ed41828cd84e27b0f56f662c557a1310a4100cb08d1e3ff1732f7dc6049af
7
+ data.tar.gz: dfe0208222f0ef32c181ba27718b82a0d30474894c4c3fe1d16043fb059cfe7d3827f20ffc2f8d4cbec3dc4028c90369a50337e032906b8df7ccfeab21753576
data/bin/setup-schemas ADDED
@@ -0,0 +1,178 @@
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
+ CURL_UA="Mozilla/5.0"
10
+
11
+ # --- Saxon HE (for Schematron validation) ---
12
+
13
+ echo "==> Downloading Saxon HE..."
14
+ SAXON_DIR="$SCHEMAS_DIR/saxon"
15
+ mkdir -p "$SAXON_DIR"
16
+
17
+ SAXON_VERSION="12.5"
18
+ XMLRESOLVER_VERSION="5.2.2"
19
+ MAVEN="https://repo1.maven.org/maven2"
20
+
21
+ if [ ! -f "$SAXON_DIR/saxon-he-$SAXON_VERSION.jar" ]; then
22
+ echo " Downloading saxon-he-$SAXON_VERSION.jar..."
23
+ curl -fsSL -A "$CURL_UA" "$MAVEN/net/sf/saxon/Saxon-HE/$SAXON_VERSION/Saxon-HE-$SAXON_VERSION.jar" \
24
+ -o "$SAXON_DIR/saxon-he-$SAXON_VERSION.jar"
25
+ else
26
+ echo " saxon-he-$SAXON_VERSION.jar already present"
27
+ fi
28
+
29
+ if [ ! -f "$SAXON_DIR/xmlresolver-$XMLRESOLVER_VERSION.jar" ]; then
30
+ echo " Downloading xmlresolver-$XMLRESOLVER_VERSION.jar..."
31
+ curl -fsSL -A "$CURL_UA" "$MAVEN/org/xmlresolver/xmlresolver/$XMLRESOLVER_VERSION/xmlresolver-$XMLRESOLVER_VERSION.jar" \
32
+ -o "$SAXON_DIR/xmlresolver-$XMLRESOLVER_VERSION.jar"
33
+ else
34
+ echo " xmlresolver-$XMLRESOLVER_VERSION.jar already present"
35
+ fi
36
+ echo " OK"
37
+
38
+ # --- UBL 2.1 XSD ---
39
+
40
+ echo ""
41
+ echo "==> Downloading UBL 2.1 XSD schemas..."
42
+ UBL_DIR="$SCHEMAS_DIR/ubl"
43
+
44
+ if [ ! -d "$UBL_DIR/xsd/maindoc" ]; then
45
+ echo " Downloading UBL-2.1.zip..."
46
+ curl -fsSL -A "$CURL_UA" "http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.zip" \
47
+ -o "$TMP_DIR/UBL-2.1.zip"
48
+ mkdir -p "$UBL_DIR/xsd"
49
+ unzip -qo "$TMP_DIR/UBL-2.1.zip" "os-UBL-2.1/xsd/*" -d "$TMP_DIR"
50
+ cp -r "$TMP_DIR/os-UBL-2.1/xsd/"* "$UBL_DIR/xsd/"
51
+ else
52
+ echo " UBL XSD already present"
53
+ fi
54
+ echo " OK"
55
+
56
+ # --- CII D16B XSD ---
57
+
58
+ echo ""
59
+ echo "==> Downloading CII D16B XSD schemas..."
60
+ CII_DIR="$SCHEMAS_DIR/cii"
61
+
62
+ if [ ! -f "$CII_DIR/CrossIndustryInvoice_100pD16B.xsd" ]; then
63
+ echo " Downloading D16B SCRDM (Subset) CII..."
64
+ CII_URL="https://unece.org/fileadmin/DAM/cefact/xml_schemas/D16B_SCRDM__Subset__CII.zip"
65
+ curl -fsSL -A "$CURL_UA" "$CII_URL" -o "$TMP_DIR/cii-outer.zip" || {
66
+ echo " WARN: Could not download CII XSD from UN/CEFACT."
67
+ echo " Download manually from: $CII_URL"
68
+ echo " Extract the 'uncoupled' XSD files into $CII_DIR/"
69
+ }
70
+
71
+ if [ -f "$TMP_DIR/cii-outer.zip" ]; then
72
+ mkdir -p "$CII_DIR"
73
+ unzip -qo "$TMP_DIR/cii-outer.zip" -d "$TMP_DIR/cii-outer"
74
+ # The outer ZIP contains nested ZIPs — extract the uncoupled one
75
+ UNCOUPLED_ZIP=$(find "$TMP_DIR/cii-outer" -name "*uncoupled.zip" -type f | head -1)
76
+ if [ -n "$UNCOUPLED_ZIP" ]; then
77
+ unzip -qo "$UNCOUPLED_ZIP" -d "$CII_DIR"
78
+ else
79
+ echo " WARN: Could not find uncoupled ZIP inside CII archive"
80
+ fi
81
+ fi
82
+ else
83
+ echo " CII XSD already present"
84
+ fi
85
+ echo " OK"
86
+
87
+ # --- CEN Schematron EN16931 ---
88
+
89
+ echo ""
90
+ echo "==> Downloading CEN Schematron EN16931..."
91
+ CEN_VERSION="1.3.15"
92
+ CEN_BASE="https://github.com/ConnectingEurope/eInvoicing-EN16931/releases/download/validation-$CEN_VERSION"
93
+
94
+ CEN_UBL_DIR="$SCHEMAS_DIR/schematron/cen/ubl"
95
+ if [ ! -f "$CEN_UBL_DIR/xslt/EN16931-UBL-validation.xslt" ]; then
96
+ echo " Downloading en16931-ubl-$CEN_VERSION.zip..."
97
+ curl -fsSL -A "$CURL_UA" "$CEN_BASE/en16931-ubl-$CEN_VERSION.zip" -o "$TMP_DIR/cen-ubl.zip"
98
+ mkdir -p "$CEN_UBL_DIR"
99
+ unzip -qo "$TMP_DIR/cen-ubl.zip" -d "$CEN_UBL_DIR"
100
+ else
101
+ echo " CEN UBL Schematron already present"
102
+ fi
103
+
104
+ CEN_CII_DIR="$SCHEMAS_DIR/schematron/cen/cii"
105
+ if [ ! -f "$CEN_CII_DIR/xslt/EN16931-CII-validation.xslt" ]; then
106
+ echo " Downloading en16931-cii-$CEN_VERSION.zip..."
107
+ curl -fsSL -A "$CURL_UA" "$CEN_BASE/en16931-cii-$CEN_VERSION.zip" -o "$TMP_DIR/cen-cii.zip"
108
+ mkdir -p "$CEN_CII_DIR"
109
+ unzip -qo "$TMP_DIR/cen-cii.zip" -d "$CEN_CII_DIR"
110
+ else
111
+ echo " CEN CII Schematron already present"
112
+ fi
113
+ echo " OK"
114
+
115
+ # --- XRechnung Schematron ---
116
+
117
+ echo ""
118
+ echo "==> Downloading XRechnung Schematron..."
119
+ XRECHNUNG_SCHEMATRON_VERSION="2.5.0"
120
+ XRECHNUNG_SPEC_VERSION="3.0.2"
121
+ XR_DIR="$SCHEMAS_DIR/schematron/xrechnung"
122
+
123
+ if [ ! -f "$XR_DIR/schematron/ubl/XRechnung-UBL-validation.xsl" ]; then
124
+ echo " Downloading xrechnung-$XRECHNUNG_SPEC_VERSION-schematron-$XRECHNUNG_SCHEMATRON_VERSION.zip..."
125
+ curl -fsSL -A "$CURL_UA" "https://github.com/itplr-kosit/xrechnung-schematron/releases/download/release-$XRECHNUNG_SCHEMATRON_VERSION/xrechnung-$XRECHNUNG_SPEC_VERSION-schematron-$XRECHNUNG_SCHEMATRON_VERSION.zip" \
126
+ -o "$TMP_DIR/xrechnung-schematron.zip"
127
+ mkdir -p "$XR_DIR"
128
+ unzip -qo "$TMP_DIR/xrechnung-schematron.zip" -d "$XR_DIR"
129
+ else
130
+ echo " XRechnung Schematron already present"
131
+ fi
132
+ echo " OK"
133
+
134
+ # --- XRechnung Testsuite ---
135
+
136
+ echo ""
137
+ echo "==> Downloading XRechnung test suite..."
138
+ if [ ! -d "$VENDOR_DIR/testsuite" ]; then
139
+ git clone --depth 1 \
140
+ https://github.com/itplr-kosit/xrechnung-testsuite.git \
141
+ "$VENDOR_DIR/testsuite"
142
+ else
143
+ cd "$VENDOR_DIR/testsuite" && git pull --ff-only
144
+ fi
145
+ echo " OK"
146
+
147
+ # --- ZUGFeRD PDF artifacts ---
148
+
149
+ echo ""
150
+ echo "==> Downloading ZUGFeRD PDF artifacts..."
151
+ ZUGFERD_DIR="$VENDOR_DIR/zugferd"
152
+ mkdir -p "$ZUGFERD_DIR"
153
+
154
+ GS_REF="master"
155
+ GS_RAW="https://raw.githubusercontent.com/ArtifexSoftware/ghostpdl/$GS_REF"
156
+
157
+ if [ ! -f "$ZUGFERD_DIR/zugferd.ps" ]; then
158
+ echo " Downloading zugferd.ps..."
159
+ curl -fsSL -A "$CURL_UA" "$GS_RAW/lib/zugferd.ps" -o "$ZUGFERD_DIR/zugferd.ps"
160
+ else
161
+ echo " zugferd.ps already present"
162
+ fi
163
+
164
+ if [ ! -f "$ZUGFERD_DIR/default_rgb.icc" ]; then
165
+ echo " Downloading default_rgb.icc..."
166
+ curl -fsSL -A "$CURL_UA" "$GS_RAW/iccprofiles/default_rgb.icc" -o "$ZUGFERD_DIR/default_rgb.icc"
167
+ else
168
+ echo " default_rgb.icc already present"
169
+ fi
170
+ echo " OK"
171
+
172
+ echo ""
173
+ echo "All artifacts ready in: $VENDOR_DIR"
174
+ echo ""
175
+ echo "Optional dependencies:"
176
+ echo " - Java (for Schematron validation with Saxon)"
177
+ echo " - Ghostscript (for PDF/A-3 embedding)"
178
+ 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.0
4
+ version: 0.3.3
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-15 00:00:00.000000000 Z
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