asciidoctor / asciidoctorj

:coffee: Java bindings for Asciidoctor. Asciidoctor on the JVM!
http://asciidoctor.org
Apache License 2.0
617 stars 172 forks source link

Try to fix CLI #1248

Closed robertpanzer closed 6 months ago

robertpanzer commented 7 months ago

Thank you for opening a pull request and contributing to AsciidoctorJ!

Please take a bit of time giving some details about your pull request:

Kind of change

Description

What is the goal of this pull request?

As discovered in #1241 the AsciidoctorJ CLI works significantly different compared to Asciidoctor itself. For example source file names are currently passed with their absolute path by AsciidoctorJ CLI to the Asciidoctor Ruby runtime, while the Asciidoctor Ruby CLI passes relative file names. Also, AsciidoctorJ currently changes the current working directory to the baseDir atm, while Asciidoctor Ruby does not. This PR tries to align the behavior of AsciidoctorJ with the behavior of Asciidoctor Ruby.

How does it achieve that?

I changed the AsciidoctorJ code to mimic the same behavior as Asciidoctor Ruby as much as possible.

Are there any alternative ways to implement this?

Yes, we could try to reuse the implementation of Asciidoctor::Cli itself. We would likely need to create a subclass of Asciidoctor::Cli::Invoker where we pass our custom options, instead of the ones parsed in Asciidoctor::Cli::Options.

Are there any implications of this pull request? Anything a user must know?

The PR is pretty risky, I have made some tests, but I am not very confident that I was able to test all the different use cases. Would be great to get some feedback.

Issue

If this PR fixes an open issue, please add a line of the form:

Fixes #Issue

Release notes

Please add a corresponding entry to the file CHANGELOG.adoc

robertpanzer commented 6 months ago

Closing in favor of #1249