refactor wynaut import to wynaut-import

This commit is contained in:
Martin Zimmermann 2013-12-24 10:18:34 +01:00
parent 770dbf48af
commit 1641f7f9c9
3 changed files with 49 additions and 40 deletions

View File

@ -40,7 +40,7 @@ setup(
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [
'isso = isso:main', 'isso = isso:main',
'wynaut = wynaut:main' 'wynaut-import = wynaut.imprt:main'
], ],
}, },
) )

View File

@ -4,49 +4,17 @@ import pkg_resources
dist = pkg_resources.get_distribution("isso") dist = pkg_resources.get_distribution("isso")
import os import os
import tempfile from argparse import ArgumentParser, SUPPRESS
from argparse import ArgumentParser
from isso.db import SQLite3
from isso.core import Config
from wynaut.imprt import Disqus
try:
input = raw_input
except NameError:
pass
def main():
parser = ArgumentParser(description="manage Isso") def get_parser(desc):
subparser = parser.add_subparsers(help="commands", dest="command")
parser.add_argument('--version', action='version', version='%(prog)s' + dist.version) parser = ArgumentParser(description=desc)
parser.add_argument('--version', action='version', version='%(prog)s' + dist.version,
help=SUPPRESS)
parser.add_argument('-c', dest="conf", default=os.environ.get("ISSO_SETTINGS"), parser.add_argument('-c', dest="conf", default=os.environ.get("ISSO_SETTINGS"),
metavar="/etc/isso.conf", help="set configuration file") metavar="/etc/isso.conf", help="set configuration file")
imprt = subparser.add_parser('import', help="import Disqus XML export") return parser
imprt.add_argument("dump", metavar="FILE")
imprt.add_argument("-f", "--force", dest="force", action="store_true",
help="force actions")
imprt.add_argument("-n", "--dry-run", dest="dryrun", action="store_true",
help="perform a trial run with no changes made")
args = parser.parse_args()
conf = Config.load(args.conf)
if args.command == "import":
xxx = tempfile.NamedTemporaryFile()
dbpath = conf.get("general", "dbpath") if not args.dryrun else xxx.name
dsq = Disqus(args.dump)
db = SQLite3(dbpath, conf)
if db.execute("SELECT * FROM comments").fetchone():
if not args.force and input("Isso DB is not empty! Continue? [y/N]: ") not in ("y", "Y"):
raise SystemExit("Abort.")
dsq.migrate(db)

View File

@ -5,6 +5,7 @@ from __future__ import division
import sys import sys
import os import os
import time import time
import tempfile
import textwrap import textwrap
from time import mktime, strptime from time import mktime, strptime
@ -16,8 +17,18 @@ try:
except ImportError: except ImportError:
from urllib.parse import urlparse from urllib.parse import urlparse
try:
input = raw_input
except NameError:
pass
from werkzeug.utils import cached_property from werkzeug.utils import cached_property
from isso.db import SQLite3
from isso.core import Config
from wynaut import get_parser
class Import(object): class Import(object):
@ -141,3 +152,33 @@ class Disqus(Import):
remap[dsq_id] = rv["id"] remap[dsq_id] = rv["id"]
self._posts.update(set(remap.keys())) self._posts.update(set(remap.keys()))
def main():
parser = get_parser("import Disqus XML export")
parser.add_argument("dump", metavar="FILE")
parser.add_argument("-y", "--yes", dest="yes", action="store_true",
help="always confirm actions")
parser.add_argument("-n", "--dry-run", dest="dryrun", action="store_true",
help="perform a trial run with no changes made")
parser.add_argument("-f", "--from", dest="type", choices=["disqus", "csv"])
args = parser.parse_args()
conf = Config.load(args.conf)
xxx = tempfile.NamedTemporaryFile()
dbpath = conf.get("general", "dbpath") if not args.dryrun else xxx.name
if args.type == "disqus":
importer = Disqus(args.dump)
elif args.type == "csv":
pass
db = SQLite3(dbpath, conf)
if db.execute("SELECT * FROM comments").fetchone():
if not args.yes and input("Isso DB is not empty! Continue? [y/N]: ") not in ("y", "Y"):
raise SystemExit("Abort.")
importer.migrate(db)