# Copyright (c) 2018 Open Network Automation Platform and contributors
#
#  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.

# Create a list of submodules used to build documentation
# Usage:   sh smsummary.sh output_file
#

echo "************************************************************************************" > $1
echo "* Submodule branches used to build this version of the documentation.              *" >> $1
echo "************************************************************************************" >> $1

git submodule foreach git for-each-ref \
  --format='%(committerdate:iso8601) %(objectname) %(HEAD) %(refname) %(subject)' \
  --sort -committerdate refs/heads/ | \
  sed -e 's:^:       :' -e 's:       Entering .docs/submodules/::' -e 's:.git.$::' -e 's:refs/heads/::' >> $1
