class Git::Status

def construct_status

def construct_status
  # Lists all files in the index and the worktree
  # git ls-files --stage
  # { file => { path: file, mode_index: '100644', sha_index: 'dd4fc23', stage: '0' } }
  @files = @base.lib.ls_files
  # Lists files in the worktree that are not in the index
  # Add untracked files to @files
  fetch_untracked
  # Lists files that are different between the index vs. the worktree
  fetch_modified
  # Lists files that are different between the repo HEAD vs. the worktree
  fetch_added
  @files.each do |k, file_hash|
    @files[k] = StatusFile.new(@base, file_hash)
  end
end