Seems very reasonable. I've created DAFFODIL-2335 [1] to track this issue. Also, if anyone is interested in getting into Daffodil development, taking on this ticket would be a good option. All the logic is in a single file and it should just require modifying numbers in a handful of places.
[1] https://issues.apache.org/jira/browse/DAFFODIL-2335 On 5/1/20 8:33 AM, Beckerle, Mike wrote: > Seems like it would be useful for various error situations to exit with > different non-zero error codes rather than scripts having to scrape the error > message output to determine why. I'd suggest > > 1 - parse failure or unparse failure > 2 - parse success, unparse success - but validation failure - basically > secondary action failed > 3 - schema compilation failed (SDE before runtime) either when parse/unparse, > or > save-parser > 4 - internal error (e.g., daffodil bug caused abort) > > > > -------------------------------------------------------------------------------- > *From:* Steve Lawrence <slawre...@apache.org> > *Sent:* Friday, May 1, 2020 8:07 AM > *To:* users@daffodil.apache.org <users@daffodil.apache.org> > *Subject:* Re: Can Daffodil do just validation (not parse to XML/JSON)? > Good to know the right way to do it. > > Note that a non-zero error code doesn't necessarily mean validation > failed. It just means that something went wrong. The same error code is > returned if the parse fails, or if you provide the wrong arguments, or > if you run out of memory, or there's a bug in Daffodil, etc. > > On 5/1/20 7:47 AM, Costello, Roger L. wrote: >> The bat file wasn't quite right - it printed "Succeeded with no validation >> errors" even when there were errors. Here's the correct way to do it: >> --------------------------------------------- >> @ECHO OFF >> >> call echo. >> call echo validate that instance.txt is a valid instance of the data format >> call ../../../dfdl/bin/daffodil.bat --version >> call ../../../dfdl/bin/daffodil.bat parse -s data-format.dfdl.xsd >> --validate=on -I null instance.txt >> >> if %errorlevel% == 0 ( >> echo Validation Succeeded >> ) else ( >> echo Validation Failed >> ) >> --------------------------------------------- >> >> /Roger >> >> -----Original Message----- >> From: Costello, Roger L. <coste...@mitre.org> >> Sent: Wednesday, April 29, 2020 2:20 PM >> To: users@daffodil.apache.org >> Subject: Re: Can Daffodil do just validation (not parse to XML/JSON)? >> >> Thank you Steve! That works great. >> >> Here is my validate.bat file (for those interested): >> --------------------------------------------- >> @ECHO OFF >> >> call echo. >> call echo validate that instance.txt is a valid instance of the data format >> call ../../../dfdl/bin/daffodil.bat --version >> call ../../../dfdl/bin/daffodil.bat parse -s data-format.dfdl.xsd >> --validate=on -I null instance.txt >> >> if errorlevel 0 echo Succeeded with no validation errors 1>&2 >> --------------------------------------------- >> >> /Roger >> >> -----Original Message----- >> From: Steve Lawrence <slawre...@apache.org> >> Sent: Wednesday, April 29, 2020 2:05 PM >> To: users@daffodil.apache.org >> Subject: [EXT] Re: Can Daffodil do just validation (not parse to XML/JSON)? >> >> Daffodil currently only outputs anything if there are problems (e.g. >> parse fails, validation error found). Silence means success. >> >> Daffodil does change the exit code depending on success/failure. Zero >> means success, 1 means failure. >> >> So if you want a success message, you can check the return code and >> print a message when it's zero. I'm not a Windows person, but I /think/ >> adding this to the end of the bat file should work: >> >> if errorlevel 0 echo Succeeded with no validation errors 1>&2 >> >> >> >> On 4/29/20 1:54 PM, Costello, Roger L. wrote: >>> Steve wrote: >>> >>>> This causes no infoset to be output >>>> when the parse completes. >>> >>> Eek! Deafening silence when the input conforms to the DFDL schema. Is there >>> a way for Daffodil to generate a "valid" message when the input conforms to >>> the DFDL schema? If not, perhaps it could be generated by the Windows bat >>> file that I am using to run Daffodil; anyone know how to do that? >>> >>> /Roger >>> >>> -----Original Message----- >>> From: Steve Lawrence <slawre...@apache.org> >>> Sent: Monday, April 27, 2020 9:23 AM >>> To: users@daffodil.apache.org >>> Subject: [EXT] Re: Can Daffodil do just validation (not parse to XML/JSON)? >>> >>> Sort of. Daffodil will always create an internal infoset, which is >>> necessary for all the parsing and validation logic. >>> >>> And Daffodil will always follow the codepath to output that infoset when >>> the parse completes. However, in addition to outputting to XML or JSON >>> we have a special InfosetOutputter that doesn't actually output >>> anything, called the NullInfosetOutputter. To use this with the CLI, you >>> can add "-I null" to your arguments, e.g. >>> >>> daffodil parse -s foo.dfdl.xsd --validate=on -I null inputData.bin >>> >>> This causes no infoset to be output when the parse completes. If there >>> were validation errors, they will be printed to stderr and the exit code >>> will be 1. >>> >>> On 4/27/20 9:07 AM, Costello, Roger L. wrote: >>>> Hi Folks, >>>> >>>> So, a standards organization created a description of a data format. They >>>> expressed that description using DFDL. >>>> >>>> Then, I created an instance of the data format. Now I'd like to know if my >>>> instance is valid, i.e., does it conform to the DFDL description that the >>>> standards organization created. I'm not interested in outputting an XML or >>>> JSON representation of the instance. I simply want to know if my instance >>>> is valid. I want the output to be either > yes it's valid, or no it's not valid. (Analogously, an XML Schema validator > can > output a detailed infoset or it can output simply valid/invalid) Can Daffodil > do > this? >>>> >>>> /Roger >>>> >>> >> >