/sorg

A Go-based static site generator that compiles brandur.org.

Primary LanguageGoMIT LicenseMIT

sorg Build Status

A Go-based build script that compiles my personal website. This is the site's second incarnation, with the original being a Ruby/Sintra stack (sorg = "static org").

The site deploys automatically from its CI build in Travis as changes are committed to the master branch.

Clone

git clone https://github.com/brandur/sorg.git

Build

Install Go 1.9+, direnv set up and run blackswan, then:

go get -u github.com/ddollar/forego

cp .envrc.sample .envrc

direnv allow

# Used to run the test suite.
createdb sorg-test

# Compile Go executables.
make install

# Run an initial build of the site, look for build output in public/.
forego run make build

# Watch for changes in Go files and/or content and recompile and rebuild when
# one occurs.
forego start

The project can be deployed to s3 using:

pip install awscli

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export S3_BUCKET=...
make deploy

Cached photos can be fetched using:

make photographs-download

Development

Run the entire lifecycle like in CI:

make

Run the test suite:

make test

Run a single package's test suite or single test:

go test ./markdown
go test ./markdown -run TestCollapseHTML

Get more verbose output while running tests:

go test -v ./markdown

Vendoring dependencies

Dependencies are managed with dep. New ones are usually added with a basic ensure command:

dep ensure

Existing packages an be updated with an ensure -update:

dep ensure -update github.com/foo/bar