diff --git a/scripts/slack-backup b/scripts/slack-backup index 0c2220c..d26817f 100755 --- a/scripts/slack-backup +++ b/scripts/slack-backup @@ -1,122 +1,10 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ -Create backup for certain date for specified channel in slack +Execute commands for slack-backup """ -import argparse -import logging - -from slack_backup import client -from slack_backup import config - - -def setup_logger(args): - """Setup logger format and level""" - - level = logging.WARNING - - if args.quiet: - level = logging.ERROR - if args.quiet > 1: - level = logging.CRITICAL - - if args.verbose: - level = logging.INFO - if args.verbose > 1: - level = logging.DEBUG - - 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() - - -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', default=None, 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=None, help='Username for your ' - 'Slack account') - fetch.add_argument('-p', '--password', default=None, help='Password for ' - 'your Slack account.') - fetch.add_argument('-e', '--team', default=None, 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=None) - fetch.add_argument('-q', '--quiet', help='Be quiet. Adding more "q" will' - ' decrease verbosity', action="count", default=None) - fetch.add_argument('-c', '--channels', default=None, nargs='+', - help='List of channels to perform actions on. ' - 'Default is all channels.') - - fetch.add_argument('-d', '--database', default=None, - help='Path to the database file.') - - fetch.add_argument('-i', '--config', default=None, - help='Use specific config 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=None, 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=None, - 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=None) - generate.add_argument('-q', '--quiet', help='Be quiet. Adding more "q" ' - 'will decrease verbosity', action="count", - default=None) - 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=None, - help='Path to the database file.') - - generate.add_argument('-i', '--config', default=None, - help='Use specific config file.') - - generate.set_defaults(func=generate_raport) - - args = parser.parse_args() - cfg = config.Config() - msg = cfg.update(args) - setup_logger(args) - logging.info(msg) - - args.func(args) +from slack_backup import command if __name__ == "__main__": - main() + command.main() diff --git a/setup.py b/setup.py index 9518087..0fb7090 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ except ImportError: setup(name="slack-backup", packages=["slack_backup"], - version="0.4.3", + version="0.4.4", description="Make copy of slack converstaions", author="Roman Dobosz", author_email="gryf73@gmail.com", diff --git a/slack_backup/command.py b/slack_backup/command.py new file mode 100644 index 0000000..4eb1664 --- /dev/null +++ b/slack_backup/command.py @@ -0,0 +1,118 @@ +""" +Create backup for certain date for specified channel in slack +""" +import argparse +import logging + +from slack_backup import client +from slack_backup import config + + +def setup_logger(args): + """Setup logger format and level""" + + level = logging.WARNING + + if args.quiet: + level = logging.ERROR + if args.quiet > 1: + level = logging.CRITICAL + + if args.verbose: + level = logging.INFO + if args.verbose > 1: + level = logging.DEBUG + + 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() + + +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', default=None, 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=None, help='Username for your ' + 'Slack account') + fetch.add_argument('-p', '--password', default=None, help='Password for ' + 'your Slack account.') + fetch.add_argument('-e', '--team', default=None, 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=None) + fetch.add_argument('-q', '--quiet', help='Be quiet. Adding more "q" will' + ' decrease verbosity', action="count", default=None) + fetch.add_argument('-c', '--channels', default=None, nargs='+', + help='List of channels to perform actions on. ' + 'Default is all channels.') + + fetch.add_argument('-d', '--database', default=None, + help='Path to the database file.') + + fetch.add_argument('-i', '--config', default=None, + help='Use specific config 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=None, 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=None, + 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=None) + generate.add_argument('-q', '--quiet', help='Be quiet. Adding more "q" ' + 'will decrease verbosity', action="count", + default=None) + 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=None, + help='Path to the database file.') + + generate.add_argument('-i', '--config', default=None, + help='Use specific config file.') + + generate.set_defaults(func=generate_raport) + + args = parser.parse_args() + cfg = config.Config() + msg = cfg.update(args) + setup_logger(args) + logging.info(msg) + + args.func(args) diff --git a/slack_backup/download.py b/slack_backup/download.py index 9ffad39..dc9ec96 100644 --- a/slack_backup/download.py +++ b/slack_backup/download.py @@ -55,8 +55,8 @@ class Download(object): 'file': self._files} if filetype == 'file' and not self._authorized: - logging.info("There was no (valid) credentials passed, therefore " - "file `%s' cannot be downloaded", url) + logging.warning("There was no (valid) credentials passed, " + "therefore file `%s' cannot be downloaded", url) return splitted = url.split('/')