update license notice
[tee-unique] / teeu
diff --git a/teeu b/teeu
index 8557bad5641e566c362122dd5050380a38cd626b..9daedb77b836460799b17513a02bdee1130dff0e 100755 (executable)
--- a/teeu
+++ b/teeu
@@ -1,5 +1,12 @@
 #!/bin/bash
 #!/bin/bash
-# Copyright (C) 2016 Ian Kelling
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,8 +20,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+
 teeu() {
 teeu() {
-    local help="Usage: appendu [-h|--help] FILE [LINE]
+  local help="Usage: teeu [-h|--help] FILE [LINE]
 Append LINE if it's not already in FILE
 
 If no LINE is specified, process each line from STDIN.
 Append LINE if it's not already in FILE
 
 If no LINE is specified, process each line from STDIN.
@@ -22,21 +30,27 @@ teeu is short for tee unique.
 
 -h|--help  display this message"
 
 
 -h|--help  display this message"
 
-    if [[ $1 == --help || $1 == -h ]]; then
-        echo "$help"
-        return
-    fi
-
-    if (( ${#@} == 0 )) ; then
-        echo "teeu error: need 1 or more arguments"
-        echo "$help"
-        return 1
-    fi
-    local MAPFILE
-    (( ${#@} >= 2 )) && MAPFILE="${@:2}" || mapfile -t
-    for line in "${MAPFILE[@]}"; do
-        grep -xFq "$line" "$1" &>/dev/null || tee -a "$1" <<<"$line"
-    done
-    return 0
+  if [[ $1 == --help || $1 == -h ]]; then
+    echo "$help"
+    return
+  fi
+
+  if (( ${#@} == 0 )) ; then
+    echo "teeu error: need 1 or more arguments"
+    echo "$help"
+    return 1
+  fi
+  file="$1"
+  shift
+  local MAPFILE
+  if [[ $1 ]]; then
+    MAPFILE=("$*")
+  else
+    mapfile -t
+  fi
+  for line in "${MAPFILE[@]}"; do
+    grep -xFq "$line" "$file" &>/dev/null || tee -a "$file" <<<"$line"
+  done
+  return 0
 }
 teeu "$@"
 }
 teeu "$@"