packages feed

hadolint-2.0.0: src/Hadolint/Rule/DL3051.hs

module Hadolint.Rule.DL3051 (rule) where

import qualified Data.Map as Map
import qualified Data.Text as Text
import Hadolint.Rule
import Language.Docker.Syntax


rule :: LabelSchema -> Rule args
rule labelschema = mconcat $ fmap labelIsNotEmptyRule (Map.keys labelschema)
{-# INLINEABLE rule #-}

labelIsNotEmptyRule :: LabelName -> Rule args
labelIsNotEmptyRule label = simpleRule code severity message check
  where
    code = "DL3051"
    severity = DLWarningC
    message = "label `" <> label <> "` is empty."
    check (Label pairs) = null $ getEmptyLabels label pairs
    check _ = True

getEmptyLabels :: LabelName -> Pairs -> Pairs
getEmptyLabels lbl prs = [(l, v) | (l, v) <- prs, l == lbl, Text.null v]