Example #1
0
    def go(self):

        db = get_easy_algo_db()

        extra = self.options.get_extra()
        if len(extra) > 1:
            msg = 'Only one extra param accepted.'
            raise dtu.DTUserError(msg)

        if len(extra) == 1:
            query = extra[0]
        else:
            query = 'all'

        persons = db.query_and_instance('person', query)

        if self.options.roster:
            out_file = dtu.expand_all(self.options.roster)
            outd = os.path.dirname(out_file)
            roster = create_roster(persons, outd)
            dtu.write_data_to_file(roster, out_file)
        else:
            # instance ll
            tags = set()
            for p in persons.values():
                tags.update(p.get_tags())

            print(list(persons))
            print('tags: %s' % list(tags))
            table = table_people(persons)
            print(table)
Example #2
0
def make_shortcuts_main():
    if len(sys.argv) != 2:
        msg = 'Expected an argument, the output directory.'
        raise dtu.DTUserError(msg)

    outd = sys.argv[1]

    scripts = list(find_cmds_to_shortcut())
    for res in scripts:
        filename = os.path.join(outd, 'dt-%s-%s' % (res.package, res.script))

        script = """
#!/bin/bash

# Autogenerated file - DO NOT EDIT

# This file was generated by the command {command}
# because the file {filename}
# included the tag "{tag}".

rosrun {package} {script} "$@"

    """
        d = {}
        d['package'] = res.package
        d['filename'] = res.filename
        d['script'] = res.script
        d['command'] = sys.argv[0]
        d['tag'] = tag

        script = script.format(**d).strip()

        dtu.write_data_to_file(script, filename)
        make_executable(filename)
Example #3
0
    def define_jobs_context(self, context):
        outdir = self.options.outdir
        if outdir is None:
            outdir = '.'
            msg = 'Option "--outdir" not passed. Will copy to current directory.'
            self.warn(msg)

        max_images = self.options.max_images
        only_camera = not self.options.all_topics
        write_frames = self.options.write_frames
        extra = self.options.get_extra()

        if not extra:
            query = '*'
        else:
            query = extra

        db = self.get_easy_logs_db()
        logs = db.query(query)

        self.info('Found %d logs.' % len(logs))
        logs_valid = OrderedDict()
        for log_name, log in logs.items():
            if log.valid:
                logs_valid[log_name] = log

        if not logs_valid:
            msg = 'None of the logs were valid.'
            raise dtu.DTUserError(msg)

        s = format_logs(logs_valid)
        self.info(s)

        od = self.options.output

        for log_name, log in logs_valid.items():
            out = os.path.join(od, log_name)

            log_downloaded = download_if_necessary(log)

            context.comp(work,
                         log_downloaded,
                         out,
                         max_images,
                         only_camera=only_camera,
                         write_frames=write_frames,
                         job_id=log_name)
Example #4
0
    def go(self):
        extra = self.options.get_extra()
        if not extra:
            query = '*'
        else:
            if len(extra) > 1:
                msg = 'Expected only one extra argument.'
                raise dtu.DTUserError(msg)
            query = extra[0]

        db = self.get_easy_logs_db()
        logs = db.query(query)

        # for k in logs.values():
        #     print yaml.dump(k)
        self.info('Found %d logs.' % len(logs))
        self.show_info(logs)
Example #5
0
    def go(self):
        extra = self.options.get_extra()
        if not extra:
            msg = 'Please specify a log.'
            raise dtu.DTUserError(msg)
        else:
            query = extra

        db_cloud = self.get_easy_logs_db()

        try:
            logs = db_cloud.query(query)
        except dtu.DTNoMatches as e:
            msg = 'Could not find the logs matching the query.'
            dtu.raise_wrapped(dtu.DTUserError, e, msg, compact=True)

        for id_log, log in logs.items():
            download_if_necessary(log)
    def define_jobs_context(self, context):
        easy_algo_db = get_easy_algo_db()

        expect = self.options.expect
        write_to_db = self.options.write

        delete = not self.options.debug_no_delete

        if not expect in RTCheck.CHECK_RESULTS:
            msg = 'Invalid expect status %s; must be one of %s.' % (expect, RTCheck.CHECK_RESULTS)
            raise dtu.DTUserError(msg)

        query = self.options.tests
        regression_tests = easy_algo_db.query('regression_test', query, raise_if_no_matches=True)

        for rt_name in regression_tests:
            rt = easy_algo_db.create_instance('regression_test', rt_name)

            easy_logs_db = self.get_easy_logs_db()
            c = context.child(rt_name)

            outd = os.path.join(self.options.output, 'regression_tests', rt_name)
            jobs_rt(c, rt_name, rt, easy_logs_db, outd, expect, write_data_to_db=write_to_db, delete=delete)
Example #7
0
    def go(self):
        extra = self.options.get_extra()
        if not extra:
            query = '*'
        else:
            if len(extra) > 1:
                msg = 'Expected only one extra argument.'
                raise dtu.DTUserError(msg)
            query = extra[0]

        db = self.get_easy_logs_db()
        logs = db.query(query)

        self.info('Found %d logs.' % len(logs))
        outdir = self.options.outdir

        if outdir is None:
            outdir = '.'
            msg = 'Option "--outdir" not passed. Will copy to current directory.'
            self.warn(msg)

        if not os.path.exists(outdir):
            dtu.mkdirs_thread_safe(outdir)

        for id_log, log in logs.items():
            log = download_if_necessary(log)
            out = os.path.join(outdir, id_log + '.bag')
            if os.path.exists(out):
                print(out)
                continue

            try:
                filename = get_local_bag_file(log)
                shutil.copy(filename, out)
                print(out)
            except NotAvailableLocally:
                dtu.logger.error('No local file for %s' % id_log)