def ls(self, dirname, cheap_remote_ls=False): if not cheap_remote_ls and len(dirname) > len(self.root_dir): local_files = set([ name for name in Shell.run('ls -p {}'.format(dirname)).split('\n') if len(name) > 0 ]) remote_files = set([ name for name in Shell.run('rclone lsf "{}"'.format( self.rpath(dirname))).split('\n') if len(name) > 0 ]) for name in remote_files.difference(local_files): if name[-1] == '/': Shell.mkdir(os.path.join(dirname, name)) else: Shell.touch(os.path.join(dirname, name)) for name in local_files.difference(remote_files): log('rclone copyto "{}" "{}"'.format( os.path.join(dirname, name), os.path.join(self.rpath(dirname), name))) Shell.run('rclone copyto "{}" "{}"'.format( os.path.join(dirname, name), os.path.join(self.rpath(dirname), name))) return super(Rclone, self).ls(dirname)
def test_detect_fs_change(): Shell.touch('newfile') nvim.command('split new') nvim.command('quit') assert_num_content_line(3) nvim.input('l') Shell.rm('newfile') nvim.input('h') assert_num_content_line(2)
def test_detect_fs_change(): nvim.input(' ') Shell.touch('dir/b') Shell.mkdir('dir3') nvim.command('split new') nvim.command('quit') assert_content('dir', ind=0, hi='dir') assert_content('b', ind=4, level=1, hi='file') assert_content('dir3', ind=6, hi='dir') assert_num_content_line(7) Shell.rm('dir3') nvim.input('lh') assert_num_content_line(6)
def prepare_test_dir(dirname): Shell.mkdir(dirname) os.chdir(dirname) Shell.mkdir('dir/subdir') Shell.mkdir('dir/subdir/subsubdir') Shell.mkdir('dir/subdir2') Shell.touch('dir/a') Shell.touch('.a') Shell.mkdir('dir2/') # The following should be removed when rclone fix "not copying empty directories" bug. Shell.touch('dir/subdir/subsubdir/placeholder') Shell.touch('dir/subdir2/placeholder') Shell.touch('dir/subdir2/placeholder')
def touch(self, name): Shell.touch(name)
def touch(self, name): Shell.touch(name) Shell.run('rclone copyto "{}" "{}"'.format( name, os.path.join(self.rpath(name), os.path.basename(name))))