summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsaucypy66
1 files changed, 66 insertions, 0 deletions
diff --git a/saucypy b/saucypy
new file mode 100755
index 0000000..ceb44d7
--- /dev/null
+++ b/saucypy
@@ -0,0 +1,66 @@
+#! /usr/bin/env python
+
+import difflib
+import json
+import optparse
+import sys
+
+VERSION = "1.0.0"
+
+ENTRIES_FILE = "blasource.json"
+
+items = {
+ "regex": "regexes are useful",
+ "regex-pal": "regex-pal url",
+ "regex flash": "regex flash url"
+}
+
+def find( key, entries ):
+ return difflib.get_close_matches( key, entries.keys() )
+
+def parse_args():
+ parser = optparse.OptionParser()
+ parser.add_option( "-a", "--add", action = "store", nargs = 2 )
+ parser.add_option( "-i", "--index", action = "store", type = int )
+ parser.add_option( "-v", "--version", action = "store_true" )
+ return parser.parse_args()
+
+def main():
+ options, args = parse_args()
+
+ if options.version:
+ print VERSION
+ sys.exit( 0 )
+
+ try:
+ entries = json.load( open( ENTRIES_FILE ) )
+ except IOError:
+ entries = {}
+
+ if options.add:
+ key, value = options.add
+ entries[key] = value
+
+ json.dump( entries, open( ENTRIES_FILE, "w" ), indent = 4, sort_keys = True )
+ else:
+ if not args:
+ print "Expected a search argument, got nothing."
+ sys.exit( 1 )
+
+ matches = find( args[0], entries )
+ if len( matches ) > 1:
+ if options.index is not None:
+ try:
+ print entries[matches[options.index]]
+ except IndexError:
+ print "Match index out of range."
+ sys.exit( 1 )
+ else:
+ print "Matches (use -i option to pick one) -> {0}".format( ", ".join( "{0}: {1}".format( i, m ) for i, m in enumerate( matches ) ) )
+ elif matches:
+ print entries[matches[0]]
+ else:
+ print "No match found."
+
+if __name__ == "__main__":
+ main()