From 7b76480c85fe51b08a12086859861dfaa8da4424 Mon Sep 17 00:00:00 2001 From: gryf Date: Sat, 26 Nov 2016 15:08:36 +0100 Subject: [PATCH] Added subcommands for slack-backup --- scripts/slack-backup | 112 +++++++++++++++++++++++++++++-------------- 1 file changed, 75 insertions(+), 37 deletions(-) diff --git a/scripts/slack-backup b/scripts/slack-backup index 55e0cc4..ba16a38 100755 --- a/scripts/slack-backup +++ b/scripts/slack-backup @@ -9,42 +9,8 @@ import logging from slack_backup import client -def main(): - """Main function""" - parser = argparse.ArgumentParser() - parser.add_argument('-t', '--token', required=True, help='Slack token - ' - 'a string, which can be generated/obtained via ' - 'https://api.slack.com/docs/oauth-test-tokens page.') - parser.add_argument('-d', '--database', default='', - help='Path to the database file.') - parser.add_argument('-f', '--format', default='none', - choices=('text', 'none'), - help='Output format. Default is none; only database ' - 'is updated by latest messages for all/selected ' - 'channels.') - parser.add_argument('-c', '--channels', default=[], nargs='+', - help='List of channels to perform actions on. ' - 'Default is all channels.') - parser.add_argument('-u', '--user', default='', help='Username for your ' - 'Slack account') - parser.add_argument('-p', '--password', default='', help='Password for your ' - 'Slack account.') - parser.add_argument('-e', '--team', default='', help='Team name, which is' - ' part of slack url, for example: if url is ' - '"https://team.slack.com" than "team" is a name of ' - 'the team.') - parser.add_argument('-a', '--assets', default='assets', help='Directory ' - 'where to put downloaded files and images, "assets" ' - 'by default.') - parser.add_argument('-o', '--outputdir', default='logs', help="Output " - "directory for store logs. All logs are organised per" - " channel. By default it\'s `logs' directory") - parser.add_argument('-v', '--verbose', help='Be verbose. Adding more "v"' - 'will increase verbosity', action="count", default=0) - parser.add_argument('-q', '--quiet', help='Be quiet. Adding more "q"' - 'will decrease verbosity', action="count", default=0) - - args = parser.parse_args() +def setup_logger(args): + """Setup logger format and level""" level = logging.WARNING @@ -61,9 +27,81 @@ def main(): logging.basicConfig(level=level, format="%(asctime)s %(levelname)s: %(message)s") +def generate_raport(args): + """Generate logs""" + slack = client.Client(args) + slack.generate_history() + +def fetch_data(args): + """Fetch and store data""" slack = client.Client(args) slack.update() - slack.generate_history() + + +def main(): + """Main function""" + parser = argparse.ArgumentParser() + + subparser = parser.add_subparsers(dest='parser') + subparser.required = True + + fetch = subparser.add_parser('fetch', help='Update local db with Slack' + ' data') + fetch.add_argument('-t', '--token', required=True, help='Slack token - ' + 'a string, which can be generated/obtained via ' + 'https://api.slack.com/docs/oauth-test-tokens page.') + fetch.add_argument('-u', '--user', default='', help='Username for your ' + 'Slack account') + fetch.add_argument('-p', '--password', default='', help='Password for your ' + 'Slack account.') + fetch.add_argument('-e', '--team', required=True, help='Team name, which ' + 'is part of slack url, for example: if url is ' + '"https://team.slack.com" than "team" is a name of ' + 'the team.') + fetch.add_argument('-v', '--verbose', help='Be verbose. Adding more "v"' + 'will increase verbosity', action="count", default=0) + fetch.add_argument('-q', '--quiet', help='Be quiet. Adding more "q"' + 'will decrease verbosity', action="count", default=0) + fetch.add_argument('-c', '--channels', default=[], nargs='+', + help='List of channels to perform actions on. ' + 'Default is all channels.') + + fetch.add_argument('-d', '--database', default='', + help='Path to the database file.') + + fetch.set_defaults(func=fetch_data) + + generate = subparser.add_parser('generate', help='Generate logs out of ' + 'data in provided database') + generate.add_argument('-o', '--output', default='logs', help="Output " + "directory for store logs. All logs are organised " + "per channel. By default it's `logs' directory") + generate.add_argument('-f', '--format', default='none', + choices=('text', 'none'), + help='Output format. Default is none; only database ' + 'is updated by latest messages for all/selected ' + 'channels.') + generate.add_argument('-t', '--theme', default='plain', + choices=('plain', 'unicode'), + help='Choose theme for text output. It doesn\'t ' + 'affect other output formats.') + + generate.add_argument('-v', '--verbose', help='Be verbose. Adding more "v"' + 'will increase verbosity', action="count", default=0) + generate.add_argument('-q', '--quiet', help='Be quiet. Adding more "q"' + 'will decrease verbosity', action="count", default=0) + generate.add_argument('-c', '--channels', default=[], nargs='+', + help='List of channels to perform actions on. ' + 'Default is all channels.') + + generate.add_argument('-d', '--database', default='', + help='Path to the database file.') + + generate.set_defaults(func=generate_raport) + + args = parser.parse_args() + setup_logger(args) + args.func(args) if __name__ == "__main__":