docs: def deploy_local(self, dotfiles, target_root=None):
          """Deploy dotfiles to a local path."""
          if target_root is None:
              target_root = self.args.path
  
          for source_path, target_path in dotfiles.items():
              source_path = path.join(self.source, source_path)
              target_path = path.join(target_root, target_path)
  
              if path.isfile(target_path) or path.islink(target_path):
                  self.log.debug('Removing existing file at %s', target_path)
                  os.unlink(target_path)
  
              elif path.isdir(target_path):
                  self.log.debug('Removing existing dir at %s', target_path)
                  shutil.rmtree(target_path)
  
              parent_dir = path.dirname(target_path)
              if not path.isdir(parent_dir):
                  self.log.debug('Creating parent dir %s', parent_dir)
                  os.makedirs(parent_dir)
  
              if self.args.copy:
                  if path.isdir(source_path):
                      self.log.debug('Copying file %s to %s',
                                     source_path, target_path)
                      shutil.copytree(source_path, target_path)
                  else:
                      self.log.debug('Copying dir %s to %s',
                                     source_path, target_path)
                      shutil.copy(source_path, target_path)
  
              else:
                  self.log.debug('Symlinking %s -> %s', target_path, source_path)
                  os.symlink(source_path, target_path)