For more details, see the README. See also the demo app ./examples/Main.elm
createArchive : List ( Metadata, Data ) -> Bytes
Example:
data1 : ( Metadata, Data )
data1 =
( { defaultMetadata | filename = "one.txt" }
, StringData "One"
)
data2 : ( Metadata, Data )
data2 =
( { defaultMetadata | filename = "two.txt" }
, StringData "Two"
)
createArchive [data1, data2]
extractArchive : Bytes -> List ( Metadata, Data )
Decode an archive into its constituent files.
Use StringData String
for text data, BinaryData Bytes
for binary data:
import Bytes.Encode as Encode
StringData "This is a test"
BinaryData (Encode.encode (Encode.string "foo"))
{ filename : String
, mode : Mode
, ownerID : Basics.Int
, groupID : Basics.Int
, fileSize : Basics.Int
, lastModificationTime : Basics.Int
, linkIndicator : Link
, linkedFileName : String
, userName : String
, groupName : String
, fileNamePrefix : String
}
Information used in the tar header.
You may use defaultMetadata
as a starting point, modifying only what is needed.
Fields:
defaultMetadata : Metadata
Defined as
defaultMetadata : Metadata
defaultMetadata =
{ filename = "test.txt"
, mode = defaultMode
, ownerID = 501
, groupID = 123
, fileSize = 20
, lastModificationTime = 1542665285
, linkIndicator = NormalFile
, linkedFileName = "bar.txt"
, userName = "anonymous"
, groupName = "staff"
, fileNamePrefix = "abc"
}
Example usage:
myMetadata =
{ defaultMetadata | filename = "Test.txt" }
{ owner : FilePermission
, group : FilePermission
, other : FilePermission
, setUserID : Basics.Bool
, setGroupID : Basics.Bool
}
defaultMode : Mode
Default mode
defaultMode : Mode
defaultMode =
{ owner = { read = True, write = True, execute = True }
, group = { read = True, write = True, execute = False }
, other = { read = True, write = False, execute = False }
, setUserID = False
, setGroupID = False
}
Convenient for integration with other Bytes.Encode.Encoder
s.
encodeFiles : List ( Metadata, Data ) -> Bytes.Encode.Encoder
Encoder for a list of files
import Bytes
import Bytes.Encode as Encode
import Tar exposing (defaultMetadata)
metaData1 : Tar.Metadata
metaData1 =
{ defaultMetadata | filename = "a.txt" }
content1 : String
content1 =
"One two three\n"
metaData2 : Tar.Metadata
metaData2
{ defaultMetadata | filename = "c.binary" }
content2 : Bytes.Bytes
content2 =
"1345"
|> Encode.string
|> Encode.encode
result : Bytes
result =
[ ( metaData1, Tar.StringData content1 )
, ( metaData2, Tar.BinaryData content2 )
]
|> Tar.encodeFiles
|> Bytes.Encode.encode
encodeTextFile : Metadata -> String -> Bytes.Encode.Encoder
encodeTextFiles : List ( Metadata, String ) -> Bytes.Encode.Encoder