@startuml

' Licensed to Apache Software Foundation (ASF) under one or more contributor
' license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright
' ownership. Apache Software Foundation (ASF) licenses this file to you 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.

' the following line cares about avoiding the need of graphviz dependency by PlantUML (in CI))
!pragma layout smetana

title "Apache/Skywalking-Eyes: Header fix process activity diagram"
footer apache/skywalking-eyes

(*) --> "Start of 'header fix'. Processing files\nwithout proper headers file by file." as startNode

partition singleFileProcess {
startNode --> "Start of single file process" as startFileNode

if "<i>comment_style_id</i> is set for this language/file type" then
    -->[yes] "Try to fix license header of file"

    if <i>After</i> is set in CommentStyle then
        -->[yes] Look for <i>After</i>-pattern in file content

        if pattern is found then
            ------->[yes] "fileContent := contentPart1 + licenseHeader + contentPart2"
            ---> "End of fixing license header for this file" as endFileProcessingNode
        else
            --->[no] "<i>After</i>-pattern not found"

            if "<i>ensure_after</i> is set" then
                ---->[yes] "fileContent := <i>ensureAfter</i> + licenseHeader + <i>ensureBefore</i> + content"
                ---> endFileProcessingNode
            else
                --->[no] "fileContent := licenseHeader + content" as defaultHeaderFix
            endif

        endif
    else
        -->[no] defaultHeaderFix
        ---> endFileProcessingNode
    endif
else
    ---->[no] endFileProcessingNode
endif
}

endFileProcessingNode --> "End of 'header fix' process" as endNode
endNode --> (*)

@enduml