Add --unique arg to file-contents-sorter
diff --git a/pre_commit_hooks/file_contents_sorter.py b/pre_commit_hooks/file_contents_sorter.py
index 4c1c747..ebbcd20 100644
--- a/pre_commit_hooks/file_contents_sorter.py
+++ b/pre_commit_hooks/file_contents_sorter.py
@@ -13,6 +13,7 @@
 from typing import Any
 from typing import Callable
 from typing import IO
+from typing import Iterable
 from typing import Optional
 from typing import Sequence
 
@@ -23,12 +24,16 @@
 def sort_file_contents(
     f: IO[bytes],
     key: Optional[Callable[[bytes], Any]],
+    *,
+    unique: bool = False,
 ) -> int:
     before = list(f)
-    after = sorted(
-        (line.strip(b'\n\r') for line in before if line.strip()),
-        key=key,
+    lines: Iterable[bytes] = (
+        line.rstrip(b'\n\r') for line in before if line.strip()
     )
+    if unique:
+        lines = set(lines)
+    after = sorted(lines, key=key)
 
     before_string = b''.join(before)
     after_string = b'\n'.join(after) + b'\n'
@@ -52,13 +57,20 @@
         default=None,
         help='fold lower case to upper case characters',
     )
+    parser.add_argument(
+        '--unique',
+        action='store_true',
+        help='ensure each line is unique',
+    )
     args = parser.parse_args(argv)
 
     retv = PASS
 
     for arg in args.filenames:
         with open(arg, 'rb+') as file_obj:
-            ret_for_file = sort_file_contents(file_obj, key=args.ignore_case)
+            ret_for_file = sort_file_contents(
+                file_obj, key=args.ignore_case, unique=args.unique,
+            )
 
             if ret_for_file:
                 print(f'Sorting {arg}')
diff --git a/tests/file_contents_sorter_test.py b/tests/file_contents_sorter_test.py
index 9ebb021..15f1134 100644
--- a/tests/file_contents_sorter_test.py
+++ b/tests/file_contents_sorter_test.py
@@ -45,6 +45,36 @@
             FAIL,
             b'fee\nFie\nFoe\nfum\n',
         ),
+        (
+            b'Fie\nFoe\nfee\nfee\nfum\n',
+            ['--ignore-case'],
+            FAIL,
+            b'fee\nfee\nFie\nFoe\nfum\n',
+        ),
+        (
+            b'Fie\nFoe\nfee\nfum\n',
+            ['--unique'],
+            PASS,
+            b'Fie\nFoe\nfee\nfum\n',
+        ),
+        (
+            b'Fie\nFie\nFoe\nfee\nfum\n',
+            ['--unique'],
+            FAIL,
+            b'Fie\nFoe\nfee\nfum\n',
+        ),
+        (
+            b'fee\nFie\nFoe\nfum\n',
+            ['--unique', '--ignore-case'],
+            PASS,
+            b'fee\nFie\nFoe\nfum\n',
+        ),
+        (
+            b'fee\nfee\nFie\nFoe\nfum\n',
+            ['--unique', '--ignore-case'],
+            FAIL,
+            b'fee\nFie\nFoe\nfum\n',
+        ),
     ),
 )
 def test_integration(input_s, argv, expected_retval, output, tmpdir):