Heads up! Gonzo is being polished at this stage so some APIs may change.
Gonzo
File Processing Framework based on Go Pipelines.
Design
Gonzo is made up of File, Context, Stages, and Pipes.
File
File is an interface that mimics os.File with some additional APIs.
Pipes
Pipe holde a channel of files, a context for logging and deadlines, and a simple interface to pass files through a Stage.
Stages
Stages are where files are handled for processing.
Currently the follow stages are implemented, but writing new stages are supper simple.
ace Compile Ace templates.
archive/tar Work with tar archives.
archive/zip Work with zip Archives.
css Minify CSS
filter A collection of stages for filtering files.
fs Read and Write from Disk.
gcss Compile gcss to css.
gin A Go Server livereload utlity.
github Grab files from github.
html Minify HTML
js Minify JavaScript
livereload Livereload
passthrough Pass files through any executable.
resources go-resources binding.
s3 Put files to S3.
scss Compile SCSS to CSS.
util Some helpful utlites.
watch Watch files for change.
web Grab files from any URL.
Example
To compile scss files, minify the output, write it to disk, lifereload in browser, and upload it to Amazon S3, this all you need:
s3conf := s3.Config{
AccessKey: os.Getenv("S3_ACCESSKEY"),
SecretKey: os.Getenv("S3_SECRETE"),
Name: os.Getenv("S3_NAME"),
Region: s3.APSoutheast2,
Perm: s3.PublicRead,
}
lr := livereload.New(livereload.Config{LiveCSS: true})
err := s.Src(context.Background(), "app/style.scss").Then(
util.Trim("app"),
scss.Compile(),
css.Minify(),
fs.Dest("./public/assets/"),
lr.Reload(),
s3.Put(s3conf),
)
//Handle any _fatal_ error.
TODO:
- Finish this document.
- Add tests