Skip to content

Commit 3a8db17

Browse files
committed
Merge pull request #1 from codacy/tool-utils
Add tool utils
2 parents 8dc13c7 + ade25bd commit 3a8db17

File tree

3 files changed

+94
-1
lines changed

3 files changed

+94
-1
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name := """codacy-engine-scala-seed"""
22

33
organization := "com.codacy"
44

5-
version := "1.4.0"
5+
version := "1.5.0"
66

77
scalaVersion := "2.10.5"
88

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package codacy.dockerApi.utils
2+
3+
import java.io.File
4+
import java.nio.charset.StandardCharsets
5+
import java.nio.file.{Files, Path, Paths, StandardOpenOption}
6+
7+
object FileHelper {
8+
9+
def createFile(path: String, content: String): Path = {
10+
Files.write(
11+
Files.createFile(Paths.get(path)),
12+
content.getBytes(StandardCharsets.UTF_8),
13+
StandardOpenOption.CREATE
14+
)
15+
}
16+
17+
def createTmpFile(content: String, prefix: String = "config", suffix: String = ".conf"): Path = {
18+
Files.write(
19+
Files.createTempFile(prefix, suffix),
20+
content.getBytes(StandardCharsets.UTF_8),
21+
StandardOpenOption.CREATE
22+
)
23+
}
24+
25+
def stripPath(filename: Path, prefix: Path): String = {
26+
stripPath(filename.toString, prefix.toString)
27+
}
28+
29+
def stripPath(filename: String, prefix: String): String = {
30+
31+
val FilenameRegex = s""".*$prefix/(.*)""".r
32+
33+
filename match {
34+
case FilenameRegex(res) => res;
35+
case _ => filename
36+
}
37+
}
38+
39+
def listAllFiles(path: String): Seq[File] = {
40+
listAllFiles(Paths.get(path))
41+
}
42+
43+
def listAllFiles(path: Path): Seq[File] = {
44+
recursiveListFiles(path.toFile)
45+
}
46+
47+
private def recursiveListFiles(file: File): Seq[File] = {
48+
val these = file.listFiles
49+
these ++ these.filter(_.isDirectory).flatMap(recursiveListFiles)
50+
}
51+
52+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package codacy.dockerApi.utils
2+
3+
import codacy.dockerApi._
4+
5+
object ToolHelper {
6+
7+
def getPatternsToLint(conf: Option[Seq[PatternDef]])(implicit spec: Spec): Seq[PatternDef] = {
8+
conf.fold(getDefaultConfFromSpec(spec)) {
9+
configuration =>
10+
configuration.map(pattern => getMissingParametersFromSpec(pattern))
11+
}
12+
}
13+
14+
private def convertToParametersDefFromSpec(parametersSpec: Option[Set[ParameterSpec]]): Option[Set[ParameterDef]] = {
15+
parametersSpec.map(params => params.map(param => ParameterDef(param.name, param.default)))
16+
}
17+
18+
private def getDefaultConfFromSpec(spec: Spec): Seq[PatternDef] = {
19+
spec.patterns.toSeq.map(pattern => PatternDef(pattern.patternId, convertToParametersDefFromSpec(pattern.parameters)))
20+
}
21+
22+
23+
private def buildParameterDefFromSpec(parameterSpec: ParameterSpec): ParameterDef = {
24+
ParameterDef(parameterSpec.name, parameterSpec.default)
25+
}
26+
27+
private def getParametersByPatternId(patternId: PatternId)(implicit spec: Spec): Set[ParameterDef] = {
28+
val specPattern = spec.patterns.find(_.patternId == patternId)
29+
30+
specPattern.flatMap {
31+
patternSpec =>
32+
patternSpec.parameters.map(params => params.map(buildParameterDefFromSpec))
33+
}.getOrElse(Set())
34+
}
35+
36+
private def getMissingParametersFromSpec(pattern: PatternDef)(implicit spec: Spec): PatternDef = {
37+
val params = pattern.parameters.getOrElse(getParametersByPatternId(pattern.patternId))
38+
PatternDef(pattern.patternId, Some(params))
39+
}
40+
41+
}

0 commit comments

Comments
 (0)