File: atomic-write.cabal

package info (click to toggle)
haskell-atomic-write 0.2.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 204 kB
  • sloc: haskell: 1,174; makefile: 3
file content (117 lines) | stat: -rw-r--r-- 4,773 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
name:                atomic-write
version: 0.2.1.0
synopsis:            Atomically write to a file
homepage:            https://github.com/stackbuilders/atomic-write
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>
  .
  To use `atomic-write`, import the module corresponding to the type you wish to
  write atomically, e.g., to write a (strict) ByteString atomically:
  .
  > import System.AtomicWrite.Writer.ByteString
  .
  Then you can use the atomicWriteFile function that accepts a `FilePath` and a
  `ByteString`, e.g.:
  .
  > atomicWriteFile myFilePath myByteString
license:             MIT
license-file:        LICENSE
author:              Justin Leitgeb
maintainer:          support@stackbuilders.com
copyright:           2015-2019 Stack Builders Inc.
category:            System
build-type:          Simple
cabal-version:       >=1.10
tested-with:
  GHC ==8.4.3, GHC ==8.10.7, GHC ==9.4.7

bug-reports:         https://github.com/stackbuilders/atomic-write/issues

library
  exposed-modules:       System.AtomicWrite.Writer.ByteString
                       , System.AtomicWrite.Writer.ByteString.Binary
                       , System.AtomicWrite.Writer.ByteStringBuilder
                       , System.AtomicWrite.Writer.LazyByteString
                       , System.AtomicWrite.Writer.LazyByteString.Binary
                       , System.AtomicWrite.Writer.String
                       , System.AtomicWrite.Writer.String.Binary
                       , System.AtomicWrite.Writer.Text
                       , System.AtomicWrite.Writer.Text.Binary
                       , System.AtomicWrite.Writer.LazyText
                       , System.AtomicWrite.Writer.LazyText.Binary

  other-modules:       System.AtomicWrite.Internal

  build-depends:         base >= 4.5 && < 5.0
                       , temporary >= 1.3 && < 1.4
                       , unix-compat >= 0.5 && < 1.0
                       , directory >= 1.3 && < 1.4
                       , filepath >= 1.4 && < 1.5
                       , text >= 1.2 && < 3.0
                       , bytestring >= 0.10.4 && < 0.13.0

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


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

  other-modules:       System.AtomicWrite.Writer.ByteStringSpec
                     , System.AtomicWrite.Writer.ByteString.BinarySpec
                     , System.AtomicWrite.Writer.ByteStringBuilderSpec
                     , System.AtomicWrite.Writer.LazyByteStringSpec
                     , System.AtomicWrite.Writer.LazyByteString.BinarySpec
                     , System.AtomicWrite.Writer.StringSpec
                     , System.AtomicWrite.Writer.String.BinarySpec
                     , System.AtomicWrite.Writer.TextSpec
                     , System.AtomicWrite.Writer.Text.BinarySpec
                     , System.AtomicWrite.Writer.LazyTextSpec
                     , System.AtomicWrite.Writer.LazyText.BinarySpec

  build-depends:       base >= 4.5 && < 5.0
                     , atomic-write
                     , temporary
                     , unix-compat
                     , filepath
                     , text
                     , bytestring
                     , hspec >= 2.5 && < 2.12

  build-tools: hspec-discover >= 2.0 && < 3.0

  default-language:    Haskell2010
  ghc-options:         -Wall


source-repository head
  type:     git
  location: git@github.com:stackbuilders/atomic-write.git