Skip to content

Commit

Permalink
Consolidate sourceFolder entries for same contentRoot
Browse files Browse the repository at this point in the history
  • Loading branch information
lefou committed Aug 21, 2023
1 parent 53cebcc commit a69d9bd
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 53 deletions.
61 changes: 42 additions & 19 deletions idea/src/mill/idea/GenIdeaImpl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -801,7 +801,21 @@ case class GenIdeaImpl(
isTest: Boolean,
facets: Seq[GenIdeaModule.JavaFacet]
): Elem = {
val genSources = generatedSourcePaths.toSeq.distinct.sorted.partition(_.startsWith(basePath))
val normSources = normalSourcePaths.iterator.toSeq.sorted.partition(_.startsWith(basePath))
val resources = resourcePaths.iterator.toSeq.sorted.partition(_.startsWith(basePath))

def relUrl(path: os.Path): String = "file://$MODULE_DIR$/" + relify(path)
def genSourceFolder(path: os.Path): Elem = {
<sourceFolder url={relUrl(path)} isTestSource={isTest.toString} generated="true"/>
}
def sourceFolder(path: os.Path): Elem = {
<sourceFolder url={relUrl(path)} isTestSource={isTest.toString}/>
}
def resourcesFolder(path: os.Path): Elem = {
val resourceType = if (isTest) "java-test-resource" else "java-resource"
<sourceFolder url={relUrl(path)} type={resourceType} />
}

<module type="JAVA_MODULE" version={"" + ideaConfigVersion}>
<component name="NewModuleRootManager">
Expand All @@ -814,39 +828,47 @@ case class GenIdeaImpl(
}
<exclude-output />
{
for (generatedSourcePath <- generatedSourcePaths.toSeq.distinct.sorted) yield {
val rel = relify(generatedSourcePath)
<content url={"file://$MODULE_DIR$/" + rel}>
<sourceFolder url={"file://$MODULE_DIR$/" + rel} isTestSource={
isTest.toString
} generated="true" />
</content>
for (generatedSourcePath <- genSources._2) yield {
<content url={relUrl(generatedSourcePath)}>
{genSourceFolder(generatedSourcePath)}
</content>
}
}

{
// keep the "real" base path as last content, to ensure, Idea picks it up as "main" module dir
for (normalSourcePath <- normalSourcePaths.iterator.toSeq.sorted) yield {
val rel = relify(normalSourcePath)
<content url={"file://$MODULE_DIR$/" + rel}>
<sourceFolder url={"file://$MODULE_DIR$/" + rel} isTestSource={isTest.toString} />
</content>
for (normalSourcePath <- normSources._2) yield {
<content url={relUrl(normalSourcePath)}>
{sourceFolder(normalSourcePath)}
</content>
}
}
{
val resourceType = if (isTest) "java-test-resource" else "java-resource"
for (resourcePath <- resourcePaths.iterator.toSeq.sorted) yield {
val rel = relify(resourcePath)
<content url={"file://$MODULE_DIR$/" + rel}>
<sourceFolder url={"file://$MODULE_DIR$/" + rel} type={resourceType} />
</content>
for (resourcePath <- resources._2) yield {
<content url={relUrl(resourcePath)}>
{resourcesFolder(resourcePath)}
</content>
}
}
{
// the (potentially empty) content root to denote where a module lives
// this is to avoid some strange layout issues
// see details at: https://github.com/com-lihaoyi/mill/pull/2638#issuecomment-1685229512
<content url={relUrl(basePath)}>
{
for (generatedSourcePath <- genSources._1) yield {
genSourceFolder(generatedSourcePath)
}
}
{
for (normalSourcePath <- normSources._1) yield {
sourceFolder(normalSourcePath)
}
}
{
for (resourcePath <- resources._1) yield {
resourcesFolder(resourcePath)
}
}
</content>
}
<orderEntry type="inheritedJdk" />
Expand Down Expand Up @@ -886,6 +908,7 @@ case class GenIdeaImpl(
}
</module>
}

def scalaCompilerTemplate(
settings: Map[(Agg[os.Path], Seq[String]), Seq[JavaModule]]
) = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@
<content url="file://$MODULE_DIR$/../../out/HelloWorld/generatedSources.dest/classes">
<sourceFolder url="file://$MODULE_DIR$/../../out/HelloWorld/generatedSources.dest/classes" isTestSource="false" generated="true"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/src">
<content url="file://$MODULE_DIR$/../../HelloWorld">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/src" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/resources">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/resources" type="java-resource"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld"> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="library" name="scala-library-2.13.6.jar" level="project"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/../../out/HelloWorld/subScala3/ideaCompileOutput.dest/classes"/>
<exclude-output/>
<content url="file://$MODULE_DIR$/../../HelloWorld/subScala3/src">
<content url="file://$MODULE_DIR$/../../HelloWorld/subScala3">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/subScala3/src" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/subScala3/resources">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/subScala3/resources" type="java-resource"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/subScala3"> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="library" name="scala-library-2.13.6.jar" level="project"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
<component name="NewModuleRootManager">
<output-test url="file://$MODULE_DIR$/../../out/HelloWorld/test/ideaCompileOutput.dest/classes"/>
<exclude-output/>
<content url="file://$MODULE_DIR$/../../HelloWorld/test/src">
<content url="file://$MODULE_DIR$/../../HelloWorld/test">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/test/src" isTestSource="true"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/test/resources">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/test/resources" type="java-test-resource"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/test"> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="module" module-name="helloworld" exported=""/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,12 @@
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/../../out/mill-build/ideaCompileOutput.dest/classes"/>
<exclude-output/>
<content url="file://$MODULE_DIR$/../../out/mill-build/generateScriptSources.dest">
<content url="file://$MODULE_DIR$/../..">
<sourceFolder url="file://$MODULE_DIR$/../../out/mill-build/generateScriptSources.dest" isTestSource="false" generated="true"/>
</content>
<content url="file://$MODULE_DIR$/../../build.sc">
<sourceFolder url="file://$MODULE_DIR$/../../build.sc" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../../mill-build/src">
<sourceFolder url="file://$MODULE_DIR$/../../mill-build/src" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../../mill-build/resources">
<sourceFolder url="file://$MODULE_DIR$/../../mill-build/resources" type="java-resource"/>
</content>
<content url="file://$MODULE_DIR$/../.."> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<!-- IGNORE -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
<content url="file://$MODULE_DIR$/../../out/mill-build/mill-build/generateScriptSources.dest">
<sourceFolder url="file://$MODULE_DIR$/../../out/mill-build/mill-build/generateScriptSources.dest" isTestSource="false" generated="true"/>
</content>
<content url="file://$MODULE_DIR$/../../mill-build/build.sc">
<content url="file://$MODULE_DIR$/../../mill-build">
<sourceFolder url="file://$MODULE_DIR$/../../mill-build/build.sc" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../../mill-build"> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<!-- IGNORE -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/../../out/HelloWorld/ideaCompileOutput.dest/classes"/>
<exclude-output/>
<content url="file://$MODULE_DIR$/../../HelloWorld/src">
<content url="file://$MODULE_DIR$/../../HelloWorld">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/src" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/resources">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/resources" type="java-resource"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld"> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="library" name="scala-library-2.12.5.jar" level="project"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
<component name="NewModuleRootManager">
<output-test url="file://$MODULE_DIR$/../../out/HelloWorld/test/ideaCompileOutput.dest/classes"/>
<exclude-output/>
<content url="file://$MODULE_DIR$/../../HelloWorld/test/src">
<content url="file://$MODULE_DIR$/../../HelloWorld/test">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/test/src" isTestSource="true"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/test/resources">
<sourceFolder url="file://$MODULE_DIR$/../../HelloWorld/test/resources" type="java-test-resource"/>
</content>
<content url="file://$MODULE_DIR$/../../HelloWorld/test"> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="module" module-name="helloworld" exported=""/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/../../out/mill-build/ideaCompileOutput.dest/classes"/>
<exclude-output/>
<content url="file://$MODULE_DIR$/../../out/mill-build/generateScriptSources.dest">
<content url="file://$MODULE_DIR$/../..">
<sourceFolder url="file://$MODULE_DIR$/../../out/mill-build/generateScriptSources.dest" isTestSource="false" generated="true"/>
</content>
<content url="file://$MODULE_DIR$/../../build.sc">
<sourceFolder url="file://$MODULE_DIR$/../../build.sc" isTestSource="false"/>
</content>
<content url="file://$MODULE_DIR$/../.."> </content>
<orderEntry type="inheritedJdk"/>
<orderEntry type="sourceFolder" forTests="false"/>
<!-- IGNORE -->
Expand Down

0 comments on commit a69d9bd

Please sign in to comment.