96 lines
2.4 KiB
Markdown
96 lines
2.4 KiB
Markdown
|
# go-raft
|
||
|
|
||
|
Package **raft** provides tools for reading and writing [RAFT files](https://sourcecode.social/reiver/raft-format), for the Go programming language.
|
||
|
|
||
|
The **raft format** is a very simple and easy to understand **archive format** and **container format** that can combine multiple files into a single aggregate file.
|
||
|
|
||
|
**Archive Formats** and **Container Formats** have many use-case:
|
||
|
* backups,
|
||
|
* eBooks,
|
||
|
* file-systems,
|
||
|
* image galleries,
|
||
|
* journals,
|
||
|
* music albums,
|
||
|
* photo albums,
|
||
|
* software packages,
|
||
|
* website archives,
|
||
|
* _etc_.
|
||
|
|
||
|
Basically, any use-case where you need to combine multiple files into a single aggregate file.
|
||
|
|
||
|
The **raft format** is similar to other **archive formats**, such as the **ar format**, the **cpio format**, the **shar format**, the **tar format**, and the **WARC format** — but is designed to be easier to understand and implement than most (probably all) of the other **archive formats** and **container formats**.
|
||
|
|
||
|
The **raft format** is meant to be both programmer-legible and programmer-friendly.
|
||
|
|
||
|
For more information on the **raft format** see: https://sourcecode.social/reiver/raft-format
|
||
|
|
||
|
## Documention
|
||
|
|
||
|
Online documentation, which includes examples, can be found at: http://godoc.org/sourcecode.social/reiver/go-raft
|
||
|
|
||
|
[![GoDoc](https://godoc.org/sourcecode.social/reiver/go-raft?status.svg)](https://godoc.org/sourcecode.social/reiver/go-raft)
|
||
|
|
||
|
## Examples
|
||
|
|
||
|
Here is an example of writing a **raft** file:
|
||
|
|
||
|
```go
|
||
|
import "sourcecode.social/reiver/go-raft"
|
||
|
|
||
|
// ...
|
||
|
|
||
|
raftfile, err := raft.CreateFileWriter(filename)
|
||
|
if nil != er {
|
||
|
return err
|
||
|
}
|
||
|
defer raftfile.Close()
|
||
|
|
||
|
err := raftfile.EmbedFromFile(file)
|
||
|
if nil != err{
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
err := raftfile.EmbedFromFile(file1)
|
||
|
if nil != err{
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
err := raftfile.EmbedFromFile(file2)
|
||
|
if nil != err{
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
err := raftfile.EmbedFromFileRenamed("newname.jpeg", file2)
|
||
|
if nil != err{
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
err := raftfile.EmbedFromString("something.txt", "Hello world!\n\nHow are you?\n")
|
||
|
if nil != err{
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
err := raftfile.EmbedFromBytes("something.txt", []byte{'H','i','!','\n'})
|
||
|
if nil != err{
|
||
|
return err
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Import
|
||
|
|
||
|
To import package **raft** use `import` code like the follownig:
|
||
|
```
|
||
|
import "sourcecode.social/reiver/go-raft"
|
||
|
```
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
To install package **raft** do the following:
|
||
|
```
|
||
|
GOPROXY=direct go get https://sourcecode.social/reiver/go-raft
|
||
|
```
|
||
|
|
||
|
## Author
|
||
|
|
||
|
Package **raft** was written by [Charles Iliya Krempeaux](http://changelog.ca)
|