Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.kilu.spz.anchorbot
- object AnchorBot {
- /***
- * AnchorBot
- */
- def author = "spazzpp2"
- def version = "1.0"
- def name = "AnchorBot"
- def help: Unit = {
- println(name + " " + version + " by " + author)
- println("""Usage: anchorbot [-h] [-v] [-a URL]
- -h Show this help.
- -v Verbose mode. Useful for debugging.
- -a Add feed.
- -- Add all following feedurls seperated by space.
- """)
- System exit 0
- }
- def verbose(string: String) = println(string)
- def non_verbose(string: String) = {}
- var v = non_verbose _
- type OptionMap = Map[Symbol, Any]
- var options: OptionMap = Map('verbose -> non_verbose _)
- var urls = List[String]()
- def addurl(url: String) = {
- v("Adding: " + url)
- urls = urls :+ url
- }
- def parseOpts(map: OptionMap, list: List[String]): OptionMap = {
- // Recursive options parser, adopted from stackoverflow
- list match {
- case Nil => map
- case "-h" :: rest => { help; map }
- case "--" :: values => map ++ Map('addurls -> values)
- case "-a" :: value :: rest =>
- parseOpts(map ++ Map('addurl -> value), rest)
- case "-v" :: rest => {
- v = verbose _
- parseOpts(map ++ Map('verbose -> true), rest)
- }
- case option :: rest => {
- v("Unknown argument '" + option + "'!")
- help; map
- }
- }
- }
- def main(args: Array[String]): Unit = {
- val arglist = args.toList
- options = parseOpts(Map(), arglist)
- v("Verbose is on.")
- options('addurls) match {
- case list: List[String] =>
- for (url <- list) addurl(url)
- case _ => throw new Exception("Non-string in 'addurls")
- }
- if (options.contains('addurl))
- addurl(options('addurl).toString())
- println(urls)
- }
- }
Add Comment
Please, Sign In to add comment