#!/bin/sh
# Copyright (c) 2013-2023 Red Hat, Inc.
#
# 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.
#
# Written by Mikolaj Izdebski <mizdebsk@redhat.com>

set -e

year=$(date +%Y)
author="Mikolaj Izdebski"
copyright_holder="Red Hat, Inc."

java_files=$(find -name *.java | grep -v /xmvn-it/src/test/resources/)

# Remove empty lines after opening braces.
sed -i -n '
    /{ *$/{
      p
     :l
      n
      /./{
        p
        b
      }
      bl
    }
    p
' $java_files

# Remove empty lines before closing braces.
sed -i -n '
    /^$/{
      h
     :l
      n
      /^$/{
        bl
      }
      /^ *}/{
        p
        b
      }
      x
      p
      x
    }
    p
' $java_files

# Add missing @author tags.
sed -i '
    /^$/{
      n
      s=^\(public \)*\(abstract \)*\(final \)*\(class\|@*interface\) =/**\
 * @author '"$author"'\
 */\
&=
    }
' $java_files

# Add copyright notices to Java files.
sed -i '
    1{
      s|^/\*-|&|
      t
      s|.|/*-\
 * Copyright (c) '"$year $copyright_holder"'\
 *\
 * 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.\
 */\
&|
    }
' $java_files
