From f49cd711a063136e6978b6a4bb2686d96c725bc8 Mon Sep 17 00:00:00 2001 From: Joe Richey Date: Fri, 31 Mar 2017 10:14:20 -0700 Subject: cmd/fscrypt: Initial stub program and docs This commit adds in a stub fscrypt program. The binary just tells the time and the tests do nothing, but the Makefile will build them! This commit also adds documentation to the README that explains how to get, build, run, test, format, lint, and install the code. Also note that the executable is now in the cmd/fscrypt directory. The library implementing the core functionality will be at the root. This is essentially point 2 of https://medium.com/@benbjohnson/structuring-applications-in-go-3b04be4ff091 Change-Id: Ib7bd782e458bdf3db456beb978be4c75b4734561 --- README.md | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index c6bfa6a..37497a4 100644 --- a/README.md +++ b/README.md @@ -55,18 +55,31 @@ background. `fscrypt` has a [design document](https://goo.gl/55cCrI) that discusses many of the higher level design choices that were made. Specifically, `fscrypt` contains the following functionality: -* TODO +* Telling the time (but this is a stub program) ## Building - -Get the source by running `git clone [REDACTED] fscrypt`. -You need to [setup your `GOPATH`](https://golang.org/doc/code.html#GOPATH) and -clone the repository into `$GOPATH/src/fscrypt`. +`fscrypt` is written in Go, so to build the program you will need to +[setup Go](https://golang.org/doc/install), +[setup your `GOPATH`](https://golang.org/doc/code.html#GOPATH), and clone the +repository into the correct location by running +```shell +git clone [REDACTED] $GOPATH/src/fscrypt +``` +You will also want to add `$GOPATH/bin` to your `$PATH`. + +Once this is setup, you can run `make fscrypt` to build the executable in +`build/fscrypt`. The only other build dependencies are `make` and a C compiler. +Pass `"LDFLAGS += -static"` to `make` to get a static executable. If a Go +project contains C code, the go compiler produces a dynamically linked binary by +default. ## Running and Installing -TODO +`fscrypt` is a standalone binary, and it currently has no runtime dependencies. +Installing it just requires placing it in your path or running `make install`. +Change `$GOBIN` to change the install location of `fscrypt`; by default it is +installed to `$GOPATH/bin`. ## Example Usage @@ -74,7 +87,21 @@ TODO ## Contributing -TODO +If you are making changes to the `fscrypt` component, you will need the +following additional commands: +* `make go` - Checks that all the go files build and tests pass. +* `make format` - Formats all of the go code. +* `make lint` - Checks the code for style errors, requires + [`golint`](https://github.com/golang/lint) to be installed. +* `make all` - Does the above three commands and builds `fscrypt`. + +Make sure that `$GOPATH/bin` is in you `$PATH`. All the above dependencies can +be installed with: +```bash +> go get -u github.com/golang/lint/golint +``` + +These commands should be run before submitting any changes. ## Known Issues -- cgit v1.2.3