Added dedupestore "console script"

This commit is contained in:
Jonas Borgström 2010-10-15 20:46:17 +02:00
parent 767335e879
commit 4bbd093a56
3 changed files with 60 additions and 4 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
build
*.egg-info
*.pyc
*.pyo

51
dedupestore/helpers.py Normal file
View File

@ -0,0 +1,51 @@
import argparse
import re
class Location(object):
loc_re = re.compile(r'^((?:(?P<user>[^@]+)@)?(?P<host>[^:]+):)?'
r'(?P<path>[^:]*)(?:::(?P<archive>[^:]+))?$')
def __init__(self, text):
loc = self.loc_re.match(text)
loc = loc and loc.groupdict()
if not loc:
raise ValueError
self.user = loc['user']
self.host = loc['host']
self.path = loc['path']
if not self.host and not self.path:
raise ValueError
self.archive = loc['archive']
def __str__(self):
text = ''
if self.user:
text += '%s@' % self.user
if self.host:
text += '%s::' % self.host
if self.path:
text += self.path
if self.archive:
text += ':%s' % self.archive
return text
def __repr__(self):
return "Location('%s')" % self
def location_validator(archive=None):
def validator(text):
try:
loc = Location(text)
except ValueError:
raise argparse.ArgumentTypeError('Invalid location format: "%s"' % text)
if archive is True and not loc.archive:
raise argparse.ArgumentTypeError('"%s": No archive specified' % text)
elif archive is False and loc.archive:
raise argparse.ArgumentTypeError('"%s" No archive can be specified' % text)
return loc
return validator

View File

@ -1,13 +1,17 @@
# -*- encoding: utf-8 *-*
#!/usr/bin/env python
from distutils.core import setup, Extension
from setuptools import setup, Extension
setup(name='Dedupestore',
version='1.0',
author='Jonas Borgström',
version='0.1',
author=u'Jonas Borgström',
author_email='jonas@borgstrom.se',
packages=['dedupestore'],
ext_modules=[Extension('_speedups', ['dedupestore/_speedups.c'])],
)
entry_points = {
'console_scripts': [
'dedupestore = dedupestore.archiver:main',
]
})