packages feed

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

module Hadolint.Rule.DL3024 (rule) where

import qualified Data.Set as Set
import Hadolint.Rule
import Language.Docker.Syntax

rule :: Rule args
rule = customRule check (emptyState Set.empty)
  where
    code = "DL3024"
    severity = DLErrorC
    message = "FROM aliases (stage names) must be unique"

    check line st (From BaseImage {alias = Just (ImageAlias als)}) =
      let newState = st |> modify (Set.insert als)
       in if Set.member als (state st)
            then newState |> addFail CheckFailure {..}
            else newState
    check _ st _ = st
{-# INLINEABLE rule #-}