From d20ea47b84d54a58d7dacb6e8f4e6d30581e620b Mon Sep 17 00:00:00 2001 From: Charles Iliya Krempeaux Date: Tue, 23 Jan 2024 06:01:27 -0800 Subject: [PATCH] initial commits --- LICENSE | 19 +++++++++++ README.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..50254e5 --- /dev/null +++ b/LICENSE @@ -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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0fcfdc8 --- /dev/null +++ b/README.md @@ -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 + +[![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)