vcs-ignore: Library for handling files ignored by VCS systems.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

vcs-ignore is small Haskell library used to find, check and process files ignored by selected VCS.


[Skip to Readme]

Properties

Versions 0.0.1.0, 0.0.1.0, 0.0.2.0
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), containers, directory, exceptions, filepath, Glob, optparse-applicative, text, vcs-ignore [details]
License BSD-3-Clause
Copyright Copyright (c) 2020-2021 Vaclav Svejcar
Author Vaclav Svejcar
Maintainer vaclav.svejcar@gmail.com
Category Development
Home page https://github.com/vaclavsvejcar/vcs-ignore
Bug tracker https://github.com/vaclavsvejcar/vcs-ignore/issues
Source repo head: git clone https://github.com/vaclavsvejcar/vcs-ignore
Uploaded by xwinus at 2021-05-10T11:27:43Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for vcs-ignore-0.0.1.0

[back to package description]

vcs-ignore

vcs-ignore is small Haskell library used to find, check and process files ignored by selected VCS.

1. Table of Contents

2. Example of Use

Because this library is really simple to use, following example should be enough to understand how to use it for your project.

2.1. Listing all files/directories ignored by VCS

{-# LANGUAGE TypeApplications #-}

module Data.VCS.Test where

import Data.VCS.Ignore ( Git, Repo(..), listRepo )

example :: IO [FilePath]
example = do
  repo <- scanRepo @Git "path/to/repo"
  listRepo repo

2.2. Walking files/directories ignored by VCS

{-# LANGUAGE TypeApplications #-}

module Data.VCS.Test where

import Data.Maybe       ( catMaybes )
import System.Directory ( doesFileExist )
import Data.VCS.Ignore  ( Git, Repo(..), walkRepo )

onlyFiles :: IO [FilePath]
onlyFiles = do
  repo <- scanRepo @Git "path/to/repo"
  catMaybes <$> walkRepo repo walkFn
 where
  walkFn path = do
    file <- doesFileExist path
    pure (if file then Just path else Nothing)

2.3. Checking if path is ignored by VCS

{-# LANGUAGE TypeApplications #-}

module Data.VCS.Test where

import Data.VCS.Ignore ( Git, Repo(..) )

checkIgnored :: IO Bool
checkIgnored = do
  repo <- scanRepo @Git "path/to/repo"
  isIgnored repo "/some/path/.DS_Store"