# Path: shimehari/core/manage/AbstractCommand.py
# class AbstractCommand(object):
#     name = None
#     help = ''
#     usage = 'Usage: shimehari COMMAND [ARGUMENTS...] [OPTIONS]'
#     summary = 'Shimehari is a framework for Python'
#     hidden = False
#     option_list = (
#         make_option('--traceback', action='store_true', help='Print traceback on exception'),
#     )
# 
#     def __init__(self):
#         self.parser = OptionParser(
#             usage=self.usage,
#             prog='shimehari %s' % self.name,
#             version=self.getVersion(),
#             option_list=self.option_list)
#         if not self.name is None:
#             command_dict[self.name] = self
# 
#     def getVersion(self):
#         return shimehari.getVersion()
# 
#     def runFromArgv(self, argv):
#         options, args = self.parser.parse_args(argv[2:])
#         self.execute(*args, **options.__dict__)
# 
#     def execute(self, *args, **options):
# 
#         showTraceback = options.get('traceback', False)
# 
#         try:
#             self.stdout = options.get('stdout', sys.stdout)
#             self.stderror = options.get('stderr', sys.stderr)
# 
#             output = self.handle(*args, **options)
#             if output:
#                 self.stdout.write(output)
#         except (TypeError, CommandError, DrinkError), e:
#             if showTraceback:
#                 traceback.print_exc()
#             else:
#                 self.stderror.write('%s\n' % unicode(e).encode('utf-8'))
#             sys.exit(1)
# 
#     def validate(self):
#         raise NotImplementedError()
# 
#     def handle(self):
#         raise NotImplementedError()
# 
#     #humu...
#     def getAppConfig(self):
#         pass
# 
# Path: shimehari/configuration.py
# class ConfigManager(object):
#     u"""Config インスタンスを管理します。"""
# 
#     configrations = {}
# 
#     @classmethod
#     def hasConfig(cls):
#         u"""Config インスタンスが登録されているかどうか
# 
#         :param bool: Config インスタンスが登録されているかどうかを返します。
#         """
#         if not cls.configrations or len(cls.configrations) < 1:
#             return False
#         else:
#             return True
# 
#     @classmethod
#     def getConfigs(cls):
#         u"""Config インスタンスが格納されたディクショナリを返します。"""
#         return cls.configrations
# 
#     @classmethod
#     def getConfig(cls, environ=None):
#         u"""Config インスタンスを取得します。
# 
#         :param environ: 取得したい環境。
#                         指定されない場合は現在の環境に合わせた Config が返されます。
#         """
#         if environ is None:
#             environ = getEnviron()
#         if environ in cls.configrations:
#             return cls.configrations[environ]
#         return None
# 
#     @classmethod
#     def addConfigs(cls, configs=[]):
#         u"""複数の Config インスタンスをまとめて登録します。
# 
#         :param configs: Config インスタンスを格納したディクショナリ
#         """
#         [cls.addConfig(c) for c in configs]
# 
#     @classmethod
#     def addConfig(cls, config):
#         u"""Config インスタンスを登録します。
# 
#         :param config: 登録したいコンフィグインスタンス
#         """
#         if isinstance(config, Config):
#             cls.configrations.setdefault(config.environment, config)
#         else:
#             raise TypeError('config じゃない')
# 
#     @classmethod
#     def removeConfig(cls, environment):
#         u"""Config インスタンスを削除します。
# 
#         :param enviroment: 削除したい環境
#         """
#         if cls.configrations[environment]:
#             cls.configrations.pop(environment)


import os
import re
import sys
from shimehari.core.manage import AbstractCommand
from shimehari.configuration import ConfigManager
    name = 'clean'
    summary = "Clean up files"
    usage = "Usage: %prog TARGET"

    targets = ('pyc', 'log')

    def __init__(self):
        super(Command, self).__init__()

    def handle(self, target=None, *args, **options):
        isUnknownTarget = False

        if not target is None and not target in self.targets:
            isUnknownTarget = True
            sys.stdout.write('Unknown target. ')

        if target is None or isUnknownTarget:
            sys.stdout.write('Please imput target.\n')
            for theTarget in self.targets:
                sys.stdout.write('    %s\n' % theTarget)
            return 0

        exec_method = getattr(self, '_exec_%s' % target)
        return exec_method()

    def _exec_pyc(self):
        self._removeFiles(os.getcwd(), r'\.py[cod]$')

    def _exec_log(self):
        __import__('config')

# Path: shimehari/core/manage/AbstractCommand.py
# class AbstractCommand(object):
#     name = None
#     help = ''
#     usage = 'Usage: shimehari COMMAND [ARGUMENTS...] [OPTIONS]'
#     summary = 'Shimehari is a framework for Python'
#     hidden = False
#     option_list = (
#         make_option('--traceback', action='store_true', help='Print traceback on exception'),
#     )
# 
#     def __init__(self):
#         self.parser = OptionParser(
#             usage=self.usage,
#             prog='shimehari %s' % self.name,
#             version=self.getVersion(),
#             option_list=self.option_list)
#         if not self.name is None:
#             command_dict[self.name] = self
# 
#     def getVersion(self):
#         return shimehari.getVersion()
# 
#     def runFromArgv(self, argv):
#         options, args = self.parser.parse_args(argv[2:])
#         self.execute(*args, **options.__dict__)
# 
#     def execute(self, *args, **options):
# 
#         showTraceback = options.get('traceback', False)
# 
#         try:
#             self.stdout = options.get('stdout', sys.stdout)
#             self.stderror = options.get('stderr', sys.stderr)
# 
#             output = self.handle(*args, **options)
#             if output:
#                 self.stdout.write(output)
#         except (TypeError, CommandError, DrinkError), e:
#             if showTraceback:
#                 traceback.print_exc()
#             else:
#                 self.stderror.write('%s\n' % unicode(e).encode('utf-8'))
#             sys.exit(1)
# 
#     def validate(self):
#         raise NotImplementedError()
# 
#     def handle(self):
#         raise NotImplementedError()
# 
#     #humu...
#     def getAppConfig(self):
#         pass
# 
# Path: shimehari/configuration.py
# class ConfigManager(object):
#     u"""Config インスタンスを管理します。"""
# 
#     configrations = {}
# 
#     @classmethod
#     def hasConfig(cls):
#         u"""Config インスタンスが登録されているかどうか
# 
#         :param bool: Config インスタンスが登録されているかどうかを返します。
#         """
#         if not cls.configrations or len(cls.configrations) < 1:
#             return False
#         else:
#             return True
# 
#     @classmethod
#     def getConfigs(cls):
#         u"""Config インスタンスが格納されたディクショナリを返します。"""
#         return cls.configrations
# 
#     @classmethod
#     def getConfig(cls, environ=None):
#         u"""Config インスタンスを取得します。
# 
#         :param environ: 取得したい環境。
#                         指定されない場合は現在の環境に合わせた Config が返されます。
#         """
#         if environ is None:
#             environ = getEnviron()
#         if environ in cls.configrations:
#             return cls.configrations[environ]
#         return None
# 
#     @classmethod
#     def addConfigs(cls, configs=[]):
#         u"""複数の Config インスタンスをまとめて登録します。
# 
#         :param configs: Config インスタンスを格納したディクショナリ
#         """
#         [cls.addConfig(c) for c in configs]
# 
#     @classmethod
#     def addConfig(cls, config):
#         u"""Config インスタンスを登録します。
# 
#         :param config: 登録したいコンフィグインスタンス
#         """
#         if isinstance(config, Config):
#             cls.configrations.setdefault(config.environment, config)
#         else:
#             raise TypeError('config じゃない')
# 
#     @classmethod
#     def removeConfig(cls, environment):
#         u"""Config インスタンスを削除します。
# 
#         :param enviroment: 削除したい環境
#         """
#         if cls.configrations[environment]:
#             cls.configrations.pop(environment)


# Path: shimehari/core/manage/commands/clean.py
import os
import re
import sys
from shimehari.core.manage import AbstractCommand
from shimehari.configuration import ConfigManager

    name = 'clean'
    summary = "Clean up files"
    usage = "Usage: %prog TARGET"

    targets = ('pyc', 'log')

    def __init__(self):
        super(Command, self).__init__()

    def handle(self, target=None, *args, **options):
        isUnknownTarget = False

        if not target is None and not target in self.targets:
            isUnknownTarget = True
            sys.stdout.write('Unknown target. ')

        if target is None or isUnknownTarget:
            sys.stdout.write('Please imput target.\n')
            for theTarget in self.targets:
                sys.stdout.write('    %s\n' % theTarget)
            return 0

        exec_method = getattr(self, '_exec_%s' % target)
        return exec_method()

    def _exec_pyc(self):
        self._removeFiles(os.getcwd(), r'\.py[cod]$')

    def _exec_log(self):
        __import__('config')

        config = ConfigManager.getConfig()