diff --git a/scripts/license_manager.sh b/scripts/license_manager.sh index 36225be098c4d559a4b765edd16981f31a75f51f..74f790a95133bb09f07b016ed55c3a7b67e2a9bc 100755 --- a/scripts/license_manager.sh +++ b/scripts/license_manager.sh @@ -12,6 +12,7 @@ line_end_mark="//--------LICENSE_END--------" tmp=false mode="none" path="" +exclude_folder="" #recursive=true license="" @@ -45,6 +46,10 @@ for i in "$@"; do fi shift # past argument=value ;; + --exclude=*) + exclude_folder="${i#*=}" + shift # past argument=value + ;; *) # unknown option ;; @@ -77,11 +82,19 @@ else fi fi -echo "mode: ${mode}" +if [ "$exclude_folder" == "" ]; then + echo "No folders will be excluded" +else + if [ -d "${path}/${exclude_folder}" ]; then + echo "Valid remove folder path: ${path}/${exclude_folder}" + fi +fi if [ $mode == "none" ]; then echo "Error: Script should be called with one of the following options: --update or --add" exit 1 +else + echo "mode: ${mode}" fi # PATH (AND tmp FOLDER) @@ -93,10 +106,17 @@ if [ $tmp == true ]; then folder=${path}_tmp fi +# LIST OF FILES TO BE ITERATED ON +if [ "$exclude_folder" == "" ]; then + file_list=$(find $folder -name '*.c' -or -name '*.cpp' -or -name '*.h' -or -name '*.hpp') +else + file_list=$(find $folder -path ${folder}/${exclude_folder} -prune -name '*.c' -or -name '*.cpp' -or -name '*.h' -or -name '*.hpp') +fi + # DETECT AND REMOVE EXISTING LICENSE -if [ $mode == "update" ]; then +if [ "$mode" == "update" ]; then echo "Recursely removing license header from all files (.c, .cpp, .h, .hpp)" - for i in $(find $folder -name '*.c' -or -name '*.cpp' -or -name '*.h' -or -name '*.hpp') + for i in $file_list do if grep -Fxq ${line_start_mark} $i then @@ -113,7 +133,7 @@ fi # ADD CONTENT OF license-file AT THE BEGINNING OF CODE FILES echo "Recursively adding license header to all files (.c, .cpp, .h, .hpp)" -for i in $(find $folder -name '*.c' -or -name '*.cpp' -or -name '*.h' -or -name '*.hpp') +for i in $file_list do if grep -Fxq ${line_start_mark} $i; then echo "skippping ${i}" @@ -121,4 +141,4 @@ do ( echo ${line_start_mark}$'\n//'; cat ${license}; echo $'//\n'${line_end_mark}; cat $i ) > temp_file mv temp_file $i fi -done \ No newline at end of file +done