#!/usr/bin/env bash # # @license Apache-2.0 # # Copyright (c) 2017 The Stdlib Authors. # # 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. # Generates a CONTRIBUTORS file. # # This script is called with the following arguments: # # - `$1`: output file path # VARIABLES # # Set the output file path: output_file="$1" # Determine root directory: root="$(git rev-parse --show-toplevel)" # Resolve the relative file path of this script (see http://stackoverflow.com/questions/2564634/convert-absolute-path-into-relative-path-given-a-current-directory-using-bash): this_script=$(perl -MFile::Spec -e 'print File::Spec->abs2rel(@ARGV)' "$0" "${root}") # FUNCTIONS # # Lists contributors. list_contributors() { local contributors contributors="$(git log | git shortlog -sne | cut -f 2 | sort | grep -v '^github-actions' | grep -v '^stdlib-bot' | grep -v '^dependabot')" echo "${contributors}" } # Generates file contents. # # $1 - contributors file_contents() { cat << EOF # This file is generated by $this_script. # # Contributors listed in alphabetical order. $1 EOF } # Main execution sequence. main() { file_contents "$(list_contributors)" > "${output_file}" } # Run main: main