Git.Commands.LsFiles (git v0.4.0)

Copy Markdown View Source

Implements the Git.Command behaviour for git ls-files.

Lists information about files in the index and working tree. Supports filtering by cached, deleted, modified, untracked (others), ignored, staged, unmerged, and killed files.

Summary

Functions

Returns the argument list for git ls-files.

Parses the output of git ls-files.

Types

t()

@type t() :: %Git.Commands.LsFiles{
  abbrev: boolean() | non_neg_integer() | nil,
  cached: boolean(),
  debug: boolean(),
  deduplicate: boolean(),
  deleted: boolean(),
  error_unmatch: boolean(),
  exclude: String.t() | nil,
  exclude_from: String.t() | nil,
  exclude_standard: boolean(),
  full_name: boolean(),
  ignored: boolean(),
  killed: boolean(),
  modified: boolean(),
  others: boolean(),
  paths: [String.t()],
  stage: boolean(),
  unmerged: boolean()
}

Functions

args(command)

@spec args(t()) :: [String.t()]

Returns the argument list for git ls-files.

Builds the argument list from the struct fields, appending boolean flags and string options as needed. Path patterns are appended after --.

Examples

iex> Git.Commands.LsFiles.args(%Git.Commands.LsFiles{})
["ls-files"]

iex> Git.Commands.LsFiles.args(%Git.Commands.LsFiles{others: true, exclude_standard: true})
["ls-files", "--others", "--exclude-standard"]

iex> Git.Commands.LsFiles.args(%Git.Commands.LsFiles{modified: true, paths: ["src/"]})
["ls-files", "--modified", "--", "src/"]

parse_output(stdout, exit_code)

@spec parse_output(String.t(), non_neg_integer()) ::
  {:ok, [String.t()]} | {:error, {String.t(), non_neg_integer()}}

Parses the output of git ls-files.

On success (exit 0), returns {:ok, list_of_file_paths}. On failure, returns {:error, {stdout, exit_code}}.