1
0
mirror of https://github.com/gryf/slack-backup.git synced 2025-12-17 19:40:21 +01:00

Added subcommands for slack-backup

This commit is contained in:
2016-11-26 15:08:36 +01:00
parent ac9dee9e5d
commit 7b76480c85

View File

@@ -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__":