blob: a3efffc8ef32b0bb4ecb70d20afd1688bfa4999a [file] [log] [blame]
// Copyright (C) 2019 GerritForge Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.googlesource.gerrit.plugins.analytics.common
import com.google.inject.{ImplementedBy, Inject}
import com.googlesource.gerrit.plugins.analytics.AnalyticsConfig
import scala.util.matching.Regex
@ImplementedBy(classOf[BotLikeExtractorImpl])
trait BotLikeExtractor {
def isBotLike(files: Set[String]): Boolean
}
class BotLikeExtractorImpl @Inject() (val analyticsConfig: AnalyticsConfig) extends BotLikeExtractor {
private val botRegexps = new Regex(analyticsConfig.botlikeFilenameRegexps.mkString("|"))
override def isBotLike(files: Set[String]): Boolean = analyticsConfig.botlikeFilenameRegexps.nonEmpty && files.forall(botRegexps.findFirstIn(_).isDefined)
}