packages feed

atomic-write-0.1.0.1: atomic-write.cabal

name:                atomic-write
version:             0.1.0.1
synopsis:            Atomically write to a file

description:
  .
  Atomically write to a file on POSIX-compliant systems while preserving
  permissions.
  .
  On most Unix systems, `mv` is an atomic operation. This makes it simple to write
  to a file atomically just by using the mv operation. However, this will
  destroy the permissions on the original file. This library does the following
  to preserve permissions while atomically writing to a file:
  .
  * If an original file exists, take those permissions and apply them to the
    temp file before `mv`ing the file into place.
  .
  * If the original file does not exist, create a following with default
    permissions (based on the currently-active umask).
  .
  This way, when the file is `mv`'ed into place, the permissions will be the ones
  held by the original file.
  .
  This library is based on similar implementations found in common libraries in
  Ruby and Python:
  .
  * <http://apidock.com/rails/File/atomic_write/class Ruby on Rails includes a similar method called atomic_write>
  .
  * <https://github.com/chef/chef/blob/c4631816132fcfefaba3d123a1d0dfe8bc2866bb/lib/chef/file_content_management/deploy/mv_unix.rb#L23:L71 Chef includes atomic update functionality>
  .
  * <https://github.com/sashka/atomicfile There is a python library for atomically updating a file>
  .
  Note that at this time Windows is not supported, however we would appreciate
  contributions to the <http://github.com/stackbuilders/atomic-write github repository>.
license:             MIT
license-file:        LICENSE
author:              Justin Leitgeb
maintainer:          justin@stackbuilders.com
copyright:           2015 Stack Builders Inc.
category:            System
build-type:          Simple
-- extra-source-files:
cabal-version:       >=1.10

library
  exposed-modules:     System.AtomicWrite
  -- other-modules:
  -- other-extensions:
  build-depends:         base >=4.5 && <4.8
                       , temporary
                       , unix
                       , directory
                       , filepath

  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:         -Wall

test-suite atomic-write-test
  type: exitcode-stdio-1.0
  hs-source-dirs: spec, src
  main-is: Spec.hs

  build-depends:       base >=4.5 && <4.8
                     , temporary
                     , unix
                     , directory
                     , filepath

                     , hspec

  default-language:    Haskell2010
  ghc-options:         -Wall


source-repository head
  type:     git
  location: https://github.com/stackbuilders/atomic-file