initial commits
						commit
						d20ea47b84
					
				| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
Copyright (c) 2024 Charles Iliya Krempeaux :: http://changelog.ca/
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,95 @@
 | 
			
		|||
# 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
 | 
			
		||||
 | 
			
		||||
[](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)
 | 
			
		||||
		Loading…
	
		Reference in New Issue