# Module `pl.dir`

Listing files in directories and creating/removing directory paths.

Dependencies: pl.utils, pl.path

Soft Dependencies: `alien`, `ffi` (either are used on Windows for copying/moving files)

## Functions

fnmatch (filename, pattern) | Test whether a file name matches a shell pattern.
filter (filenames, pattern) | Return a list of all file names within an array which match a pattern.
getfiles ([dirname='.'[, mask]]) | return a list of all files in a directory which match a shell pattern.
getdirectories ([dirname='.']) | return a list of all subdirectories of the directory.
copyfile (src, dest, flag) | copy a file.
movefile (src, dest) | move a file.
walk (root, bottom_up, follow_links) | return an iterator which walks through a directory tree starting at root.
rmtree (fullpath) | remove a whole directory tree.
makepath (p) | create a directory path.
clonetree (path1, path2, file_fun, verbose) | clone a directory tree.
dirtree (d) | return an iterator over all entries in a directory tree
getallfiles ([start_path='.'[, shell_pattern='*']]) | Recursively returns all the file starting at 'path'.

## Functions

fnmatch (filename, pattern)
  Test whether a file name matches a shell pattern. Both parameters are case-normalized if operating system is case-insensitive.

  ### Parameters:

  - filename string A file name.
  - pattern string A shell pattern. The only special characters are `'*'` and `'?'`: `'*'` matches any sequence of characters and `'?'` matches any single character.

  ### Returns:

  bool

  ### Raises:

  dir and mask must be strings
filter (filenames, pattern)
  Return a list of all file names within an array which match a pattern.

  ### Parameters:

  - filenames table An array containing file names.
  - pattern string A shell pattern (see fnmatch).

  ### Returns:

  List(string) List of matching file names.

  ### Raises:

  dir and mask must be strings
getfiles ([dirname='.'[, mask]])
  return a list of all files in a directory which match a shell pattern.

  ### Parameters:

  - dirname string A directory. (default '.')
  - mask string A shell pattern (see fnmatch). If not given, all files are returned. (optional)

  ### Returns:

  {string} list of files

  ### Raises:

  dirname and mask must be strings
getdirectories ([dirname='.'])
  return a list of all subdirectories of the directory.

  ### Parameters:

  - dirname string A directory. (default '.')

  ### Returns:

  {string} a list of directories

  ### Raises:

  dir must be a valid directory
copyfile (src, dest, flag)
  copy a file.

  ### Parameters:

  - src string source file
  - dest string destination file or directory
  - flag boolean true if you want to force the copy (default)

  ### Returns:

  bool operation succeeded

  ### Raises:

  src and dest must be strings
movefile (src, dest)
  move a file.

  ### Parameters:

  - src string source file
  - dest string destination file or directory

  ### Returns:

  bool operation succeeded

  ### Raises:

  src and dest must be strings
walk (root, bottom_up, follow_links)
  return an iterator which walks through a directory tree starting at root. The iterator returns (root,dirs,files) Note that dirs and files are lists of names (i.e. you must say path.join(root,d) to get the actual full path) If bottom_up is false (or not present), then the entries at the current level are returned before we go deeper. This means that you can modify the returned list of directories before continuing. This is a clone of os.walk from the Python libraries.

  ### Parameters:

  - root string A starting directory
  - bottom_up boolean False if we start listing entries immediately.
  - follow_links boolean follow symbolic links

  ### Returns:

  an iterator returning root,dirs,files

  ### Raises:

  root must be a directory
rmtree (fullpath)
  remove a whole directory tree. Symlinks in the tree will be deleted without following them.

  ### Parameters:

  - fullpath string A directory path (must be an actual directory, not a symlink)

  ### Returns:

  1. true or nil
  2. error if failed

  ### Raises:

  fullpath must be a string
makepath (p)
  create a directory path. This will create subdirectories as necessary!

  ### Parameters:

  - p string A directory path

  ### Returns:

  true on success, nil + errormsg on failure

  ### Raises:

  failure to create
clonetree (path1, path2, file_fun, verbose)
  clone a directory tree. Will always try to create a new directory structure if necessary.

  ### Parameters:

  - path1 string the base path of the source tree
  - path2 string the new base path for the destination
  - file_fun function an optional function to apply on all files
  - verbose boolean an optional boolean to control the verbosity of the output. It can also be a logging function that behaves like print()

  ### Returns:

  1. true, or nil
  2. error message, or list of failed directory creations
  3. list of failed file operations

  ### Raises:

  path1 and path2 must be strings

  ### Usage:

      clonetree('.','../backup',copyfile)

dirtree (d)
  return an iterator over all entries in a directory tree

  ### Parameters:

  - d string a directory

  ### Returns:

  an iterator giving pathname and mode (true for dir, false otherwise)

  ### Raises:

  d must be a non-empty string
getallfiles ([start_path='.'[, shell_pattern='*']])
  Recursively returns all the file starting at 'path'. It can optionally take a shell pattern and only returns files that match 'shell_pattern'. If a pattern is given it will do a case insensitive search.

  ### Parameters:

  - start_path string A directory. (default '.')
  - shell_pattern string A shell pattern (see fnmatch). (default '*')

  ### Returns:

  List(string) containing all the files found recursively starting at 'path' and filtered by 'shell_pattern'.

  ### Raises:

  start_path must be a directory

generated by LDoc 1.5.0