Skip to content

omeid/gonzo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Gonzo GoDoc

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

Releases

No releases published

Packages

No packages published

Languages