From 354a3cffcd56914d24e5e39b8f89fcc59d1156e5 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 15 May 2024 10:04:34 +0200 Subject: [PATCH] Describe githubGenerateSnapshot in readme --- README.md | 26 +++++++++++++++++++ .../ch/epfl/scala/SubmitDependencyGraph.scala | 10 +++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1f326eb..6daa61f 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,32 @@ steps: ## Troubleshooting +### How to generate a snapshot locally? + +For troubleshooting, it can be convenient to generate a snapshot locally. + +To do so you need to install the `sbt-dependency-submission` plugin in your sbt project. + +```scala +// In project/plugins.sbt +addSbtPlugin("ch.epfl.scala" % "sbt-github-dependency-submission" % "3.0.0") +``` + +After reloading your build, you can run: +``` +sbt:example> githubGenerateSnapshot +... +[info] Dependency snapshot written to /tmp/dependency-snapshot-3080240838874963577.json +``` + +Or if you want to exclude some modules or configs: + +``` +sbt:example> githubGenerateSnapshot {"ignoredModules":["server_2.13"], "ignoredConfigs":["test"]} +... +[info] Dependency snapshot written to /tmp/dependency-snapshot-14803616116503623758.json +``` + ### Unexpected Status: 404 This error happens when the `Dependency Graph` feature is disabled. diff --git a/sbt-plugin/src/main/scala/ch/epfl/scala/SubmitDependencyGraph.scala b/sbt-plugin/src/main/scala/ch/epfl/scala/SubmitDependencyGraph.scala index f0f213f..64468f8 100644 --- a/sbt-plugin/src/main/scala/ch/epfl/scala/SubmitDependencyGraph.scala +++ b/sbt-plugin/src/main/scala/ch/epfl/scala/SubmitDependencyGraph.scala @@ -22,7 +22,7 @@ import sjsonnew.support.scalajson.unsafe.{Parser => JsonParser, _} object SubmitDependencyGraph { val Generate = "githubGenerateSnapshot" - private val GenerateUsage = s"""$Generate {"projects":[], "scalaVersions":[]}""" + private val GenerateUsage = s"""$Generate {"ignoredModules":[], "ignoredConfig":[]}""" private val GenerateDetail = "Generate the dependency graph of a set of projects and scala versions" private val GenerateInternal = s"${Generate}Internal" @@ -31,8 +31,6 @@ object SubmitDependencyGraph { val Submit = "githubSubmitSnapshot" private val SubmitDetail = "Submit the dependency graph to Github Dependency API." - def usage(command: String): String = s"""$command {"projects":[], "scalaVersions":[]}""" - val commands: Seq[Command] = Seq( Command(Generate, (GenerateUsage, GenerateDetail), GenerateDetail)(inputParser)(generate), Command.command(GenerateInternal, InternalOnly, InternalOnly)(generateInternal), @@ -43,8 +41,10 @@ object SubmitDependencyGraph { private def inputParser(state: State): Parser[DependencySnapshotInput] = Parsers.any.*.map { raw => - JsonParser - .parseFromString(raw.mkString) + val rawString = raw.mkString + if (rawString.isEmpty) DependencySnapshotInput(None, Vector.empty, Vector.empty) + else JsonParser + .parseFromString(rawString) .flatMap(Converter.fromJson[DependencySnapshotInput]) .get }.failOnException