Better help messages
This commit is contained in:
parent
122796b807
commit
84a56686e2
1 changed files with 61 additions and 71 deletions
132
nauta.py
132
nauta.py
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
from textwrap import dedent
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import requests
|
import requests
|
||||||
|
@ -25,12 +26,6 @@ ATTR_UUID_FILE = os.path.join(CONFIG_DIR, "attribute_uuid")
|
||||||
LOGOUT_URL_FILE = os.path.join(CONFIG_DIR, "logout_url")
|
LOGOUT_URL_FILE = os.path.join(CONFIG_DIR, "logout_url")
|
||||||
logfile = open(os.path.join(CONFIG_DIR, "connections.log"), "a")
|
logfile = open(os.path.join(CONFIG_DIR, "connections.log"), "a")
|
||||||
|
|
||||||
#logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
|
|
||||||
#logging.getLogger().setLevel(logging.DEBUG)
|
|
||||||
#requests_log = logging.getLogger("requests.packages.urllib3")
|
|
||||||
#requests_log.setLevel(logging.DEBUG)
|
|
||||||
#requests_log.propagate = True
|
|
||||||
|
|
||||||
def log(*args, **kwargs):
|
def log(*args, **kwargs):
|
||||||
date = subprocess.check_output("date").decode().strip()
|
date = subprocess.check_output("date").decode().strip()
|
||||||
kwargs.update(dict(file=logfile))
|
kwargs.update(dict(file=logfile))
|
||||||
|
@ -75,7 +70,7 @@ def select_card():
|
||||||
return None, None
|
return None, None
|
||||||
return cards[0]['username'], cards[0]['password']
|
return cards[0]['username'], cards[0]['password']
|
||||||
|
|
||||||
def up():
|
def up(args):
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
r = session.get("http://google.com")
|
r = session.get("http://google.com")
|
||||||
|
|
||||||
|
@ -208,7 +203,7 @@ def human_secs(secs):
|
||||||
secs % 60,
|
secs % 60,
|
||||||
)
|
)
|
||||||
|
|
||||||
def down():
|
def down(args):
|
||||||
try:
|
try:
|
||||||
logout_url = open(LOGOUT_URL_FILE).read().strip()
|
logout_url = open(LOGOUT_URL_FILE).read().strip()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
@ -242,36 +237,6 @@ def time_left(username):
|
||||||
time_left = card_info.get('time_left', '-')
|
time_left = card_info.get('time_left', '-')
|
||||||
return time_left
|
return time_left
|
||||||
|
|
||||||
def cards(args):
|
|
||||||
with dbm.open(CARDS_DB, "c") as cards_db:
|
|
||||||
for card in cards_db.keys():
|
|
||||||
card = card.decode()
|
|
||||||
card_info = json.loads(cards_db[card].decode())
|
|
||||||
password = card_info['password']
|
|
||||||
password = "*" * (len(password) - 4) + password[-4:]
|
|
||||||
print("{}\t{}\t{}".format(card, password, time_left(card)))
|
|
||||||
|
|
||||||
def newcard(username, password):
|
|
||||||
with dbm.open(CARDS_DB, "c") as cards_db:
|
|
||||||
cards_db[username] = json.dumps({
|
|
||||||
'password': password,
|
|
||||||
})
|
|
||||||
|
|
||||||
def askforcard():
|
|
||||||
username = input("Username: ")
|
|
||||||
password = input("Password: ")
|
|
||||||
return username, password
|
|
||||||
|
|
||||||
def purge_cards():
|
|
||||||
cards_to_purge = []
|
|
||||||
with dbm.open(CARDS_DB, "c") as cards_db:
|
|
||||||
for card in cards_db.keys():
|
|
||||||
info = json.loads(cards_db[card].decode())
|
|
||||||
tl = parse_time(info.get('time_left'))
|
|
||||||
if tl == 0:
|
|
||||||
cards_to_purge.append(card)
|
|
||||||
delete_cards(cards_to_purge)
|
|
||||||
|
|
||||||
def delete_cards(cards):
|
def delete_cards(cards):
|
||||||
with dbm.open(CARDS_DB, "c") as cards_db:
|
with dbm.open(CARDS_DB, "c") as cards_db:
|
||||||
if len(cards) > 0:
|
if len(cards) > 0:
|
||||||
|
@ -288,12 +253,55 @@ def delete_cards(cards):
|
||||||
if reply.lower().startswith("n"):
|
if reply.lower().startswith("n"):
|
||||||
break
|
break
|
||||||
|
|
||||||
def main(args):
|
def cards(args):
|
||||||
parser = argparse.ArgumentParser()
|
with dbm.open(CARDS_DB, "c") as cards_db:
|
||||||
subparsers = parser.add_subparsers()
|
for card in cards_db.keys():
|
||||||
|
card = card.decode()
|
||||||
|
card_info = json.loads(cards_db[card].decode())
|
||||||
|
password = card_info['password']
|
||||||
|
if not args.v:
|
||||||
|
password = "*" * (len(password) - 4) + password[-4:]
|
||||||
|
print("{}\t{}\t{}".format(card, password, time_left(card)))
|
||||||
|
|
||||||
status_parser = subparsers.add_parser('status')
|
def cards_add(args):
|
||||||
status_parser.set_defaults(func=status)
|
if not args.username:
|
||||||
|
username = input("Username: ")
|
||||||
|
password = input("Password: ")
|
||||||
|
with dbm.open(CARDS_DB, "c") as cards_db:
|
||||||
|
cards_db[username] = json.dumps({
|
||||||
|
'password': password,
|
||||||
|
})
|
||||||
|
|
||||||
|
def cards_clean(args):
|
||||||
|
cards_to_purge = []
|
||||||
|
with dbm.open(CARDS_DB, "c") as cards_db:
|
||||||
|
for card in cards_db.keys():
|
||||||
|
info = json.loads(cards_db[card].decode())
|
||||||
|
tl = parse_time(info.get('time_left'))
|
||||||
|
if tl == 0:
|
||||||
|
cards_to_purge.append(card)
|
||||||
|
delete_cards(cards_to_purge)
|
||||||
|
|
||||||
|
def cards_rm(args):
|
||||||
|
delete_cards(args.cards)
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
epilog=dedent("""\
|
||||||
|
Subcommands:
|
||||||
|
|
||||||
|
up
|
||||||
|
down
|
||||||
|
cards
|
||||||
|
cards add [username]
|
||||||
|
cards clean
|
||||||
|
cards rm username [username ...]
|
||||||
|
|
||||||
|
Use -h after a subcommand for more info
|
||||||
|
"""),
|
||||||
|
formatter_class=argparse.RawDescriptionHelpFormatter
|
||||||
|
)
|
||||||
|
subparsers = parser.add_subparsers()
|
||||||
|
|
||||||
cards_parser = subparsers.add_parser('cards')
|
cards_parser = subparsers.add_parser('cards')
|
||||||
cards_parser.set_defaults(func=cards)
|
cards_parser.set_defaults(func=cards)
|
||||||
|
@ -301,17 +309,17 @@ def main(args):
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="show full passwords"
|
help="show full passwords"
|
||||||
)
|
)
|
||||||
cards_subparser = cards_parser.add_subparsers()
|
cards_subparsers = cards_parser.add_subparsers()
|
||||||
cards_add_parser = cards_subparser.add_parser('add')
|
cards_add_parser = cards_subparsers.add_parser('add')
|
||||||
cards_add_parser.set_defaults(func=cards_add)
|
cards_add_parser.set_defaults(func=cards_add)
|
||||||
cards_add_parser.add_argument('card', nargs="?")
|
cards_add_parser.add_argument('username', nargs="?")
|
||||||
|
|
||||||
cards_clean_parser = cards_subparser.add_parser('clean')
|
cards_clean_parser = cards_subparsers.add_parser('clean')
|
||||||
cards_clean_parser.set_defaults(func=cards_clean)
|
cards_clean_parser.set_defaults(func=cards_clean)
|
||||||
|
|
||||||
cards_rm_parser = cards_subparser.add_parser('rm')
|
cards_rm_parser = cards_subparsers.add_parser('rm')
|
||||||
cards_rm_parser.set_defaults(func=cards_rm)
|
cards_rm_parser.set_defaults(func=cards_rm)
|
||||||
cards_rm_parser.add_argument('card')
|
cards_rm_parser.add_argument('usernames', nargs="+")
|
||||||
|
|
||||||
up_parser = subparsers.add_parser('up')
|
up_parser = subparsers.add_parser('up')
|
||||||
up_parser.set_defaults(func=up)
|
up_parser.set_defaults(func=up)
|
||||||
|
@ -320,28 +328,10 @@ def main(args):
|
||||||
down_parser.set_defaults(func=down)
|
down_parser.set_defaults(func=down)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
args.func(args)
|
if 'func' in args:
|
||||||
|
args.func(args)
|
||||||
if len(args) == 0:
|
else:
|
||||||
args = ["status"]
|
parser.print_help()
|
||||||
|
|
||||||
if args[0] == "up":
|
|
||||||
up()
|
|
||||||
|
|
||||||
if args[0] == "down":
|
|
||||||
down()
|
|
||||||
|
|
||||||
if args[0] == "cards":
|
|
||||||
if len(args) > 1:
|
|
||||||
if args[1] in ("add", "new"):
|
|
||||||
newcard(*askforcard())
|
|
||||||
if args[1] == "clean":
|
|
||||||
purge_cards()
|
|
||||||
if args[1] == "rm":
|
|
||||||
delete_cards(args[2:])
|
|
||||||
else:
|
|
||||||
cards()
|
|
||||||
select_card()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main(sys.argv[1:])
|
main(sys.argv[1:])
|
||||||
|
|
Loading…
Reference in a new issue