]> git.armaanb.net Git - phrases.git/commitdiff
make database-file location more flexible
authorArmaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me>
Wed, 2 Dec 2020 23:41:15 +0000 (18:41 -0500)
committerArmaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me>
Wed, 2 Dec 2020 23:41:15 +0000 (18:41 -0500)
Make the program look for the phrase database first in a user defined
location, then in the current directory, then in /usr before giving up

Makefile
README.md
phrases.py

index 5ee63d3f14e3c3a0a7de9b88f36b3376e4b68555..6d3967a4ce51bb3e59582ed499639d78763359d8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,13 +2,13 @@
 
 install:
        mkdir -p /usr/local/bin
-       mkdir -p /usr/share/phrases/
-       cp phrases.py /usr/local/bin
-       cp phrases.csv /usr/share/phrases/
+       mkdir -p /usr/local/share/phrases/
+       cp phrases.py /usr/local/bin/phrases
+       cp phrases.csv /usr/local/share/phrases/
 
 uninstall:
-       rm /usr/local/bin/phrases.py
-       rm -r /usr/share/phrases/
+       rm /usr/local/bin/phrases
+       rm -r /usr/local/share/phrases/
 
 reinstall:
        make uninstall
index f13e0a169e2909f4458860872644f9c1c6ba82f1..95ffe8de0cb2440c0bdf31285ef24245e6d18479 100644 (file)
--- a/README.md
+++ b/README.md
@@ -7,12 +7,15 @@ Wikipedia contributors, "List of Latin phrases (full)," Wikipedia, The Free Ency
 There are currently 2239 famous phrases in the database
 
 ## Installation
+### On Linux + MacOS
 `sudo make` to install.
 
 `sudo make uninstall` to uninstall completely.
 
+The program can also be run without installing
+
 ### Notes
-  * If you want to generate a new phrases.csv file with the `extract.py` script, then you need the BeautifulSoup Python module.
+  * If you want to generate a new phrase database file with the `extract.py` script, then you need the beautifulsoup4 Python module.
   * Tested and written on Python 3.9.0
 
 ## License
index 63199d141d996cccc70d160ad3f71438f2909a32..43cc774e9266c5be8364f1977bddbede31a6aa77 100755 (executable)
@@ -6,6 +6,7 @@ import argparse
 import csv
 import random
 import sys
+import os.path
 
 def main(args=sys.argv[1:]):
     # Argument parsing
@@ -35,17 +36,26 @@ def main(args=sys.argv[1:]):
                         action='store_true',
                         help="print number of possibilities within constraints")
     parser.add_argument("-f", "--file",
-                        default="/usr/share/phrases/phrases.csv",
                         help="set the location of the phrase file")
     args = parser.parse_args()
 
     right_length = []
 
+    # find phrase file
+    if args.file:
+        phrase_file = args.file
+    if os.path.isfile("phrases.csv"):
+        phrase_file = "phrases.csv"
+    elif os.path.isfile("/usr/local/share/phrases/phrases.csv"):
+        phrase_file = "/usr/local/share/phrases/phrases.csv"
+    else:
+        sys.exit("cannot fine phrase database!")
+
     # convert csv file into list
-    with open(args.file) as f:
+    with open(phrase_file) as f:
         reader = csv.reader(f)
         next(reader, None) # skip header
-        all_lines = list(reader) 
+        all_lines = list(reader)
     f.close()
 
     # iterate through all the phrases
@@ -59,7 +69,7 @@ def main(args=sys.argv[1:]):
     try: # choose a random id from the shortlist
         chosen = int(right_length[random.randint(0, len(right_length) - 1)])
     except:
-        sys.exit("No phrase within the given parameters!")
+        sys.exit("no phrase within the given parameters!")
 
     # Output as specified in flags
     for row in all_lines:
@@ -70,6 +80,7 @@ def main(args=sys.argv[1:]):
                     or args.notes
                     or args.num):
                 print(row[1])
+                sys.exit(0)
             else:
                 if args.id:
                     print(row[1])
@@ -81,6 +92,7 @@ def main(args=sys.argv[1:]):
                     print(row[3])
                 if args.num:
                     print(len(right_length))
+                sys.exit(0)
 
 if __name__ == "__main__":
     main()