#!/bin/bash # Copyright 2023 Google LLC # # 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. # This script works around a limitation of github actions where # actions cannot receive a variable number of arguments in an array # This script takes the last argument and splits it out by new line, # passing it into osv-scanner as separate arguments # Get the total number of arguments total_args=$# # Extract the last argument last_arg="${!total_args}" # Remove the last argument from the list args=${@:1:$((total_args - 1))} # () interprets spaces as separate entries in an array # tr replaces newlines with spaces split_args=($(echo "$last_arg" | tr '\n' ' ')) # Execute osv-scanner with the provided arguments osv-scanner $args "${split_args[@]}" # Store the exit code exit_code=$? echo "Exit code: ${exit_code}" # don't error if there are no lockfiles found if [[ $exit_code -eq 128 ]]; then # if the "--allow-no-lockfiles" flag has not been used, print a deprecation warning using_new_flag="no" for value in "${args[@]}"; do if [[ "$value" = "--allow-no-lockfiles" ]] || [[ "$value" = "-allow-no-lockfiles" ]] || [[ "$value" = "-allow-no-lockfiles=true" ]] || [[ "$value" = "--allow-no-lockfiles=true" ]]; then using_new_flag="yes" fi if [[ "$value" = "-allow-no-lockfiles=false" ]] || [[ "$value" = "--allow-no-lockfiles=false" ]]; then exit $exit_code fi done if [[ $using_new_flag = "no" ]]; then echo "deprecation warning: please use the --allow-no-lockfiles flag if you don't want this action to error when there are no lockfiles" if [[ -n "$CI" ]]; then echo "::warning::No lockfiles found. Please use the --allow-no-lockfiles flag to suppress this warning." fi fi exit_code=0 fi # Exit with the modified exit code exit $exit_code