Exemple #1
0
def transfer(_, **data):
    backup_directory = os.path.join(Path.data_path(), '.echomesh-xfer')

    try:
        shutil.rmtree(backup_directory)
    except OSError:
        pass

    directories = data.get('directories', [])
    if '' in directories:
        directories = os.listdir(Path.data_path())

    for directory in directories:
        parent = os.path.dirname(os.path.join(backup_directory, directory))
        MakeDirs.parent_makedirs(parent)
        shutil.move(os.path.join(Path.data_path(), directory), parent)

    for f, value in six.iteritems(data.get('files')):
        fname = os.path.join(Path.data_path(), f)
        MakeDirs.parent_makedirs(fname)
        with open(fname, 'w') as o:
            o.write(value['contents'])
        os.utime(fname, (value['atime'], value['mtime']))

    if Settings.get('execution', 'delete_backups_after_transfer'):
        try:
            shutil.rmtree(backup_directory)
        except:
            pass
Exemple #2
0
def _get_files_to_transfer(path):
    files = set()
    directories = set()

    for p in path:
        f = os.path.join(Path.data_path(), p)
        if not os.path.exists(f):
            raise Exception("Command file %s doesn't exist.", f)
        walk = os.walk(f)
        if walk:
            directories.add(p)
            for root, _, fs in walk:
                if not root.startswith('.'):
                    for ffs in fs:
                        if (_TRANSFER_ALL_FILES or
                            DataFileName.has_extension(ffs)):
                            files.add(os.path.join(Path.data_path(), root, ffs))
            LOGGER.vdebug('Transferring directory %s', p)
        else:
            LOGGER.vdebug('Transferring file %s', p)
            files.add(f)

    return _get_files_table(files), directories
Exemple #3
0
def _get_files_to_transfer(path):
    files = set()
    directories = set()

    for p in path:
        f = os.path.join(Path.data_path(), p)
        if not os.path.exists(f):
            raise Exception("Command file %s doesn't exist.", f)
        walk = os.walk(f)
        if walk:
            directories.add(p)
            for root, _, fs in walk:
                if not root.startswith('.'):
                    for ffs in fs:
                        if (_TRANSFER_ALL_FILES
                                or DataFileName.has_extension(ffs)):
                            files.add(os.path.join(Path.data_path(), root,
                                                   ffs))
            LOGGER.vdebug('Transferring directory %s', p)
        else:
            LOGGER.vdebug('Transferring file %s', p)
            files.add(f)

    return _get_files_table(files), directories
Exemple #4
0
def _scores(path, resolve=False, context='all', recursive=False,
            indent='', printed=False, top_level=True):
    if context == 'all':
        for c in Context.CONTEXTS:
            printed = _scores(path, resolve, c, recursive, indent) or printed
    else:
        context = Context.resolve(context)
        pathdir = os.path.join(Path.data_path(), context, 'score', path)
        if os.path.isdir(pathdir):
            printed_this_time = False
            for f in sorted(os.listdir(pathdir)):
                joined_f = os.path.join(pathdir, f)
                is_dir = os.path.isdir(joined_f)
                if not (is_dir or DataFileName.has_extension(f)):
                    continue
                if not printed_this_time:
                    printed_this_time = True
                    if not printed:
                        LOGGER.info(indent + ELEMENT_FORMAT, 'File name',
                                    ' Bytes', 'Accessed', 'Modified', 'Created')
                        printed = True
                    elif top_level:
                        LOGGER.info('\n')
                    if top_level:
                        LOGGER.info('    %s/%s:', context, path)
                if is_dir:
                    if recursive:
                        LOGGER.info('')
                    LOGGER.info('      %s/', f)
                    if recursive:
                        _scores(os.path.join(path, f), resolve, context,
                                recursive, indent + INDENT, printed=True,
                                top_level=False)
                        LOGGER.info('')

                else:
                    stat = os.stat(joined_f)
                    LOGGER.info(indent + ELEMENT_FORMAT,
                                 '    ' + f, SizeName.size_name(stat.st_size),
                                 _time(stat.st_atime),
                                 _time(stat.st_mtime),
                                 _time(stat.st_ctime))
    return printed