For more details, see the README. See also the demo app ./examples/Main.elm
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"))Information used in the tar header.
You may use defaultMetadata as a starting point, modifying only what is needed.
Fields:
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" }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.Encoders.
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
Example: