rsstube/scripts/options.py

135 lines
3.4 KiB
Python

#!/usr/bin/python3
# NOTE: Many options listed here are not implemented yet.
license = """
rsstube - get RSS feeds from supported sites
Copyright (C) 2021
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
def options(params):
import sys,getopt,glob
from utils import debug,notify,warn,error
# get installation path
import os.path
path = os.path.realpath(os.path.abspath(__file__))
path = path[0:path.rfind("/")]
path = path[0:path.rfind("/")]
# general settings
network = True
## verbosity: in addition to the feed, print...
## 0: no messages (suppress errors)
## 1: only error messages
## 2: error messages and warnings
## 3: [default] errors, warnings, and info
## 4: all messages, including debugging info
verbosity = None
# pycurl args
d = dict()
header = []
# count number of arguments
arg_count = 0
try:
opts, args = getopt.getopt(params,"A:c:H:hnp:qtUVv", [
"user-agent=",
"ciphers=",
"compressed",
"header=",
"help",
"license",
"non-network",
"proxy",
"quiet",
"sites",
"suppress-errors",
"tls-max=",
"tls13-ciphers=",
"verbose",
"verbosity=",
"version"
])
except getopt.GetoptError:
error ("Invalid options. See the README or manual for legal rsstube flags.")
sys.exit(2)
for opt, arg in opts:
if arg == "":
arg_count += 1
else:
arg_count += 2
if opt in ("-A", "--user-agent"):
d["user_agent"] = arg
elif opt == "--ciphers":
d["ciphers"] = arg
elif opt == "--compressed":
d["compressed"] = True
elif opt in ("-h", "--help"):
print ("Usage: rsstube [OPTIONS] URL")
# not available yet
# print ("Use `man rsstube` to see the manual for rsstube.")
sys.exit()
elif opt in ("-H", "--header"):
header.append(arg)
elif opt in ("--license"):
print(license)
sys.exit()
elif opt in ("-n", "--non-network"):
network = False
elif opt in ("-p", "--proxy"):
d["proxy"] = arg
elif opt in ("-q", "--quiet"):
verbosity = 1
elif opt in ("--sites"):
print ("Site-specific support:")
for test in sorted(glob.glob(path + "/tests/*.txt")):
site = test[test.rfind("/")+1:(-4)]
print ("- " + site)
print ("\nGeneric support:")
for test in sorted(glob.glob(path + "/tests/generic/*.txt")):
site = test[test.rfind("/")+1:(-4)]
print ("- " + site)
sys.exit()
elif opt in ("--suppress-errors"):
verbosity = 0
elif opt == "--tls-max":
d["tls_max"] = arg
elif opt == "--tls13-ciphers":
d["tls13_ciphers"] = arg
elif opt in ("-v", "--verbose"):
verbosity = 4
elif opt == "--verbosity":
v = int(arg)
if v >= 0 and v <= 4:
verbosity = v
else:
print ("Invalid verbosity: " + arg)
elif opt in ("-V", "--version"):
version = open(path + "/docs/version","r")
# only go to -1 to cut EOL character
print (version.readline()[:-1])
sys.exit()
d["header"] = header
return network,verbosity,d,arg_count