Guest User

Untitled

a guest
Oct 21st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. package de.kilu.spz.anchorbot
  2.  
  3. object AnchorBot {
  4. /***
  5. * AnchorBot
  6. */
  7. def author = "spazzpp2"
  8. def version = "1.0"
  9. def name = "AnchorBot"
  10. def help: Unit = {
  11. println(name + " " + version + " by " + author)
  12. println("""Usage: anchorbot [-h] [-v] [-a URL]
  13. -h Show this help.
  14. -v Verbose mode. Useful for debugging.
  15. -a Add feed.
  16. -- Add all following feedurls seperated by space.
  17. """)
  18. System exit 0
  19. }
  20.  
  21. def verbose(string: String) = println(string)
  22. def non_verbose(string: String) = {}
  23. var v = non_verbose _
  24.  
  25. type OptionMap = Map[Symbol, Any]
  26. var options: OptionMap = Map('verbose -> non_verbose _)
  27. var urls = List[String]()
  28.  
  29. def addurl(url: String) = {
  30. v("Adding: " + url)
  31. urls = urls :+ url
  32. }
  33.  
  34. def parseOpts(map: OptionMap, list: List[String]): OptionMap = {
  35. // Recursive options parser, adopted from stackoverflow
  36. list match {
  37. case Nil => map
  38. case "-h" :: rest => { help; map }
  39. case "--" :: values => map ++ Map('addurls -> values)
  40. case "-a" :: value :: rest =>
  41. parseOpts(map ++ Map('addurl -> value), rest)
  42. case "-v" :: rest => {
  43. v = verbose _
  44. parseOpts(map ++ Map('verbose -> true), rest)
  45. }
  46. case option :: rest => {
  47. v("Unknown argument '" + option + "'!")
  48. help; map
  49. }
  50. }
  51. }
  52.  
  53. def main(args: Array[String]): Unit = {
  54. val arglist = args.toList
  55. options = parseOpts(Map(), arglist)
  56. v("Verbose is on.")
  57. options('addurls) match {
  58. case list: List[String] =>
  59. for (url <- list) addurl(url)
  60. case _ => throw new Exception("Non-string in 'addurls")
  61. }
  62. if (options.contains('addurl))
  63. addurl(options('addurl).toString())
  64. println(urls)
  65. }
  66. }
Add Comment
Please, Sign In to add comment