Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ckipp01/exists
A little tool to tell you if a maven artifact exists or to help you find out what does exist.
https://github.com/ckipp01/exists
jvm maven-repository scala scala-cli
Last synced: 11 days ago
JSON representation
A little tool to tell you if a maven artifact exists or to help you find out what does exist.
- Host: GitHub
- URL: https://github.com/ckipp01/exists
- Owner: ckipp01
- License: apache-2.0
- Created: 2021-12-31T19:07:44.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-28T12:09:55.000Z (almost 3 years ago)
- Last Synced: 2024-10-09T14:22:02.155Z (29 days ago)
- Topics: jvm, maven-repository, scala, scala-cli
- Language: Scala
- Homepage:
- Size: 50.8 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# exists
When you just want to know what exists.
## What does this do?
`exists` will tell you if a specific artifact exists or it will give you all the
possibilities that _might_ match what you're looking for. As a bonus, if you
looking for versions it'll also tell you if there's a missing
`maven-metadata.xml` file, what the latest version in the metadata file is, and
also show you if that version doesn't actually match what the latest version
_really_ is.This currently works with Maven Central, Sonatype releases, Sonatype snapshots,
and Sonatype Nexus repository OSS installations that you may be using.It really doesn't do too much.
```
Usage: exists [options] [org[:name[:version]]]When you just want to know what exists.
Either I'll find it or complete it.Options:
-h, --help shows what you're looking at
-c, --credentials credentials for the passed in withRepository
ex. username:password
-r, --repository specify a repository
ex. [central,sontaype:snapshots,sonatype:url]
```## Why'd you build this?
The short version was this was built out of annoyance and me going down a rabbit
hole to understand why [Coursier](https://github.com/coursier/coursier) wouldn't
complete snapshots or artifacts from my work's self-hosted Nexus.The longer version will have to wait until I better understand a few more things
and write them down for you to hopefully enjoy and also have a better
understanding of a few of the following:- What's the difference between release and snapshot repository listings?
- Why doesn't my self-hosted nexus behave just like maven central?
- Why is supposed to keep this `maven-metadata.xml` up to date anyways?
- Why is my `maven-metadata.xml` file way out of date on Sonatype releases?So many fun questions.
For now, feel free to use this in a very similar way you'd use `cs complete
`, but also having it work on sbt plugin published to maven central,
snapshots, and your self-hosted Sonatype nexus.O, also I got to play with [`scala-cli`](https://scala-cli.virtuslab.org/) for
this, which was a good learning experience.## Using it
To build it locally clone this repo and do a `scala-cli package . -o exists -f`.
Use it for snapshots
```
❯ ./exists -r sonatype:snapshots org.scalameta:metals_2.12:
Found up until: org.scalameta:metals_2.12
Latest version according to metadata: 0.10.9+49-60d74a51-SNAPSHOT
Last updated according to metadata: 2021-11-18T20:23:02
Exact match not found, so here are the 10 newest possiblities:
0.11.0+27-c77d9714-SNAPSHOT
0.11.0+25-7cc1bc13-SNAPSHOT
0.11.0+23-bacbde61-SNAPSHOT
0.11.0+21-8e662d9c-SNAPSHOT
0.11.0+19-d964693d-SNAPSHOT
0.11.0+17-69a43f63-SNAPSHOT
0.11.0+15-ea6ea86c-SNAPSHOT
0.11.0+13-b6814655-SNAPSHOT
0.11.0+11-5898e3b5-SNAPSHOT
0.11.0+10-41d3108e-SNAPSHOT
```Use it for sbt plugins
```
❯ ./exists org.wartremover:sbt-wartremover_2.12_1.0:
Found up until: org.wartremover:sbt-wartremover_2.12_1.0
No mavemen-metadata.xml file was found for this artifact
Exact match not found, so here are the 10 newest possiblities:
2.4.9
2.4.8
2.4.7
2.4.6
2.4.5
2.4.4
2.4.3
2.4.2
2.4.16
2.4.15
```Use it for your custom nexus
```sh
❯ ./exists -r $NEXUS_URL -c $NEXUS_USERNAME:$NEXUS_PASSWORD my.org:
Found up until: my.org
Exact match not found, so here are the 3 newest possiblities:
app1_2.13
app1_3
app2_3
```## Don't
Use this in a serious capacity or as a library. Use Coursier instead. Nothing is
being cached here, so you're making a whole bunch of requests since under the
hood we are scraping html/xml. Just use Coursier for anything serious.