aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-08-06 14:15:51 +0700
committerShulhan <ms@kilabit.info>2022-08-06 14:15:51 +0700
commit422e3b1cfb590e3c22023916bc5ad7d2ae7e3652 (patch)
treecd6d7d1780bd5438af6a3e206231e5396931e085
parent4624f716d8e2a8ed78326025323417cc9c5d6dd0 (diff)
downloadciigo-422e3b1cfb590e3c22023916bc5ad7d2ae7e3652.tar.xz
all: convert the README using AsciiDoc
While at it, create symlink README so the git.sr.ht site can display it.
-rw-r--r--.reuse/dep52
l---------README1
-rw-r--r--README.adoc (renamed from README.md)120
3 files changed, 80 insertions, 43 deletions
diff --git a/.reuse/dep5 b/.reuse/dep5
index 8accd3c..b3e23d2 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -11,7 +11,7 @@ Files: go.sum
Copyright: 2022 Shulhan <ms@kilabit.info>
License: GPL-3.0-or-later
-Files: README.md
+Files: README README.adoc
Copyright: 2022 Shulhan <ms@kilabit.info>
License: GPL-3.0-or-later
diff --git a/README b/README
new file mode 120000
index 0000000..bff755a
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+README.adoc \ No newline at end of file
diff --git a/README.md b/README.adoc
index 2f82c88..df2fae8 100644
--- a/README.md
+++ b/README.adoc
@@ -1,47 +1,50 @@
-# Welcome to ciigo
-
-[![PkgGoDev](https://pkg.go.dev/badge/git.sr.ht/~shulhan/ciigo)](https://pkg.go.dev/git.sr.ht/~shulhan/ciigo)
+= Welcome to ciigo
+:toc:
+:sectanchors:
+:sectlinks:
+:repo_url:https://git.sr.ht/~shulhan/ciigo
+:repo_doc_url:https://pkg.go.dev/git.sr.ht/~shulhan/ciigo
`ciigo` is a library and a program to write static web server with embedded
files using
-[asciidoc](https://asciidoctor.org/docs/what-is-asciidoc/)
+https://asciidoctor.org/docs/what-is-asciidoc/[AsciiDoc^]
markup format.
-## ciigo as CLI
+== ciigo as CLI
ciigo as CLI can convert, generate, and/or serve a directory that contains
markup files, as HTML files.
-### Usage
+=== Usage
-```
+----
$ ciigo [-template <file>] [-exclude <regex>] convert <dir>
-```
+----
Scan the "dir" recursively to find markup files (.adoc) and convert them into
HTML files.
The template "file" is optional, default to embedded HTML template.
-```
+----
$ ciigo [-template <file>] [-exclude <regex>] [-out <file>] generate <dir>
-```
+----
Convert all markup files inside directory "dir" recursively and then
embed them into ".go" source file.
The output file is optional, default to "ciigo_static.go" in current
directory.
-```
+----
$ ciigo [-template <file>] [-exclude <regex>] [-address <ip:port>] serve <dir>
-```
+----
Serve all files inside directory "dir" using HTTP server, watch
changes on markup files and convert them to HTML files automatically.
If the address is not set, its default to ":8080".
-## ciigo as library
+== ciigo as library
This section describe step by step instructions on how to build and create
pages to be viewed for local development using `ciigo`.
@@ -54,34 +57,34 @@ Create new Go repository for building a website.
For example, in directory `$HOME/go/src/remote.tld/user/mysite`.
Replace "remote.tld/user/mysite" with your private or public repository.
-```
+----
$ mkdir -p $HOME/go/src/remote.tld/user/mysite
$ cd $HOME/go/src/remote.tld/user/mysite
-```
+----
Initialize the Go module,
-```
+----
$ go mod init remote.tld/user/mysite
-```
+----
Create directories for storing our content and a package binary.
-```
+----
$ mkdir -p cmd/mysite
$ mkdir -p _contents
-```
+----
Copy the example of stylesheet and HTML template from `ciigo` repository,
-```
+----
$ cp $HOME/go/src/git.sr.ht/~shulhan/ciigo/_example/index.css ./_contents/
$ cp $HOME/go/src/git.sr.ht/~shulhan/ciigo/_example/html.tmpl ./_contents/
-```
+----
Create the main Go code inside `cmd/mysite`,
-```
+----
package main
import (
@@ -105,23 +108,23 @@ func main() {
log.Fatal(err)
}
}
-```
+----
Create a new markup file `index.adoc` inside the "_contents" directory.
Each directory, or sub directory, should have `index.adoc` to be able to
accessed by browser,
-```
+----
= Test
Hello, world!
-```
+----
Now run the `./cmd/mysite` with `DEBUG` environment variable set to non-zero,
-```
+----
$ DEBUG=1 go run ./cmd/mysite
-```
+----
Any non zero value on `DEBUG` environment signal the running program to watch
changes in ".adoc" files inside "_contents" directory and serve the generated
@@ -137,7 +140,7 @@ program will automatically generated the HTML file.
Refresh the web browser to load the new generated file.
-### Deployment
+=== Deployment
First, we need to make sure that all markup files inside "_contents" are
converted to HTML and embed it into the static Go code.
@@ -145,17 +148,19 @@ converted to HTML and embed it into the static Go code.
Create another Go source code, lets save it in `internal/generate.go` with the
following content,
-```
+----
package main
import (
+ "log"
+
"git.sr.ht/~shulhan/ciigo"
)
func main() {
opts := &ciigo.EmbedOptions{
ConvertOptions: ciigo.ConvertOptions{
- Root: "./_contents",
+ Root: "_contents",
HtmlTemplate: "_contents/html.tmpl",
},
EmbedOptions: memfs.EmbedOptions{
@@ -164,43 +169,74 @@ func main() {
GoFileName: "cmd/mysite/static.go",
},
}
- ciigo.GoEmbed(opts)
+ err := ciigo.GoEmbed(opts)
+ if err != nil {
+ log.Fatal(err)
+ }
}
-```
+----
And then run,
-```
+----
$ go run ./internal
-```
+----
The above command will generate Go source code `cmd/mysite/static.go` that
embed all files inside the "_contents" directory.
Second, build the web server that serve static contents in `static.go`,
-```
+----
$ go build cmd/mysite
-```
+----
Third, test the web server by running the program and opening `localhost:8080`
on web browser,
-```
+----
$ ./mysite
-```
+----
Finally, deploy the program to your server.
-*NOTE:* By default, server will listen on address `0.0.0.0` at port `8080`.
+NOTE: By default, server will listen on address `0.0.0.0` at port `8080`.
If you need to use another port, you can change it at `cmd/mysite/main.go`.
That's it!
-## Limitations and Known Bugs
-`ciigo` will not handle automatic certificate (e.g. using LetsEncrypt), its
-up to the user how the certificate are gathered, generated, or served.
+== Limitations and known bugs
Using symlink on ".adoc" file inside Root directory that reference file
outside of Root is not supported, yet.
+
+
+== Links
+
+{repo_url}[Ciigo repository^].
+
+{repo_doc_url}[Go module documentation^].
+
+
+== License
+
+This software is licensed under GPL 3.0 or later.
+
+----
+Copyright 2022 Shulhan <ms@kilabit.info>
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation, either version 3 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE.
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program.
+If not, see <http://www.gnu.org/licenses/>.
+----