コード例 #1
0
ファイル: actions.py プロジェクト: przor3n/devassistant
 def run(self):
     if os.path.isfile(self.kwargs['package']):
         old_level = logger.getEffectiveLevel()
         logger.setLevel(logging.ERROR)
         try:
             d = dapi.Dap(self.kwargs['package'])
             if not dapi.DapChecker.check(d):
                 raise exceptions.ExecutionException(
                     'This DAP is not valid, info can\'t be displayed.')
         finally:
             logger.setLevel(old_level)
         logger.infolines(
             dapicli.format_local_dap(d,
                                      full=self.kwargs.get('full', False)))
     elif self.kwargs.get('installed'):
         try:
             logger.infolines(
                 dapicli.format_installed_dap(self.kwargs['package'],
                                              full=self.kwargs.get(
                                                  'full', False)))
         except exceptions.DapiError as e:
             logger.error(utils.exc_as_decoded_string(e))
             raise exceptions.ExecutionException(
                 utils.exc_as_decoded_string(e))
     else:
         try:
             logger.infolines(
                 dapicli.format_dap_from_dapi(self.kwargs['package'],
                                              full=self.kwargs.get(
                                                  'full', False)))
         except exceptions.DapiError as e:
             logger.error(utils.exc_as_decoded_string(e))
             raise exceptions.ExecutionException(
                 utils.exc_as_decoded_string(e))
コード例 #2
0
ファイル: run_window.py プロジェクト: sYnfo/devassistant
 def __init__(self,  parent, builder, gui_helper):
     self.parent = parent
     self.run_window = builder.get_object("runWindow")
     self.run_tree_view = builder.get_object("runTreeView")
     self.cancel_btn = builder.get_object("cancelRunBtn")
     self.debug_btn = builder.get_object("debugBtn")
     self.info_box = builder.get_object("infoBox")
     self.scrolled_window = builder.get_object("scrolledWindow")
     self.back_btn = builder.get_object("backBtn")
     self.tlh = RunLoggingHandler(self, self.run_tree_view)
     self.gui_helper = gui_helper
     logger.addHandler(self.tlh)
     FORMAT = "%(levelname)s %(message)s"
     self.tlh.setFormatter(logging.Formatter(FORMAT))
     logger.setLevel(logging.DEBUG)
     self.store = Gtk.TreeStore(str)
     renderer = Gtk.CellRendererText()
     column = Gtk.TreeViewColumn("Log from current process", renderer, text=0)
     self.run_tree_view.append_column(column)
     self.run_tree_view.set_model(self.store)
     self.stop = threading.Event()
     self.pr = None
     self.link = self.gui_helper.create_button()
     self.info_label = gui_helper.create_label('<span color="#FFA500">In progress...</span>')
     self.project_canceled = False
コード例 #3
0
ファイル: actions.py プロジェクト: jimgle/devassistant
 def run(self):
     if os.path.isfile(self.kwargs['package']):
         old_level = logger.getEffectiveLevel()
         logger.setLevel(logging.ERROR)
         try:
             d = dapi.Dap(self.kwargs['package'])
             if not dapi.DapChecker.check(d):
                 raise exceptions.ExecutionException(
                     'This DAP is not valid, info can\'t be displayed.')
         finally:
             logger.setLevel(old_level)
         dapicli.print_local_dap(d, full=self.kwargs.get('full', False))
     elif self.kwargs.get('installed'):
         try:
             dapicli.print_installed_dap(self.kwargs['package'],
                                         full=self.kwargs.get('full', False))
         except exceptions.DapiError as e:
             logger.error(utils.exc_as_decoded_string(e))
             raise exceptions.ExecutionException(utils.exc_as_decoded_string(e))
     else:
         try:
             dapicli.print_dap_from_dapi(self.kwargs['package'],
                                         full=self.kwargs.get('full', False))
         except exceptions.DapiError as e:
             logger.error(utils.exc_as_decoded_string(e))
             raise exceptions.ExecutionException(utils.exc_as_decoded_string(e))
コード例 #4
0
 def __init__(self,  parent, builder, gui_helper):
     self.parent = parent
     self.run_window = builder.get_object("runWindow")
     self.run_tree_view = builder.get_object("runTreeView")
     self.debug_btn = builder.get_object("debugBtn")
     self.info_box = builder.get_object("infoBox")
     self.scrolled_window = builder.get_object("scrolledWindow")
     self.back_btn = builder.get_object("backBtn")
     self.main_btn = builder.get_object("mainBtn")
     self.tlh = RunLoggingHandler(self, self.run_tree_view)
     self.gui_helper = gui_helper
     logger.addHandler(self.tlh)
     FORMAT = "%(levelname)s %(message)s"
     self.tlh.setFormatter(logging.Formatter(FORMAT))
     logger.setLevel(logging.DEBUG)
     self.store = Gtk.TreeStore(str)
     renderer = Gtk.CellRendererText()
     column = Gtk.TreeViewColumn("Log from current process", renderer, text=0)
     self.run_tree_view.append_column(column)
     self.run_tree_view.set_model(self.store)
     self.stop = threading.Event()
     self.pr = None
     self.link = self.gui_helper.create_button()
     self.info_label = gui_helper.create_label('<span color="#FFA500">In progress...</span>')
     self.info_box.pack_start(self.info_label, False, False, 12)
     self.project_canceled = False
     self.kwargs = {}
     self.current_main_assistant = None
     self.top_assistant = None
     self.close_win = False
     sigint_handler.override()
コード例 #5
0
ファイル: actions.py プロジェクト: Rorosha/devassistant
 def run(cls, **kwargs):
     error = False
     old_level = logger.getEffectiveLevel()
     for pkg in kwargs['package']:
         try:
             if kwargs['nowarnings']:
                 logger.setLevel(logging.ERROR)
             d = dapi.Dap(pkg)
             if not d.check(network=kwargs['network']):
                 error = True
         except (exceptions.DapFileError, exceptions.DapMetaError) as e:
             logger.error(str(e))
             error = True
     logger.setLevel(old_level)
     if error:
         raise exceptions.ExecutionException('One or more packages are not sane')
コード例 #6
0
ファイル: actions.py プロジェクト: jimgle/devassistant
 def run(self):
     error = False
     old_level = logger.getEffectiveLevel()
     for pkg in self.kwargs['package']:
         try:
             if self.kwargs['nowarnings']:
                 logger.setLevel(logging.ERROR)
             d = dapi.Dap(pkg)
             if not dapi.DapChecker.check(d, network=self.kwargs['network'],
                                          yamls=not self.kwargs['noyamlcheck']):
                 error = True
         except (exceptions.DapFileError, exceptions.DapMetaError) as e:
             logger.error(utils.exc_as_decoded_string(e))
             error = True
     logger.setLevel(old_level)
     if error:
         raise exceptions.ExecutionException('One or more packages are not sane')
コード例 #7
0
ファイル: runWindow.py プロジェクト: aoighost/devassistant
 def __init__(self,  parent, finalWindow, builder, assistant):
     self.parent = parent
     self.finalWindow = finalWindow
     self.runWindow = builder.get_object("runWindow")
     self.runTreeView = builder.get_object("runTreeView")
     self.cancelBtn = builder.get_object("cancelRunBtn")
     self.assistant = assistant
     self.tlh = RunLoggingHandler(self.runTreeView)
     logger.addHandler(self.tlh)
     FORMAT = "%(levelname)s %(message)s"
     self.tlh.setFormatter(logging.Formatter(FORMAT))
     logger.setLevel(logging.DEBUG)
     self.store = Gtk.TreeStore(str)
     renderer = Gtk.CellRendererText()
     column = Gtk.TreeViewColumn("Log from current process", renderer, text=0)
     self.runTreeView.append_column(column)
     self.runTreeView.set_model(self.store)
コード例 #8
0
ファイル: run_window.py プロジェクト: przor3n/devassistant
 def __init__(self, parent, builder, gui_helper):
     self.parent = parent
     self.run_window = builder.get_object("runWindow")
     self.run_list_view = builder.get_object("runTreeView")
     self.debug_btn = builder.get_object("debugBtn")
     self.info_box = builder.get_object("infoBox")
     self.scrolled_window = builder.get_object("scrolledWindow")
     self.back_btn = builder.get_object("backBtn")
     self.main_btn = builder.get_object("mainBtn")
     self.tlh = RunLoggingHandler(self, self.run_list_view)
     self.gui_helper = gui_helper
     logger.addHandler(self.tlh)
     format_msg = "%(levelname)s %(message)s"
     self.tlh.setFormatter(logging.Formatter(format_msg))
     logger.setLevel(logging.DEBUG)
     is_log_file = add_log_file_handler(settings.LOG_FILE)
     if not is_log_file:
         logger_gui.warning("Could not create log file '{0}'.".format(
             settings.LOG_FILE))
     self.store = Gtk.ListStore(str)
     renderer = Gtk.CellRendererText()
     renderer.set_property('font', 'Liberation Mono')
     renderer.set_property('wrap_width', 750)
     renderer.set_property('wrap_mode', Gtk.WrapMode.WORD)
     column = Gtk.TreeViewColumn("Log from current process",
                                 renderer,
                                 markup=0)
     self.run_list_view.append_column(column)
     self.run_list_view.set_model(self.store)
     self.run_list_view.connect('row-activated', self.list_view_row_clicked)
     self.stop = threading.Event()
     self.dev_assistant_runner = None
     self.debug_logs = dict()
     self.debug_logs['logs'] = []
     self.link = None
     self.info_label = gui_helper.create_label(
         '<span color="#FFA500">In progress...</span>')
     self.info_box.pack_start(self.info_label, False, False, 12)
     self.project_canceled = False
     self.kwargs = {}
     self.current_main_assistant = None
     self.top_assistant = None
     self.close_win = False
     self.debugging = False
     self.thread = None
     sigint_handler.override()
コード例 #9
0
ファイル: dapicli.py プロジェクト: Rorosha/devassistant
def install_dap_from_path(path, update=False):
    '''Installs a dap from a given path'''
    will_uninstall = False
    dap_obj = dapi.Dap(path)
    if dap_obj.meta['package_name'] in get_installed_daps():
        if not update:
            raise Exception('Won\'t override already installed dap')
        else:
            will_uninstall = True
    if os.path.isfile(_install_path()):
        raise Exception(
            '{i} is a file, not a directory'.format(i=_install_path()))
    _dir = tempfile.mkdtemp()
    old_level = logger.getEffectiveLevel()
    logger.setLevel(logging.ERROR)
    ok = dap_obj.check()
    logger.setLevel(old_level)
    if not ok:
        raise Exception('The dap you want to install has errors, won\'t do it')
    dap_obj.extract(_dir)
    if will_uninstall:
        uninstall_dap(dap_obj.meta['package_name'])
    _dapdir = os.path.join(_dir, dap_obj.meta['package_name'] + '-' + dap_obj.meta['version'])
    if not os.path.isdir(_install_path()):
        os.makedirs(_install_path())
    os.mkdir(os.path.join(_dapdir, 'meta'))
    os.rename(os.path.join(_dapdir, 'meta.yaml'), os.path.join(_dapdir, 'meta', dap_obj.meta['package_name'] + '.yaml'))
    for f in glob.glob(_dapdir + '/*'):
        dst = os.path.join(_install_path(), os.path.basename(f))
        if os.path.isdir(f):
            if not os.path.exists(dst):
                os.mkdir(dst)
            for src_dir, dirs, files in os.walk(f):
                dst_dir = src_dir.replace(f, dst)
                if not os.path.exists(dst_dir):
                    os.mkdir(dst_dir)
                for file_ in files:
                    src_file = os.path.join(src_dir, file_)
                    dst_file = os.path.join(dst_dir, file_)
                    shutil.copyfile(src_file, dst_file)
        else:
            shutil.copyfile(f, dst)
    try:
        shutil.rmtree(_dir)
    except:
        pass
コード例 #10
0
ファイル: run_window.py プロジェクト: Rorosha/devassistant
 def __init__(self, parent, builder, gui_helper):
     self.parent = parent
     self.run_window = builder.get_object("runWindow")
     self.run_list_view = builder.get_object("runTreeView")
     self.debug_btn = builder.get_object("debugBtn")
     self.info_box = builder.get_object("infoBox")
     self.scrolled_window = builder.get_object("scrolledWindow")
     self.back_btn = builder.get_object("backBtn")
     self.main_btn = builder.get_object("mainBtn")
     self.tlh = RunLoggingHandler(self, self.run_list_view)
     self.gui_helper = gui_helper
     logger.addHandler(self.tlh)
     format_msg = "%(levelname)s %(message)s"
     self.tlh.setFormatter(logging.Formatter(format_msg))
     logger.setLevel(logging.DEBUG)
     is_log_file = add_log_file_handler(settings.LOG_FILE)
     if not is_log_file:
         logger_gui.warning("Could not create log file '{0}'.".format(settings.LOG_FILE))
     self.store = Gtk.ListStore(str)
     renderer = Gtk.CellRendererText()
     renderer.set_property('font', 'Liberation Mono')
     renderer.set_property('wrap_width', 750)
     renderer.set_property('wrap_mode', Gtk.WrapMode.WORD)
     column = Gtk.TreeViewColumn("Log from current process", renderer, markup=0)
     self.run_list_view.append_column(column)
     self.run_list_view.set_model(self.store)
     self.run_list_view.connect('row-activated', self.list_view_row_clicked)
     self.stop = threading.Event()
     self.dev_assistant_runner = None
     self.debug_logs = dict()
     self.debug_logs['logs'] = []
     self.link = None
     self.info_label = gui_helper.create_label('<span color="#FFA500">In progress...</span>')
     self.info_box.pack_start(self.info_label, False, False, 12)
     self.project_canceled = False
     self.kwargs = {}
     self.current_main_assistant = None
     self.top_assistant = None
     self.close_win = False
     self.debugging = False
     self.thread = None
     sigint_handler.override()
コード例 #11
0
ファイル: actions.py プロジェクト: przor3n/devassistant
 def run(self):
     error = False
     old_level = logger.getEffectiveLevel()
     for pkg in self.kwargs['package']:
         try:
             if self.kwargs['nowarnings']:
                 logger.setLevel(logging.ERROR)
             d = dapi.Dap(pkg)
             if not dapi.DapChecker.check(
                     d,
                     network=self.kwargs['network'],
                     yamls=not self.kwargs['noyamlcheck']):
                 error = True
         except (exceptions.DapFileError, exceptions.DapMetaError) as e:
             logger.error(utils.exc_as_decoded_string(e))
             error = True
     logger.setLevel(old_level)
     if error:
         raise exceptions.ExecutionException(
             'One or more packages are not sane')
コード例 #12
0
ファイル: dapicli.py プロジェクト: phracek/devassistant
def install_dap_from_path(path, update=False, update_allpaths=False, first=True,
                          force=False, nodeps=False, reinstall=False):
    '''Installs a dap from a given path'''
    will_uninstall = False
    dap_obj = dapi.Dap(path)
    name = dap_obj.meta['package_name']

    if name in get_installed_daps():
        if not update and not reinstall:
            raise Exception(
                'DAP {name} is already installed. '
                'Run `da pkg list` to see it\'s location, or use --reinstall to ignore this check.'
                .format(name=name))
        elif not update_allpaths and name in get_installed_daps(_install_path()):
            will_uninstall = True
        elif update_allpaths and name in get_installed_daps():
            will_uninstall = True

    if update and update_allpaths:
        install_locations = []
        for pair in get_installed_daps_detailed()[name]:
            install_locations.append(pair['location'])
    else:
        install_locations = [_install_path()]

    # This should not happen unless someone did it on purpose
    for location in install_locations:
        if os.path.isfile(location):
            raise Exception(
                '{i} is a file, not a directory.'.format(i=_install_path()))

    _dir = tempfile.mkdtemp()

    old_level = logger.getEffectiveLevel()
    logger.setLevel(logging.ERROR)
    ok = dapi.DapChecker.check(dap_obj)
    logger.setLevel(old_level)

    if not ok:
        raise Exception('The DAP you want to install has errors, not installing.')

    installed = []
    if first:
        if not force and not _is_supported_here(dap_obj.meta):
            raise Exception(
                '{0} is not supported on this platform (use --force to suppress this check)'.
                format(name))

        deps = set()
        if 'dependencies' in dap_obj.meta and not nodeps:
            for dep in dap_obj.meta['dependencies']:
                dep = _strip_version_from_dependency(dep)
                if dep not in get_installed_daps():
                    deps |= _get_all_dependencies_of(dep, force=force)
            for dep in deps:
                if dep not in get_installed_daps():
                    installed += install_dap(dep, first=False)

    dap_obj.extract(_dir)

    if will_uninstall:
        uninstall_dap(name, allpaths=update_allpaths)

    _dapdir = os.path.join(_dir, name + '-' + dap_obj.meta['version'])

    if not os.path.isdir(_install_path()):
        os.makedirs(_install_path())

    os.mkdir(os.path.join(_dapdir, 'meta'))
    os.rename(os.path.join(_dapdir, 'meta.yaml'),
              os.path.join(_dapdir, 'meta', name + '.yaml'))

    for location in install_locations:
        for f in glob.glob(_dapdir + '/*'):
            dst = os.path.join(location, os.path.basename(f))
            if os.path.isdir(f):
                if not os.path.exists(dst):
                    os.mkdir(dst)
                for src_dir, dirs, files in os.walk(f):
                    dst_dir = src_dir.replace(f, dst)
                    if not os.path.exists(dst_dir):
                        os.mkdir(dst_dir)
                    for file_ in files:
                        src_file = os.path.join(src_dir, file_)
                        dst_file = os.path.join(dst_dir, file_)
                        shutil.copyfile(src_file, dst_file)
            else:
                shutil.copyfile(f, dst)
    try:
        shutil.rmtree(_dir)
    except:
        pass

    return [name] + installed
コード例 #13
0
def install_dap_from_path(path,
                          update=False,
                          update_allpaths=False,
                          first=True,
                          force=False,
                          nodeps=False,
                          reinstall=False,
                          __ui__=''):
    '''Installs a dap from a given path'''
    will_uninstall = False
    dap_obj = dapi.Dap(path)
    name = dap_obj.meta['package_name']

    if name in get_installed_daps():
        if not update and not reinstall:
            raise DapiLocalError(
                'DAP {name} is already installed. '
                'Run `da pkg list` to see it\'s location, or use --reinstall to ignore this check.'
                .format(name=name))
        elif not update_allpaths and name in get_installed_daps(
                _install_path()):
            will_uninstall = True
        elif update_allpaths and name in get_installed_daps():
            will_uninstall = True

    if update and update_allpaths:
        install_locations = []
        for pair in get_installed_daps_detailed()[name]:
            install_locations.append(pair['location'])
    else:
        install_locations = [_install_path()]

    # This should not happen unless someone did it on purpose
    for location in install_locations:
        if os.path.isfile(location):
            raise DapiLocalError(
                '{i} is a file, not a directory.'.format(i=_install_path()))

    _dir = tempfile.mkdtemp()

    old_level = logger.getEffectiveLevel()
    logger.setLevel(logging.ERROR)
    ok = dapi.DapChecker.check(dap_obj)
    logger.setLevel(old_level)

    if not ok:
        raise DapiLocalError(
            'The DAP you want to install has errors, not installing.')

    installed = []
    if first:
        if not force and not _is_supported_here(dap_obj.meta):
            raise DapiLocalError(
                '{0} is not supported on this platform (use --force to suppress this check)'
                .format(name))

        deps = set()
        if 'dependencies' in dap_obj.meta and not nodeps:
            for dep in dap_obj.meta['dependencies']:
                dep = _strip_version_from_dependency(dep)
                if dep not in get_installed_daps():
                    deps |= _get_all_dependencies_of(dep, force=force)
            for dep in deps:
                if dep not in get_installed_daps():
                    installed += install_dap(dep, first=False, __ui__=__ui__)

    dap_obj.extract(_dir)

    if will_uninstall:
        uninstall_dap(name, allpaths=update_allpaths, __ui__=__ui__)

    _dapdir = os.path.join(_dir, name + '-' + dap_obj.meta['version'])

    if not os.path.isdir(_install_path()):
        os.makedirs(_install_path())

    os.mkdir(os.path.join(_dapdir, 'meta'))
    os.rename(os.path.join(_dapdir, 'meta.yaml'),
              os.path.join(_dapdir, 'meta', name + '.yaml'))

    for location in install_locations:
        for f in glob.glob(_dapdir + '/*'):
            dst = os.path.join(location, os.path.basename(f))
            if os.path.isdir(f):
                if not os.path.exists(dst):
                    os.mkdir(dst)
                for src_dir, dirs, files in os.walk(f):
                    dst_dir = src_dir.replace(f, dst)
                    if not os.path.exists(dst_dir):
                        os.mkdir(dst_dir)
                    for file_ in files:
                        src_file = os.path.join(src_dir, file_)
                        dst_file = os.path.join(dst_dir, file_)
                        shutil.copyfile(src_file, dst_file)
            else:
                shutil.copyfile(f, dst)
    try:
        shutil.rmtree(_dir)
    except:
        pass

    return [name] + installed
コード例 #14
0
ファイル: dapicli.py プロジェクト: TomasTomecek/devassistant
def install_dap_from_path(path, update=False, first=True, force=False):
    '''Installs a dap from a given path'''
    will_uninstall = False
    dap_obj = dapi.Dap(path)
    if dap_obj.meta['package_name'] in get_installed_daps():
        if not update:
            raise Exception('Won\'t override already installed DAP.')
        else:
            will_uninstall = True
    if os.path.isfile(_install_path()):
        raise Exception(
            '{i} is a file, not a directory.'.format(i=_install_path()))

    _dir = tempfile.mkdtemp()
    old_level = logger.getEffectiveLevel()
    logger.setLevel(logging.ERROR)
    ok = dap_obj.check()
    logger.setLevel(old_level)
    if not ok:
        raise Exception('The DAP you want to install has errors, not installing.')

    installed = []
    if first:
        if not force and not _is_supported_here(dap_obj.meta):
            raise Exception(
                '{0} is not supported on this platform (use --force to suppress this check)'.
                format(dap_obj.meta['package_name']))
        deps = set()
        for dep in dap_obj.meta['dependencies']:
            dep = _strip_version_from_dependency(dep)
            if dep not in get_installed_daps():
                deps |= _get_all_dependencies_of(dep, force=force)
        for dep in deps:
            if dep not in get_installed_daps():
                installed += install_dap(dep, first=False)

    dap_obj.extract(_dir)
    if will_uninstall:
        uninstall_dap(dap_obj.meta['package_name'])
    _dapdir = os.path.join(_dir, dap_obj.meta['package_name'] + '-' + dap_obj.meta['version'])
    if not os.path.isdir(_install_path()):
        os.makedirs(_install_path())
    os.mkdir(os.path.join(_dapdir, 'meta'))
    os.rename(os.path.join(_dapdir, 'meta.yaml'),
        os.path.join(_dapdir, 'meta', dap_obj.meta['package_name'] + '.yaml'))
    for f in glob.glob(_dapdir + '/*'):
        dst = os.path.join(_install_path(), os.path.basename(f))
        if os.path.isdir(f):
            if not os.path.exists(dst):
                os.mkdir(dst)
            for src_dir, dirs, files in os.walk(f):
                dst_dir = src_dir.replace(f, dst)
                if not os.path.exists(dst_dir):
                    os.mkdir(dst_dir)
                for file_ in files:
                    src_file = os.path.join(src_dir, file_)
                    dst_file = os.path.join(dst_dir, file_)
                    shutil.copyfile(src_file, dst_file)
        else:
            shutil.copyfile(f, dst)
    try:
        shutil.rmtree(_dir)
    except:
        pass

    return [dap_obj.meta['package_name']] + installed