77#include < sourcemeta/core/schemaconfig.h>
88
99#include < cassert> // assert
10+ #include < cstdlib> // EXIT_FAILURE
1011#include < filesystem> // std::filesystem
1112#include < functional> // std::function
13+ #include < iostream> // std::cout, std::cerr
1214#include < optional> // std::optional
1315#include < stdexcept> // std::runtime_error
1416#include < string> // std::string
@@ -163,12 +165,12 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
163165 << " " << error.example () << " \n " ;
164166 return EXIT_FAILURE ;
165167 } catch (const sourcemeta::jsonschema::NotSchemaError &error) {
166- std::cerr << " error: " << error.what () << " \n "
168+ std::cerr << " error: " << error.what () << " \n at file path "
167169 << sourcemeta::core::weakly_canonical (error.path ()).string ()
168170 << " \n " ;
169171 return EXIT_FAILURE ;
170172 } catch (const sourcemeta::jsonschema::YAMLInputError &error) {
171- std::cerr << error.what () << " \n "
173+ std::cerr << error.what () << " \n at file path "
172174 << sourcemeta::core::weakly_canonical (error.path ()).string ()
173175 << " \n " ;
174176 return EXIT_FAILURE ;
@@ -177,14 +179,14 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
177179 return EXIT_FAILURE ;
178180 } catch (const sourcemeta::jsonschema::InvalidLintRuleError &error) {
179181 std::cerr << " error: " << error.what () << " \n " ;
180- std::cerr << " " << error.rule () << " \n " ;
182+ std::cerr << " at rule " << error.rule () << " \n " ;
181183 return EXIT_FAILURE ;
182184 } catch (const sourcemeta::jsonschema::LintAutoFixError &error) {
183185 std::cerr << " error: " << error.what () << " \n " ;
184- std::cerr << " at "
186+ std::cerr << " at file path "
185187 << sourcemeta::core::weakly_canonical (error.path ()).string ()
186188 << " \n " ;
187- std::cerr << " at schema location \" "
189+ std::cerr << " at location \" "
188190 << sourcemeta::core::to_string (error.location ()) << " \"\n\n " ;
189191 std::cerr << " This is an unexpected error, as making the auto-fix "
190192 " functionality work in all\n " ;
@@ -203,7 +205,7 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
203205 std::cerr << " Use '--help' for usage information\n " ;
204206 return EXIT_FAILURE ;
205207 } catch (const sourcemeta::jsonschema::TestError &error) {
206- std::cout << " \n error : " << error.what () << " \n " ;
208+ std::cout << " error : " << error.what () << " \n " ;
207209 if (error.test_number ().has_value ()) {
208210 std::cout << " at test case #" << error.test_number ().value () << " \n " ;
209211 }
@@ -213,34 +215,37 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
213215 " docs/test.markdown\n " ;
214216 return EXIT_FAILURE ;
215217 } catch (const sourcemeta::core::SchemaReferenceError &error) {
216- std::cerr << " error: " << error.what () << " \n " << error.id ()
217- << " \n at schema location \" " ;
218+ std::cerr << " error: " << error.what () << " \n at identifier " << error.id ()
219+ << " \n at location \" " ;
218220 sourcemeta::core::stringify (error.location (), std::cerr);
219221 std::cerr << " \"\n " ;
220222 return EXIT_FAILURE ;
221223 } catch (const sourcemeta::jsonschema::FileError<
222224 sourcemeta::core::SchemaConfigParseError> &error) {
223- std::cerr << " error: " << error.what () << " \n at "
225+ std::cerr << " error: " << error.what () << " \n at file path "
224226 << sourcemeta::core::weakly_canonical (error.path ()).string ()
225227 << " \n " ;
226228 std::cerr << " at location \" "
227229 << sourcemeta::core::to_string (error.location ()) << " \"\n " ;
228230 return EXIT_FAILURE ;
229231 } catch (const sourcemeta::jsonschema::FileError<
230232 sourcemeta::core::SchemaRelativeMetaschemaResolutionError> &error) {
231- std::cerr << " error: " << error.what () << " \n uri " << error.id () << " \n " ;
232- std::cerr << " at "
233+ std::cerr << " error: " << error.what () << " \n at identifier " << error.id ()
234+ << " \n " ;
235+ std::cerr << " at file path "
233236 << sourcemeta::core::weakly_canonical (error.path ()).string ()
234237 << " \n " ;
235238 return EXIT_FAILURE ;
236239 } catch (
237240 const sourcemeta::core::SchemaRelativeMetaschemaResolutionError &error) {
238- std::cerr << " error: " << error.what () << " \n " << error.id () << " \n " ;
241+ std::cerr << " error: " << error.what () << " \n at identifier " << error.id ()
242+ << " \n " ;
239243 return EXIT_FAILURE ;
240244 } catch (const sourcemeta::jsonschema::FileError<
241245 sourcemeta::core::SchemaResolutionError> &error) {
242- std::cerr << " error: " << error.what () << " \n uri " << error.id () << " \n " ;
243- std::cerr << " at "
246+ std::cerr << " error: " << error.what () << " \n at identifier " << error.id ()
247+ << " \n " ;
248+ std::cerr << " at file path "
244249 << sourcemeta::core::weakly_canonical (error.path ()).string ()
245250 << " \n " ;
246251
@@ -253,7 +258,8 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
253258
254259 return EXIT_FAILURE ;
255260 } catch (const sourcemeta::core::SchemaResolutionError &error) {
256- std::cerr << " error: " << error.what () << " \n " << error.id () << " \n " ;
261+ std::cerr << " error: " << error.what () << " \n at identifier " << error.id ()
262+ << " \n " ;
257263
258264 if (error.id ().starts_with (" file://" )) {
259265 std::cerr << " \n This is likely because the file does not exist\n " ;
@@ -272,7 +278,7 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
272278 } catch (const sourcemeta::jsonschema::FileError<
273279 sourcemeta::core::SchemaUnknownBaseDialectError> &error) {
274280 std::cerr << " error: " << error.what () << " \n " ;
275- std::cerr << " at "
281+ std::cerr << " at file path "
276282 << sourcemeta::core::weakly_canonical (error.path ()).string ()
277283 << " \n " ;
278284 std::cerr << " \n Are you sure the input is a valid JSON Schema and its "
@@ -294,41 +300,44 @@ inline auto try_catch(const std::function<int()> &callback) noexcept -> int {
294300 } catch (
295301 const sourcemeta::jsonschema::FileError<sourcemeta::core::SchemaError>
296302 &error) {
297- std::cerr << " error: " << error.what () << " \n at "
303+ std::cerr << " error: " << error.what () << " \n at file path "
298304 << sourcemeta::core::weakly_canonical (error.path ()).string ()
299305 << " \n " ;
300306 return EXIT_FAILURE ;
301307 } catch (const sourcemeta::core::SchemaError &error) {
302308 std::cerr << " error: " << error.what () << " \n " ;
303309 return EXIT_FAILURE ;
304310 } catch (const sourcemeta::core::SchemaVocabularyError &error) {
305- std::cerr << " error: " << error.what () << " \n " << error.uri ()
311+ std::cerr << " error: " << error.what () << " \n at uri " << error.uri ()
306312 << " \n\n To request support for it, please open an issue "
307313 " at\n https://github.com/sourcemeta/jsonschema\n " ;
308314 return EXIT_FAILURE ;
309315 } catch (const sourcemeta::core::URIParseError &error) {
310- std::cerr << " error: " << error.what () << " at column " << error. column ()
311- << " \n " ;
316+ std::cerr << " error: " << error.what () << " \n " ;
317+ std::cerr << " at column " << error. column () << " \n " ;
312318 return EXIT_FAILURE ;
313319 } catch (const sourcemeta::core::JSONFileParseError &error) {
314- std::cerr << " error: " << error.what () << " at line " << error.line ()
315- << " and column " << error.column () << " \n "
320+ std::cerr << " error: " << error.what () << " \n " ;
321+ std::cerr << " at line " << error.line () << " \n " ;
322+ std::cerr << " at column " << error.column () << " \n " ;
323+ std::cerr << " at file path "
316324 << sourcemeta::core::weakly_canonical (error.path ()).string ()
317325 << " \n " ;
318326 return EXIT_FAILURE ;
319327 } catch (const sourcemeta::core::JSONParseError &error) {
320- std::cerr << " error: " << error.what () << " at line " << error.line ()
321- << " and column " << error.column () << " \n " ;
328+ std::cerr << " error: " << error.what () << " \n " ;
329+ std::cerr << " at line " << error.line () << " \n " ;
330+ std::cerr << " at column " << error.column () << " \n " ;
322331 return EXIT_FAILURE ;
323332 } catch (const std::filesystem::filesystem_error &error) {
324333 // See https://en.cppreference.com/w/cpp/error/errc
325334 if (error.code () == std::errc::no_such_file_or_directory) {
326- std::cerr << " error: " << error.code ().message () << " \n "
335+ std::cerr << " error: " << error.code ().message () << " \n at file path "
327336 << sourcemeta::core::weakly_canonical (error.path1 ()).string ()
328337 << " \n " ;
329338 } else if (error.code () == std::errc::is_a_directory) {
330339 std::cerr << " error: The input was supposed to be a file but it is a "
331- " directory\n "
340+ " directory\n at file path "
332341 << sourcemeta::core::weakly_canonical (error.path1 ()).string ()
333342 << " \n " ;
334343 } else {
0 commit comments