def METHOD_NAME():
	parser = argparse.ArgumentParser (description="KDB Tool finder")
	parser.add_argument ("--warnings", help="Print a list of all scripts that does not contain a shebang and or metatags", dest="warnings", action="store_true", default=False)
	parser.add_argument ("--good", help="Print a list of all scripts that are compliant with the Meta System", dest="good", action="store_true", default=False)
	parser.add_argument ("--alltags", help="Print a list of all known tags", dest="alltags", action="store_true", default=False)
	so = parser.add_argument_group ('Search Options. If multiple are given, they will be concatenated with AND')
	so.add_argument ("-n", "--name", help="Search by file name")
	so.add_argument ("-a", "--author", help="Search by author")
	so.add_argument ("-d", "--date", help="Search by date (format DD.MM.YYYY)")
	so.add_argument ("-t", "--tags", help="Search by tags", nargs="+")
	so.add_argument ("-b", "--brief", help="Search inside the brief text")
	so.add_argument ("-e", "--execute", help="Search by file executable (shebang)")
	args = parser.parse_args ()
	scripts = get_scripts ()
	if args.alltags:
		stags = set(tags)
		for s, d in scripts.items ():
			if "tags" in d["tags"]:
				for tag in d["tags"]["tags"].split(","):
					stags.add (tag.strip ())
		print("\n".join (sorted (stags)))
		return None
	if args.warnings:
		for s, d in sorted (scripts.items ()):
			message = []
			if d["shebang"] == "":
				message.append ("No Shebang")
			if d["perm"] == 0:
				message.append ("Not executable")
			if d["tags"] == {}:
				message.append ("No Metatags")
			if d["modeline"] == "":
				message.append ("No Modeline")
			if message != []:
				print ("%s%s%s" % (s, " "*(2 + max(map(len, scripts.keys())) - len(s)), ", ".join(message)))
	elif args.good:
		for s, d in sorted (scripts.items ()):
			if d["shebang"] != "" and d["perm"] != 0 and d["tags"] != {}:
				print("%s%s%s%s%s" % (s, " "*(2 + max(map(len, scripts.keys())) - len(s)), d["shebang"][2:], " "*(30 - len(d["shebang"])), d["tags"]["brief"] if "brief" in d["tags"].keys() else ""))
	else:
		# Search instead!
		if args.name is not None:
			scripts = {k: v for k, v in scripts.items() if args.name.lower() in k.lower()}
		if args.author is not None:
			scripts = {k: v for k, v in scripts.items() if "author" in v["tags"].keys() and args.author.lower() in v["tags"]["author"].lower()}
		if args.date is not None:
			scripts = {k: v for k, v in scripts.items() if "date" in v["tags"].keys() and args.date.lower() in v["tags"]["date"].lower()}
		if args.tags is not None:
			scripts = {k: v for k, v in scripts.items() if "tags" in v["tags"].keys() and len(set(args.tags) & set(map(str.strip, v["tags"]["tags"].split(",")))) > 0}
		if args.brief is not None:
			scripts = {k: v for k, v in scripts.items() if "brief" in v["tags"].keys() and args.brief.lower() in v["tags"]["brief"].lower()}
		if args.execute is not None:
			scripts = {k: v for k, v in scripts.items() if args.execute.lower() in v["shebang"].lower()}
		for s, d in sorted (scripts.items ()):
			print("%s%s%s%s%s" % (s, " "*(2 + max(map(len, scripts.keys())) - len(s)), d["shebang"][2:], " "*(30 - len(d["shebang"])), d["tags"]["brief"] if "brief" in d["tags"].keys() else ""))