sageserpent-open / kineticMerge

Merge a heavily refactored codebase and stay sane.
MIT License
9 stars 1 forks source link

Release packaged executable. #15

Closed sageserpent-open closed 9 months ago

sageserpent-open commented 9 months ago

Following in from #1, this requires the supporting dependencies used by the packaged executable to be made available at Maven Central or wherever Coursier gets them from, and a release to be defined in GitHub that includes the packaged executable.

Some documentation as to how to download the executable and use it would be nice too. 😸

sageserpent-open commented 9 months ago

The Sonatype JIRA ticket https://issues.sonatype.org/browse/OSSRH-95530 has been completed. Now to try it out...

sageserpent-open commented 9 months ago

Got the libraries published to Sonatype, so far so good...

sageserpent-open commented 9 months ago

... next, how to get the packaged executable on to GitHub as a release ...

sageserpent-open commented 9 months ago

It seems to work - in fact it works so well it is masking a problem with the artifacts published to Sonatype.

What happens is that the Coursier bootstrap executable (made available in a GitHub release by manual upload) contains both the kinetic-merge_3 JAR and the supporting rabinfingerprint_3 JAR (which incidentally shouldn't have the _3 part - it is built from Java).

So it doesn't need these artifacts to be published to Sonatype, as long as all the other dependencies are available - which they obviously are as the SBT build can pull them in.

Now there is a case to be made for not bothering to publish to Sonatype, but it would be nice to allow others to call Kinetic Merge programmatically, which is what the automated tests already do.

If so, then the code in the Rabin fingerprinting support project should be either published too (which is not a good idea because it is a copy-and-paste from another public repository; I don't want to impersonate them, even if under the com.sageserpent organization), or fused into the kinetic-merge artifact as a slightly fatter JAR.

Need to think about this...

sageserpent-open commented 9 months ago

Also need to document the, ahem, installation process - this is currently a case of executing:

curl -LJO --verbose http://github.com/sageserpent-open/kineticMerge/releases/download/v<release version>/kinetic-merge

chmod ug+x kineticMerge
sageserpent-open commented 9 months ago

Oh, and there needs to be a .bat file for Windows too!

sageserpent-open commented 9 months ago

As of release 0.1.4 the Rabin fingerprinting dependency is shaded into the JAR for Kinetic Merge.

So any use of the Kinetic Merge JAR from Sonatype / Maven Central should resolve without referencing a non-published library.

sageserpent-open commented 9 months ago

Install procedure tested on a Linux machine with no local build of Kinetic Merge, confirmed to work properly.

All that is left is to burn in the release version into the executable...

sageserpent-open commented 9 months ago

The version is now reported.

As an aside, IntelliJ can no longer correctly import the SBT project due to all the trickery used to avoid generating a dependency on the Rabin Fingerprint project in the published POM, so it has to be told to build with SBT.

That needs fixing at some point. (Fixed in #16 )

sageserpent-open commented 9 months ago

Have done a couple of releases, so closing this as good.

sageserpent-open commented 9 months ago

Not so fast - for some reason the packageExecutable is run against the snapshot version even though this is done after the publish of the non-snapshot version to Sonatype, so the version reported by kinetic-merge --help is wrong.

sageserpent-open commented 9 months ago

As of release 0.1.7 / published libraries version 0.1.7 the executable now reports the correct version, so closing again.