04e64762ceefbe881457eb5da4b1a6f53182734a — Trevor Slocum 12 days ago 7313ce5 master v0.1.3
Improve documentation
9 files changed, 165 insertions(+), 96 deletions(-)

M CHANGELOG
A CONFIGURATION.md
A OPTIONS.md
M README.md
D branch.go
D cli.go
M config_test.go
M go.mod
M go.sum
M CHANGELOG => CHANGELOG +3 -0
@@ 1,3 1,6 @@+0.1.3:
+ - Allow notebooks to be served publicly
+ 
  0.1.2:
  - Add note options interface
  - Add option to show dismissed list items

A CONFIGURATION.md => CONFIGURATION.md +91 -0
@@ 0,0 1,91 @@
+ # Notebook initialization
+ 
+ stick notebooks are [git repositories](https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F) containing [Markdown](https://www.markdownguide.org/) formatted text files.
+ 
+ Note that while stick uses git, it is not required to have git installed.
+ 
+ Initialize one or more notebooks, specifying where the repository should be created.
+ 
+ If you would like to use an existing git repository, you may skip this step.
+ 
+ ```
+ stick init /home/stick/notes/johnsnotes
+ ```
+ 
+ # Configuring stick.yml
+ 
+ stick is configured via ~/.config/stick/stick.yml (or elsewhere when specified with the --config flag)
+ 
+ ## salt
+ 
+ Used when hashing data (set to a random string)
+ 
+ ## serve
+ 
+ Serve notebooks on this address (host:port)
+ 
+ ## authors
+ 
+ List of authors, specified by email and name
+ 
+ ## notebooks
+ 
+ List of notebooks, specified by label.  Options include:
+ 
+ ### repo
+ 
+ Path to git repository
+ 
+ ### serve
+ 
+ List of authors (specified by email) and their access level, which is one of the following:
+ 
+ - read
+ - write
+ 
+ Including an author named "public" will share the notebook publicly.
+ 
+ # Example stick.yml
+ 
+ ```yaml
+ # Used when hashing data (set to a random string)
+ salt: xXxsh3cr3txXx
+ 
+ # Serve notes on localhost only
+ # Set to :9991 to serve on all interfaces (not recommended, use a reverse proxy instead)
+ serve: localhost:9991
+ 
+ # Authors are defined by email and name (used when committing)
+ authors:
+   john@hotmail.com: John Doe
+   jane@aol.com: Jane Doe
+ 
+ # Notebooks can be shared between authors with varying access levels
+ # When an access level isn't specified, read-only is assumed
+ # John's notebook allows read/write access to himself and read-only access to Jane
+ notebooks:
+   John's notes:
+     repo: /home/stick/notes/johnsnotes
+     serve:
+       - john@hotmail.com: write
+       - jane@aol.com
+ 
+   Jane's notes:
+     repo: /home/stick/notes/janesnotes
+     serve:
+       - jane@aol.com: write
+       - john@hotmail.com
+ 
+   Shared notes:
+     repo: /home/stick/notes/shared
+     serve:
+       - john@hotmail.com: write
+       - jane@aol.com: write
+ 
+   Public notes:
+     repo: /home/stick/notes/public
+     serve:
+       - john@hotmail.com: write
+       - jane@aol.com: write
+       - public
+ ```

A OPTIONS.md => OPTIONS.md +42 -0
@@ 0,0 1,42 @@
+ stick allows note display and behavior to be customized.
+ 
+ # Options directive
+ 
+ Note options are specified with the **options directive**:
+ 
+ ```
+ [//]: # (list,sort)
+ 
+ * [ ] Eggs
+ * [ ] Flour
+ * [X] Milk
+ ```
+ 
+ This directive must be the first line of the note. When using the web interface
+ to change note options, this directive will be added and updated automatically.
+  (You do not need to memorize it.)
+ 
+ **Note:** When viewing this documentation in a rendered format, the directive will
+ not be visible.  It is shown below with an added space before the colon.
+ 
+ ```
+ [//] : # (list,sort)
+ ```
+ 
+ # Available options
+ 
+ #### Pin
+ 
+ Pinned notes will appear in another notebook labeled "Pinned"
+ 
+ #### List
+ 
+ Emphasize and remove duplicate list items
+ 
+ #### Sort
+ 
+ Sort list items alphabetically
+ 
+ #### Dismissed
+ 
+ Show dismissed list items

M README.md => README.md +12 -75
@@ 5,6 5,12 @@   Shareable Git-backed Markdown-formatted notes
  
+ ## Features
+ 
+ - Notebooks are standard git repositories containing .md files
+ - Notebooks may be used privately, shared with one or more users privately, or shared publicly
+ - Notes may be customized (e.g., to-do style lists with automatic sorting and de-duplication)
+ 
  ## Demo
  
  [**Try stick**](https://stick.rocketnine.space/#login/c89f5381659ad34bd84967fdbbb5e76834495063dc93ed3902bf4e186f4def90)


@@ 17,7 23,9 @@   ### Download
  
- [**Download stick**](https://stick.rocketnine.space/download/) (Windows and Linux binaries are available)
+ [**Download stick**](https://stick.rocketnine.space/download/)
+ 
+ Windows and Linux binaries are available.
  
  ### Compile
  


@@ 27,49 35,7 @@   ## Configure
  
- Initialize a notebook by creating an empty git repository:
- 
- ```
- stick init /home/stick/notes/johnsnotes
- ```
- 
- Configure stick via ~/.config/stick/stick.yml (or elsewhere by using --config later)
- 
- ```yaml
- # Used when hashing data (set to a random string)
- salt: xXxsh3cr3txXx
- 
- # Serve notes on localhost only
- # Set to :9991 to serve on all interfaces (not recommended, use a reverse proxy instead)
- serve: localhost:9991
- 
- # Authors are defined by email and name (used when committing)
- authors:
-   john@hotmail.com: John Doe
-   jane@aol.com: Jane Doe
- 
- # Notebooks can be shared between authors with varying access levels
- # When an access level isn't specified, read/write is assumed
- # John's notebook allows read/write access to himself and read-only access to Jane
- notebooks:
-   John's notes:
-     repo: /home/stick/notes/johnsnotes
-     serve:
-       - john@hotmail.com
-       - jane@aol.com: read
- 
-   Jane's notes:
-     repo: /home/stick/notes/janesnotes
-     serve:
-       - jane@aol.com
-       - john@hotmail.com: read
- 
-   Shared notes:
-     repo: /home/stick/notes/shared
-     serve:
-       - john@hotmail.com
-       - jane@aol.com
- ```
+ See [CONFIGURATION.md](https://man.sr.ht/~tslocum/stick/CONFIGURATION.md)
  
  ## Run
  


@@ 77,38 43,9 @@ stick serve
  ```
  
- ### Options
- 
- Note display and behavior can be customized via the **options directive**:
- 
- ```
- [//]: # (list,sort)
- 
- * [ ] Eggs
- * [ ] Flour
- * [X] Milk
- ```
- 
- This directive must be the first line of the note. When using the web interface
- to change note options, this directive will be added and updated automatically.
- 
- The following options are available:
- 
- #### Pin
- 
- Pinned notes will appear in another notebook labeled "Pinned"
- 
- #### List
- 
- Emphasize and remove duplicate list items
- 
- #### Sort
- 
- Sort list items alphabetically
- 
- #### Dismissed
+ ## Customize
  
- Show dismissed list items
+ See [OPTIONS.md](https://man.sr.ht/~tslocum/stick/OPTIONS.md)
  
  ## Support
  

D branch.go => branch.go +0 -9
@@ 1,9 0,0 @@-package main
- 
- import "net"
- 
- func connectToBranch() {
- 	c, err := net.Dial("unix", "/tmp/branch.sock")
- 	CheckError(err)
- 	defer c.Close()
- }

D cli.go => cli.go +0 -1
@@ 1,1 0,0 @@-package main

M config_test.go => config_test.go +2 -2
@@ 27,7 27,7 @@ repo: /home/stick/repo/b
      serve:
        - check@stick.rocketnine.space: check
-       - write@stick.rocketnine.space
+       - read@stick.rocketnine.space
  `)
  
  	c, err := ReadConfigData(configData)


@@ 44,6 44,6 @@ c.Authors)
  	assert.ElementsMatch(t, []*NotebookConfig{
  		{Label: "Test Notebook A", Repo: "/home/stick/repo/a", Serve: map[string]int{"read@stick.rocketnine.space": AuthorAccessRead, "write@stick.rocketnine.space": AuthorAccessWrite}},
- 		{Label: "Test Notebook B", Repo: "/home/stick/repo/b", Serve: map[string]int{"check@stick.rocketnine.space": AuthorAccessCheck, "write@stick.rocketnine.space": AuthorAccessWrite}}},
+ 		{Label: "Test Notebook B", Repo: "/home/stick/repo/b", Serve: map[string]int{"check@stick.rocketnine.space": AuthorAccessCheck, "read@stick.rocketnine.space": AuthorAccessRead}}},
  		c.Notebooks)
  }

M go.mod => go.mod +5 -3
@@ 7,12 7,14 @@ github.com/daaku/go.zipexe v1.0.1 // indirect
  	github.com/google/go-cmp v0.3.1 // indirect
  	github.com/gorilla/mux v1.7.3
- 	github.com/gorilla/websocket v1.4.0
+ 	github.com/gorilla/websocket v1.4.1
  	github.com/pkg/errors v0.8.1
  	github.com/stretchr/testify v1.4.0
  	github.com/urfave/cli v1.21.0
- 	golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 // indirect
- 	golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // indirect
+ 	golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 // indirect
+ 	golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect
+ 	golang.org/x/sys v0.0.0-20190904154756-749cb33beabd // indirect
+ 	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
  	gopkg.in/src-d/go-git.v4 v4.13.1
  	gopkg.in/yaml.v2 v2.2.2
  )

M go.sum => go.sum +10 -6
@@ 28,8 28,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
  github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
  github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
- github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
- github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
+ github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
+ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
  github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
  github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
  github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=


@@ 70,18 70,20 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
  golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 h1:HuIa8hRrWRSrqYzx1qI49NNxhdi2PrY7gxVSq1JjLDc=
  golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+ golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 h1:Gv7RPwsi3eZ2Fgewe3CBsuOebPwO27PoXzRpJPsvSSM=
+ golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
  golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
  golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
  golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
- golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 h1:fHDIZ2oxGnUZRN6WgWFCbYBjH9uqVPRCUVUDhs0wnbA=
- golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM=
+ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
  golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
  golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
- golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ=
- golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd h1:DBH9mDw0zluJT/R+nGuV3jWFWLFaHyYZWD4tOT+cjn0=
+ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
  golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
  golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=


@@ 90,6 92,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
  gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
  gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
+ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
  gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg=
  gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98=
  gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg=