]> njoseph.me Git - nimcoon.git/blobdiff - src/lib.nim
Add interactive arguments to override global ones
[nimcoon.git] / src / lib.nim
index 33b15d933dcde8e8dd2b2675890254b6d5d2a3c1..17761f390339cc8821d62984d4979acf7601ea37 100644 (file)
@@ -145,6 +145,32 @@ proc handleUserInput(searchResult: SearchResult, options: Table[string, bool], p
     play(player, options, searchResult.url, searchResult.title)
 
 
+proc isValidOptions*(options: Options): bool =
+  # Check for invalid combinations of options
+  var invalidCombinations = [("musicOnly", "fullScreen"), ("download", "fullScreen")]
+  result = true
+  for combination in invalidCombinations:
+    if options[combination[0]] and options[combination[1]]:
+     stderr.writeLine fmt"Incompatible options provided: {combination[0]} and {combination[1]}"
+     result = false
+
+
+proc updateOptions(options: Options, newOptions: string): Options =
+  result = options
+
+  for option in newOptions:
+    case option
+    of 'm': result["musicOnly"] = true
+    of 'f': result["fullScreen"] = true
+    of 'd': result["download"] = true
+    else:
+      echo "Invalid option provided!"
+      quit(2)
+
+  if(not isValidOptions(result)):
+    quit(2)
+
+
 proc present*(searchResults: SearchResults, options: Table[string, bool], selectionRange: SelectionRange, player: string) =
   ##[ Continuously present options till the user quits the application
 
@@ -173,8 +199,14 @@ proc present*(searchResults: SearchResults, options: Table[string, bool], select
   of "q":
     quit(0)
   else:
-    let searchResult = searchResults[selectionRange.begin .. selectionRange.until][parseInt(userInput)]
-    handleUserInput(searchResult, options, player)
+    if " " in userInput:
+      let selection = parseInt(userInput.split(" ")[0])
+      let updatedOptions = updateOptions(options, userInput.split(" ")[1])
+      let searchResult = searchResults[selectionRange.begin .. selectionRange.until][selection]
+      handleUserInput(searchResult, updatedOptions, player)
+    else:
+      let searchResult = searchResults[selectionRange.begin .. selectionRange.until][parseInt(userInput)]
+      handleUserInput(searchResult, options, player)
     if options["feelingLucky"]:
       quit(0)
     else: