/gonzo

Go File Processing Framework.

Primary LanguageGoMIT LicenseMIT

Heads up! Gonzo is being polished at this stage so some APIs may change.

Gonzo GoDoc

File Processing Framework based on Go Pipelines.

Use Case

  • Web App Development
  • Log Analysis
  • Continuous Integration
  • Content Mangement Systems

Why?

For an explanation of why Gonzo was written read on its predecessor, slurp.

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 doucment.
  • Add tests