Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,15 @@ If your artifact does not have any binary version it is considered a Java artifa
Yet some Java artifact are closely related to Scala.
In that case you can force its indexing by updating the [non-standard.json](https://github.com/scalacenter/scaladex-contrib/blob/master/non-standard.json) file in the [scaladex-contrib](https://github.com/scalacenter/scaladex-contrib) repository.

At the moment we don't support full Scala binary versions, that are often used in Scala compiler plugins.
Scaladex supports various binary version formats:
- Standard Scala versions: `_2.13`, `_3`, `_2.12`
- Scala.js versions: `_sjs1_2.13`, `_sjs1_3`
- Scala Native versions: `_native0.4_2.13`
- SBT plugin versions: `_2.13_1.0`, `_2.12_0.13`
- Mill plugin versions: `_mill0.9_2.13`

Compiler plugins are currently being added to Scaladex. They typically use full Scala binary versions (e.g., `_2.13.10`).
If you have a compiler plugin that needs to be indexed, please open an issue in the [scaladex-contrib](https://github.com/scalacenter/scaladex-contrib) repository.

#### Does the pom file contain the `scm` attribute and does it points to a public Github repository?

Expand Down Expand Up @@ -88,7 +96,7 @@ for Scala JS or Scala Native, add a `targetType=...` query-string parameter:
For more information read the [shields.io API](http://shields.io/)

## 🚀Google Summer of Code (GSoC)
![Google Summer of Code (GSoC)](doc/img/gsoc-scaladex.png)
![Google Summer of Code (GSoC)](doc/assets/Scaladex.png)



Expand All @@ -99,6 +107,7 @@ This project is participating in **Google Summer of Code (GSoC) 2025**! If you'r
### 📌 GSoC Resources

👉 **Scala Center GSoC Ideas**: [https://github.com/scalacenter/GoogleSummerOfCode](https://github.com/scalacenter/GoogleSummerOfCode)

📚 **Explore Past GSoC Projects with Scala Center**: [https://www.gsocorganizations.dev/organization/scala-center/](https://www.gsocorganizations.dev/organization/scala-center/)

---
Expand All @@ -121,6 +130,7 @@ This project is participating in **Google Summer of Code (GSoC) 2025**! If you'r
* [Adrien Piquerez](https://github.com/adpi2)
* [Kannupriya Kalra](https://github.com/kannupriyakalra)
* **Proposal**: [GSoC 2024 Proposal](https://github.com/user-attachments/files/16697199/proposal.pdf)
* **Announcement**: [Official Acceptance Post](https://www.linkedin.com/posts/skingle_scala-scalacenter-gsoc2024-activity-7192214506901504000-HBGc) | [Midterm evaluation post](https://www.linkedin.com/posts/skingle_scala-gsoc-gsoc2024-activity-7218525241944215552-1tpn?utm_source=share&utm_medium=member_android&rcm=ACoAAFp2nsYBNBsrS0fo8jK1QyeRCdtOBCWgUuQ) | [Final evalution post](https://www.linkedin.com/posts/skingle_certificate-activity-7236760686373007362-R1NW?utm_source=share&utm_medium=member_android&rcm=ACoAAFp2nsYBNBsrS0fo8jK1QyeRCdtOBCWgUuQ)
* **Blog**: 📌 [How I Started My GSoC Journey](https://www.linkedin.com/pulse/how-i-started-my-gsoc24-journey-scala-center-siddharth-ingle-sdf5e/)
* **Work Log**: 📌 [GitHub Project Board](https://github.com/users/skingle/projects/2)

Expand Down Expand Up @@ -150,8 +160,9 @@ This project is participating in **Google Summer of Code (GSoC) 2025**! If you'r
* **Mentors**:
* [Adrien Piquerez](https://github.com/adpi2)
* [Kannupriya Kalra](https://github.com/kannupriyakalra)
* **Announcement**: [Official Acceptance Post](https://www.linkedin.com/posts/vidisha-gawas-146348364_gsoc-gsoc2025-scalacenter-activity-7326793814331871232-0hGz?utm_source=share&utm_medium=member_android&rcm=ACoAAFp2nsYBNBsrS0fo8jK1QyeRCdtOBCWgUuQ) | [Midterm evaluation post](https://www.linkedin.com/posts/vidisha-gawas-146348364_gsoc2025-scalacenter-scaladex-activity-7352311549400662016-zvpl?utm_source=share&utm_medium=member_android&rcm=ACoAAFp2nsYBNBsrS0fo8jK1QyeRCdtOBCWgUuQ)
* **Blog**: [Building with GSoC](https://opensourcegirl.hashnode.dev/)
* **Work Log**:[https://github.com/users/vidishagawas121/projects/2](https://github.com/users/vidishagawas121/projects/2)
* **Work Log**:[GSoC Progress Tracker](https://github.com/users/vidishagawas121/projects/2)
* **Technologies**: Scala, SBT, Play Framework, Elasticsearch, GitHub Actions, JavaScript, HTML/CSS
* **Topics**: Compilers, Open Source, Plugin Systems

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,24 @@ import scaladex.core.util.Parsers
import fastparse.*
import fastparse.NoWhitespace.*

/** Represents a binary version of a Scala artifact.
*
* The binary version consists of two parts:
* 1. platform: The runtime platform (JVM, Scala.js, Scala Native, SBT plugin, Mill plugin)
* 2. language: The programming language (Java, Scala with version)
*
* Examples:
* - JVM Scala 2.13: BinaryVersion(Jvm, Scala(Version(2, 13, 0)))
* - Scala.js 1.0 with Scala 2.13: BinaryVersion(ScalaJs(Version(1, 0, 0)), Scala(Version(2, 13, 0)))
* - SBT plugin 1.0 with Scala 2.13: BinaryVersion(SbtPlugin(Version(1, 0, 0)), Scala(Version(2, 13, 0)))
*
* TODO: Add support for compiler plugins which use full Scala versions (e.g., 2.13.10)
* This will require:
* 1. Extending the Platform type to include CompilerPlugin
* 2. Updating the Parser to handle full version numbers
* 3. Modifying the artifact indexing logic to recognize compiler plugin artifacts
*/

final case class BinaryVersion(platform: Platform, language: Language):
def isValid: Boolean = platform.isValid && language.isValid

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,19 @@ class BinaryVersionTests extends AnyFunSpec with Matchers with OptionValues with
expected.value shouldBe input
}
}
it("should handle compiler plugin versions (TODO)") {
// This test will be implemented when compiler plugin support is added
// Example test cases:
// val cases = Table(
// ("input", "target"),
// ("_2.13.10", BinaryVersion(CompilerPlugin, Scala(Version(2, 13, 10)))),
// ("_3.3.1", BinaryVersion(CompilerPlugin, Scala(Version(3, 3, 1))))
// )
//
// forAll(cases) { (input, expected) =>
// BinaryVersion.parse(input) should contain(expected)
// expected.value shouldBe input
// }
succeed
}
end BinaryVersionTests
Loading