commit
1cbc0caf8d
@ -0,0 +1,3 @@ |
||||
bld |
||||
*.tmp |
||||
*.raw |
@ -0,0 +1,24 @@ |
||||
Copyright (c) 2020 Jason T. Lenz. All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are |
||||
met: |
||||
|
||||
* Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above |
||||
copyright notice, this list of conditions and the following disclaimer |
||||
in the documentation and/or other materials provided with the |
||||
distribution. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,70 @@ |
||||
.SUFFIXES: |
||||
|
||||
MYSERVER=my.blog.site
|
||||
|
||||
PGOT-LOC=pgot -i ":src/inc" -d '{"siteurl":"$(shell pwd)/bld/loc","dfile":"index.html"}'
|
||||
PGOT-PUB=pgot -i ":src/inc" -d '{"siteurl":"https://$(MYSERVER)","dfile":""}'
|
||||
CHUF=chuf '|||md+' '|||md-' markdown
|
||||
|
||||
INC=$(shell find src -type f -name '*.igot')
|
||||
GOT=$(shell find src -type f -name '*.got')
|
||||
RAW=$(shell find -L src -type f -name '*.raw')
|
||||
CPY=$(shell find -L src -type f -name '*.cpy')
|
||||
|
||||
all loc: $(RAW:src/%.raw=bld/loc/%) \
|
||||
$(CPY:src/%.cpy=bld/loc/%) \
|
||||
$(GOT:src/%.got=bld/loc/%.html)
|
||||
|
||||
pub: $(RAW:src/%.raw=bld/pub/%) \
|
||||
$(CPY:src/%.cpy=bld/pub/%) \
|
||||
$(GOT:src/%.got=bld/pub/%.html)
|
||||
|
||||
bld/loc/% bld/pub/%: src/%.raw |
||||
@mkdir -p $(@D)
|
||||
@echo "raw -> $@"
|
||||
@cp $< $@
|
||||
|
||||
bld/loc/% bld/pub/%: src/%.cpy |
||||
@mkdir -p $(@D)
|
||||
@echo "cpy -> $@"
|
||||
@cp $< $@
|
||||
|
||||
bld/loc/%.html: src/%.got $(INC) |
||||
@mkdir -p $(@D)
|
||||
@echo "pgot -> $@"
|
||||
@$(PGOT-LOC) $< | $(CHUF) > $@
|
||||
|
||||
bld/pub/%.html: src/%.got $(INC) |
||||
@mkdir -p $(@D)
|
||||
@echo "pgot -> $@"
|
||||
@$(PGOT-PUB) $< | $(CHUF) > $@
|
||||
|
||||
cogit: bld/cogit.tar cogit-files.txt |
||||
@ echo "Moving cogit tarball to release folder"
|
||||
mkdir -p ../makeht-release
|
||||
mv bld/cogit.tar ../makeht-release/makeht-cogit-$(shell date +"%Y-%m-%d").tar
|
||||
|
||||
CGTMP=cg.tmp
|
||||
CGSRT=cgsrt.tmp
|
||||
|
||||
bld/cogit.tar: $(CGSRT) |
||||
@mkdir -p $(@D)
|
||||
@echo "generating $@"
|
||||
@tar -T $< -cf $@
|
||||
|
||||
cogit-files.txt: $(CGSRT) |
||||
@echo "generating $@"
|
||||
@while read CGFILE; do sha256sum -b "$$CGFILE"; done < $< > $@
|
||||
|
||||
$(CGSRT): $(RAW) |
||||
@find src -type f -name '*.raw' > $(CGTMP)
|
||||
@sort < $(CGTMP) > $@
|
||||
@rm -f $(CGTMP)
|
||||
|
||||
clean: |
||||
rm -Rf bld *.tmp
|
||||
|
||||
lint: loc |
||||
@grep -n -r '<no value>' bld/loc/ || true
|
||||
|
||||
.PHONY: all loc pub clean lint |
@ -0,0 +1,83 @@ |
||||
.SUFFIXES: |
||||
|
||||
MYSERVER=my.blog.site
|
||||
|
||||
PGOT-LOC=pgot -i ":src/inc" -d '{"siteurl":"$(.CURDIR)/bld/loc","dfile":"index.html"}'
|
||||
PGOT-PUB=pgot -i ":src/inc" -d '{"siteurl":"https://$(MYSERVER)","dfile":""}'
|
||||
CHUF=chuf '|||md+' '|||md-' markdown
|
||||
|
||||
INC!=find src -type f -name '*.igot'
|
||||
GOTS!=find src -type f -name '*.got'
|
||||
GOTL:=$(GOTS:src/%.got=bld/loc/%.html)
|
||||
GOTP:=$(GOTS:src/%.got=bld/pub/%.html)
|
||||
RAWS!=find -L src -type f -name '*.raw'
|
||||
RAWL:=$(RAWS:src/%.raw=bld/loc/%)
|
||||
RAWP:=$(RAWS:src/%.raw=bld/pub/%)
|
||||
CPYS!=find -L src -type f -name '*.cpy'
|
||||
CPYL:=$(CPYS:src/%.cpy=bld/loc/%)
|
||||
CPYP:=$(CPYS:src/%.cpy=bld/pub/%)
|
||||
|
||||
all loc: $(RAWL) $(CPYL) $(GOTL) |
||||
|
||||
|
||||
pub: $(RAWP) $(CPYP) $(GOTP) |
||||
|
||||
$(RAWL): $(@:bld/loc/%=src/%.raw) |
||||
@mkdir -p $(@D)
|
||||
@echo "raw -> $@"
|
||||
@cp $? $@
|
||||
|
||||
$(RAWP): $(@:bld/pub/%=src/%.raw) |
||||
@mkdir -p $(@D)
|
||||
@echo "raw -> $@"
|
||||
@cp $? $@
|
||||
|
||||
$(CPYL): $(@:bld/loc/%=src/%.cpy) |
||||
@mkdir -p $(@D)
|
||||
@echo "cpy -> $@"
|
||||
@cp $? $@
|
||||
|
||||
$(CPYP): $(@:bld/pub/%=src/%.cpy) |
||||
@mkdir -p $(@D)
|
||||
@echo "cpy -> $@"
|
||||
@cp $? $@
|
||||
|
||||
$(GOTL): $(@:bld/loc/%.html=src/%.got) $(INC) |
||||
@mkdir -p $(@D)
|
||||
@echo "got -> $@"
|
||||
@$(PGOT-LOC) $? | $(CHUF) > $@
|
||||
|
||||
$(GOTP): $(@:bld/pub/%.html=src/%.got) $(INC) |
||||
@mkdir -p $(@D)
|
||||
@echo "pgot -> $@"
|
||||
@$(PGOT-PUB) $? | $(CHUF) > $@
|
||||
|
||||
cogit: bld/cogit.tar cogit-files.txt |
||||
@ echo "Moving cogit tarball to release folder"
|
||||
mkdir -p ../makeht-release
|
||||
mv bld/cogit.tar ../makeht-release/makeht-cogit-$(shell date +"%Y-%m-%d").tar
|
||||
|
||||
CGTMP=cg.tmp
|
||||
CGSRT=cgsrt.tmp
|
||||
|
||||
bld/cogit.tar: $(CGSRT) |
||||
@mkdir -p $(@D)
|
||||
@echo "generating $@"
|
||||
@tar -T $< -cf $@
|
||||
|
||||
cogit-files.txt: $(CGSRT) |
||||
@echo "generating $@"
|
||||
@while read CGFILE; do sha256sum -b "$$CGFILE"; done < $< > $@
|
||||
|
||||
$(CGSRT): $(RAW) |
||||
@find src -type f -name '*.raw' > $(CGTMP)
|
||||
@sort < $(CGTMP) > $@
|
||||
@rm -f $(CGTMP)
|
||||
|
||||
clean: |
||||
rm -Rf bld *.tmp
|
||||
|
||||
lint: loc |
||||
@grep -n -r '<no value>' bld/loc/ || true
|
||||
|
||||
.PHONY: all loc pub clean lint |
@ -0,0 +1,70 @@ |
||||
.SUFFIXES: |
||||
|
||||
MYSERVER=my.blog.site
|
||||
|
||||
PGOT-LOC=pgot -i ":src/inc" -d '{"siteurl":"$(shell pwd)/bld/loc","dfile":"index.html"}'
|
||||
PGOT-PUB=pgot -i ":src/inc" -d '{"siteurl":"https://$(MYSERVER)","dfile":""}'
|
||||
CHUF=chuf '|||md+' '|||md-' markdown
|
||||
|
||||
INC=$(shell find src -type f -name '*.igot')
|
||||
GOT=$(shell find src -type f -name '*.got')
|
||||
RAW=$(shell find -L src -type f -name '*.raw')
|
||||
CPY=$(shell find -L src -type f -name '*.cpy')
|
||||
|
||||
all loc: $(RAW:src/%.raw=bld/loc/%) \
|
||||
$(CPY:src/%.cpy=bld/loc/%) \
|
||||
$(GOT:src/%.got=bld/loc/%.html)
|
||||
|
||||
pub: $(RAW:src/%.raw=bld/pub/%) \
|
||||
$(CPY:src/%.cpy=bld/pub/%) \
|
||||
$(GOT:src/%.got=bld/pub/%.html)
|
||||
|
||||
bld/loc/% bld/pub/%: src/%.raw |
||||
@mkdir -p $(@D)
|
||||
@echo "raw -> $@"
|
||||
@cp $< $@
|
||||
|
||||
bld/loc/% bld/pub/%: src/%.cpy |
||||
@mkdir -p $(@D)
|
||||
@echo "cpy -> $@"
|
||||
@cp $< $@
|
||||
|
||||
bld/loc/%.html: src/%.got $(INC) |
||||
@mkdir -p $(@D)
|
||||
@echo "pgot -> $@"
|
||||
@$(PGOT-LOC) $< | $(CHUF) > $@
|
||||
|
||||
bld/pub/%.html: src/%.got $(INC) |
||||
@mkdir -p $(@D)
|
||||
@echo "pgot -> $@"
|
||||
@$(PGOT-PUB) $< | $(CHUF) > $@
|
||||
|
||||
cogit: bld/cogit.tar cogit-files.txt |
||||
@ echo "Moving cogit tarball to release folder"
|
||||
mkdir -p ../makeht-release
|
||||
mv bld/cogit.tar ../makeht-release/makeht-cogit-$(shell date +"%Y-%m-%d").tar
|
||||
|
||||
CGTMP=cg.tmp
|
||||
CGSRT=cgsrt.tmp
|
||||
|
||||
bld/cogit.tar: $(CGSRT) |
||||
@mkdir -p $(@D)
|
||||
@echo "generating $@"
|
||||
@tar -T $< -cf $@
|
||||
|
||||
cogit-files.txt: $(CGSRT) |
||||
@echo "generating $@"
|
||||
@while read CGFILE; do sha256sum -b "$$CGFILE"; done < $< > $@
|
||||
|
||||
$(CGSRT): $(RAW) |
||||
@find src -type f -name '*.raw' > $(CGTMP)
|
||||
@sort < $(CGTMP) > $@
|
||||
@rm -f $(CGTMP)
|
||||
|
||||
clean: |
||||
rm -Rf bld *.tmp
|
||||
|
||||
lint: loc |
||||
@grep -n -r '<no value>' bld/loc/ || true
|
||||
|
||||
.PHONY: all loc pub clean lint |
@ -0,0 +1,161 @@ |
||||
# makeht |
||||
|
||||
This is a makefile based static website generator. Files are authored in the |
||||
"src" subdirectory using a standard text editor with markdown or html a |
||||
desired. A template processor is also used which enables standard page header, |
||||
footers, and other common information across various web pages. |
||||
|
||||
The makefile is set up to recognize and process files based on their filename |
||||
extension. The following file types are currently handled: |
||||
|
||||
* .got - These are the primary content files which are translated into html. |
||||
These are golang template files for processing by the |
||||
[pgot](https://git.lenzplace.org/lenzj/pgot) utility. The file types that follow are typically |
||||
referred to within these .got files. |
||||
|
||||
* .igot - These are intended to be "included" in the frontmatter section of the |
||||
.got files above and typically contain global variables or content to |
||||
standardize across web pages. |
||||
|
||||
* .cpy - Files intended to be copied over directly into the build directory |
||||
without any type of translation. The cpy file extension is removed in the |
||||
process. |
||||
|
||||
* .raw - Raw files are binary files that are not stored efficiently within git. |
||||
These are the only content files that are ignored by git and are handled |
||||
separately using the [cogit](#cogit) methodology described below. These are |
||||
copied directly into the build directory with the raw file extension removed. |
||||
|
||||
Note that folders are only created in the build directory if they contain |
||||
content files. Case in point, the "inc" folder within the "src" directory is |
||||
not mirrored into the "bld" folder because it only contains igot files. Since |
||||
igot files are by definition only included in other got files they do not |
||||
create content on their own and as such the inc folder does not need to be |
||||
created in the corresponding "bld" directory. |
||||
|
||||
Once files have been authored, these are mirrored and transformed into final |
||||
html in the "bld" subdirectory. The user can make a local version using the |
||||
following command in order to browse and confirm content/appearance using a |
||||
standard web browser. The generated files are stored in the "bld/loc" sub |
||||
folder. |
||||
|
||||
$ make loc |
||||
|
||||
Once satisfied with the results the user can then make a public version using |
||||
the following command. The files are similarly stored in the "bld/pub" sub |
||||
folder. |
||||
|
||||
$ make pub |
||||
|
||||
The files in the "bld/pub" folder can be copied to the destination server |
||||
address using scp, rsync, etc. |
||||
|
||||
## Installing |
||||
|
||||
To install, clone the git repository and ensure you have the |
||||
[dependencies](#dependencies) in the section below installed. |
||||
|
||||
In addition you will need to download the latest "cogit" file set from the |
||||
[release](https://git.lenzplace.org/lenzj/makeht/releases) folder. This is a tar archive containing |
||||
any images or video etc. used by this website. See the [cogit](#cogit) section |
||||
below for more background info. There is currently only one file in the makeht |
||||
cogit archive, and it is mainly included to demonstrate the cogit method. From |
||||
within the main git repository you can then extract the tar archive as follows |
||||
(assuming the downloaded cogit tar archive is in your ~/Download folder) and it |
||||
will populate the cogit files into the "src" directory. |
||||
|
||||
$ tar -xf ~/Download/makeht-cogit-20XX-XX-XX.tar |
||||
|
||||
You should then execute the configure script which selects the appropriate |
||||
Makefile version depending on which operating system you are using (linux or |
||||
bsd). |
||||
|
||||
$ ./configure |
||||
|
||||
You should edit the following line near the top of the Makefile to match the |
||||
public server address that you plan to use. |
||||
|
||||
MYSERVER=my.blog.site |
||||
|
||||
You can then either edit / create files directly in the "src" sub folder in the |
||||
repository or alternately copy all the files in the git repository to a |
||||
separate folder or repository of your choice. The src sub folder currently |
||||
contains a skeleton blog site with placeholder information that you can edit as |
||||
a starting point or alternately wipe it clean and start with your own format. |
||||
A screen shot of the skeleton blog is shown below. |
||||
|
||||
 |
||||
|
||||
Lastly, you can then execute "make loc" to generate a local set of files that |
||||
you can browse with your default web browser. |
||||
|
||||
$ make loc |
||||
$ xdg-open bld/loc/index.html |
||||
|
||||
## Dependencies |
||||
+ __make__ (any posix compliant make utility) Used to identify items that have |
||||
changed and convert those into final html files for a website using the tools |
||||
above. |
||||
+ __pgot__ (https://git.lenzplace.org/lenzj/pgot) A template processing tool |
||||
written in golang. |
||||
+ __chuf__ (https://git.lenzplace.org/lenzj/chuf) An inline chunk filtering |
||||
tool written in golang (used to select sections for markdown processing). |
||||
+ __markdown__ I use discount as the markdown processor. |
||||
<http://www.pell.portland.or.us/~orc/Code/discount/> |
||||
+ __unix utilities__ The following standard unix utilities are needed and |
||||
should be available in most linux/bsd default installations: find, tar, grep, |
||||
sort, sha256sum |
||||
|
||||
## Folder structure |
||||
|
||||
This can be created as desired. One recommended folder layout is as follows: |
||||
|
||||
```text |
||||
+- Makefile |
||||
+- src : All templates and source text files are in this folder. |
||||
| +- css : html cascading style sheets |
||||
| +- inc : These are .igot templates that are included or referenced by |
||||
| individual content pages in src. Global variables can be defined |
||||
| here etc. |
||||
| +- topic1 : Website topics are stored in different sub folders. |
||||
| +- topic2 : etc. ... |
||||
+- bld : All output is written to this folder. |
||||
| +- loc : This folder is generated with "make loc", and can be viewed with |
||||
| a standard web browser. |
||||
| +- pub : This folder contains files which are intended for the public web |
||||
| server. These files can be directly copied to the server. |
||||
+- template : You can safely ignore this folder unless you want to update the |
||||
README or LICENSE files. Further detail is in the folder. |
||||
``` |
||||
|
||||
## Cogit |
||||
|
||||
Websites typically have a variety of raw binary data files including images, |
||||
video, icons, etc. Git works exceptionally well for text files, but is not a |
||||
good tool for storing these types of binary files. The git LFS system has been |
||||
developed to handle this situation, however a specialized LFS server is needed. |
||||
An alternate strategy is used here which I am calling "cogit" (raw binary files |
||||
cohabitating with git). The .gitignore file specifies the raw files and/or |
||||
folders to be ignored by git. The Makefile generates a manifest text file |
||||
containing lines with a sha256sum first followed by the sub path/name for each |
||||
raw binary file. The manifest is tracked in git so that the even though the |
||||
raw files are not stored in git the user can determine exactly which set of raw |
||||
files is associated with each commit. A tarball containing the raw files can |
||||
be created and stored separately from the git respository. |
||||
|
||||
## Contributing |
||||
|
||||
If you have a bugfix, update, issue or feature enhancement the best way to reach |
||||
me is by following the instructions in the link below. Thank you! |
||||
|
||||
<https://blog.lenzplace.org/contact> |
||||
|
||||
## Versioning |
||||
|
||||
I follow the [SemVer](http://semver.org/) strategy for versioning. The latest |
||||
version is listed in the [releases](/lenzj/makeht/releases) section. |
||||
|
||||
## License |
||||
|
||||
This project is licensed under a BSD two clause license - see the |
||||
[LICENSE](LICENSE) file for details. |
@ -0,0 +1 @@ |
||||
17ca76c51b24273a00819a632e473a285a14eeafdabc2a368c14423fd43e4fbb *src/about/profile.png.raw |
@ -0,0 +1,16 @@ |
||||
#!/bin/sh |
||||
echo -n "Setting up Makefile" |
||||
case $(uname | tr '[:upper:]' '[:lower:]') in |
||||
linux*) |
||||
echo " for Linux" |
||||
cp Makefile.gnu Makefile |
||||
;; |
||||
openbsd*) |
||||
echo " for OpenBSD" |
||||
cp Makefile.bsd Makefile |
||||
;; |
||||
*) |
||||
echo " ... Failed! Unknown OS!" |
||||
exit 1 |
||||
;; |
||||
esac |
After Width: | Height: | Size: 96 KiB |
@ -0,0 +1,36 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "About", |
||||
"description" : "Some things about me and this website.", |
||||
"cdate" : "2020-05-14", |
||||
"tag" : "about" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
 |
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque massa |
||||
ante, rhoncus sit amet dolor sit amet, vehicula sagittis quam. In ac neque |
||||
suscipit, elementum sem sit amet, faucibus nibh. Curabitur tincidunt nulla |
||||
tincidunt eros dignissim semper. Etiam eget ante non nisi scelerisque tristique |
||||
eget ac ipsum. Nullam feugiat at est quis faucibus. Ut posuere finibus elit quis |
||||
lacinia. Aenean auctor hendrerit massa, at rhoncus nisl tristique cursus. Ut |
||||
venenatis aliquet diam, a pharetra ex facilisis at. Proin ultrices libero id |
||||
risus ultricies pretium. |
||||
|
||||
Ut feugiat mauris et libero cursus ornare. Vivamus ante diam, pulvinar sit amet |
||||
massa ut, ullamcorper sagittis neque. Pellentesque facilisis accumsan risus id |
||||
tempor. Integer tincidunt libero in justo pulvinar, non volutpat elit viverra. |
||||
Aliquam nec leo pharetra, accumsan nibh eu, dapibus elit. Ut rhoncus, nisi ut |
||||
maximus facilisis, lacus sem dignissim ex, sit amet euismod dolor elit id magna. |
||||
Curabitur ipsum mauris, varius vel semper eu, volutpat et nisi. Integer ex dui, |
||||
dapibus vitae fermentum tristique, mattis vitae nisi. Mauris eget ante vel |
||||
mauris molestie luctus. Etiam iaculis ex at mauris pharetra, ac elementum dui |
||||
euismod. Nulla facilisi. Integer tincidunt varius erat eu viverra. Duis |
||||
fermentum urna sit amet magna condimentum eleifend. Nulla ut ante semper, |
||||
finibus nulla tristique, finibus justo. |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,38 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Contact", |
||||
"description" : "You can contact me using one of the methods below.", |
||||
"cdate" : "2020-05-20", |
||||
"tag" : "contact,email" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
The best way to reach me is via email: my.email@host.com. |
||||
|
||||
If you would like to report a software bug, submit a patch or otherwise |
||||
collaborate on software please use one of the methods below: |
||||
|
||||
### File a bug or request a feature |
||||
|
||||
If you've found a bug or issue in one of the applications in the |
||||
[git repository]({{.giturl}}), or you have a question or feature request for an |
||||
application the best way to let me know is to file an issue on the associated |
||||
repository page. You will need to create a user account if you haven't already |
||||
done so. |
||||
|
||||
### Submit a pull request |
||||
|
||||
Better yet if you have a fix or upgrade for a package you can fork the repository |
||||
and submit a pull request to merge your updates. |
||||
|
||||
### Alternatives |
||||
|
||||
If the above options aren't feasible, you can simply email me with a description |
||||
of the problem or attach a patch file, etc. |
||||
|
||||
Thank you! |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,374 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Copyright", |
||||
"description" : "Copyright terms for content on this website.", |
||||
"cdate" : "2020-05-20", |
||||
"tag" : "copyright,creative commons,cc by 4.0" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
# Human Readable Summary |
||||
Attribution 4.0 International (CC BY 4.0) |
||||
|
||||
This first section is a human-readable summary of (and not a substitute for) |
||||
the formal [license](#license) further below. |
||||
|
||||
### You are free to: |
||||
|
||||
**Share** - copy and redistribute the material in any medium or format |
||||
|
||||
**Adapt** - remix, transform, and build upon the material for any purpose, even |
||||
commercially. |
||||
|
||||
I cannot revoke these freedoms as long as you follow the license terms below. |
||||
|
||||
### Under the following terms: |
||||
|
||||
**Attribution** - You must give appropriate credit, provide a link to the |
||||
license, and indicate if changes were made. You may do so in any reasonable |
||||
manner, but not in any way that suggests that I endorse you. |
||||
|
||||
**No additional restrictions** - You may not apply legal terms or technological |
||||
measures that legally restrict others from doing anything the license permits. |
||||
|
||||
### Notices: |
||||
|
||||
You do not have to comply with the license for elements of the material in the |
||||
public domain or where your use is permitted by an applicable exception or |
||||
limitation. |
||||
|
||||
No warranties are given. The license may not give you all of the permissions |
||||
necessary for your intended use. For example, other rights such as publicity, |
||||
privacy, or moral rights may limit how you use the material. |
||||
|
||||
# Formal License<a name="license"></a> |
||||
|
||||
Creative Commons Attribution 4.0 International Public License |
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree |
||||
to be bound by the terms and conditions of this Creative Commons |
||||
Attribution 4.0 International Public License ("Public License"). To the |
||||
extent this Public License may be interpreted as a contract, You are |
||||
granted the Licensed Rights in consideration of Your acceptance of |
||||
these terms and conditions, and the Licensor grants You such rights in |
||||
consideration of benefits the Licensor receives from making the |
||||
Licensed Material available under these terms and conditions. |
||||
|
||||
|
||||
Section 1 -- Definitions. |
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar |
||||
Rights that is derived from or based upon the Licensed Material |
||||
and in which the Licensed Material is translated, altered, |
||||
arranged, transformed, or otherwise modified in a manner requiring |
||||
permission under the Copyright and Similar Rights held by the |
||||
Licensor. For purposes of this Public License, where the Licensed |
||||
Material is a musical work, performance, or sound recording, |
||||
Adapted Material is always produced where the Licensed Material is |
||||
synched in timed relation with a moving image. |
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright |
||||
and Similar Rights in Your contributions to Adapted Material in |
||||
accordance with the terms and conditions of this Public License. |
||||
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights |
||||
closely related to copyright including, without limitation, |
||||
performance, broadcast, sound recording, and Sui Generis Database |
||||
Rights, without regard to how the rights are labeled or |
||||
categorized. For purposes of this Public License, the rights |
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar |
||||
Rights. |
||||
|
||||
d. Effective Technological Measures means those measures that, in the |
||||
absence of proper authority, may not be circumvented under laws |
||||
fulfilling obligations under Article 11 of the WIPO Copyright |
||||
Treaty adopted on December 20, 1996, and/or similar international |
||||
agreements. |
||||
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or |
||||
any other exception or limitation to Copyright and Similar Rights |
||||
that applies to Your use of the Licensed Material. |
||||
|
||||
f. Licensed Material means the artistic or literary work, database, |
||||
or other material to which the Licensor applied this Public |
||||
License. |
||||
|
||||
g. Licensed Rights means the rights granted to You subject to the |
||||
terms and conditions of this Public License, which are limited to |
||||
all Copyright and Similar Rights that apply to Your use of the |
||||
Licensed Material and that the Licensor has authority to license. |
||||
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights |
||||
under this Public License. |
||||
|
||||
i. Share means to provide material to the public by any means or |
||||
process that requires permission under the Licensed Rights, such |
||||
as reproduction, public display, public performance, distribution, |
||||
dissemination, communication, or importation, and to make material |
||||
available to the public including in ways that members of the |
||||
public may access the material from a place and at a time |
||||
individually chosen by them. |
||||
|
||||
j. Sui Generis Database Rights means rights other than copyright |
||||
resulting from Directive 96/9/EC of the European Parliament and of |
||||
the Council of 11 March 1996 on the legal protection of databases, |
||||
as amended and/or succeeded, as well as other essentially |
||||
equivalent rights anywhere in the world. |
||||
|
||||
k. You means the individual or entity exercising the Licensed Rights |
||||
under this Public License. Your has a corresponding meaning. |
||||
|
||||
|
||||
Section 2 -- Scope. |
||||
|
||||
a. License grant. |
||||
|
||||
1. Subject to the terms and conditions of this Public License, |
||||
the Licensor hereby grants You a worldwide, royalty-free, |
||||
non-sublicensable, non-exclusive, irrevocable license to |
||||
exercise the Licensed Rights in the Licensed Material to: |
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or |
||||
in part; and |
||||
|
||||
b. produce, reproduce, and Share Adapted Material. |
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where |
||||
Exceptions and Limitations apply to Your use, this Public |
||||
License does not apply, and You do not need to comply with |
||||
its terms and conditions. |
||||
|
||||
3. Term. The term of this Public License is specified in Section |
||||
6(a). |
||||
|
||||
4. Media and formats; technical modifications allowed. The |
||||
Licensor authorizes You to exercise the Licensed Rights in |
||||
all media and formats whether now known or hereafter created, |
||||
and to make technical modifications necessary to do so. The |
||||
Licensor waives and/or agrees not to assert any right or |
||||
authority to forbid You from making technical modifications |
||||
necessary to exercise the Licensed Rights, including |
||||
technical modifications necessary to circumvent Effective |
||||
Technological Measures. For purposes of this Public License, |
||||
simply making modifications authorized by this Section 2(a) |
||||
(4) never produces Adapted Material. |
||||
|
||||
5. Downstream recipients. |
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every |
||||
recipient of the Licensed Material automatically |
||||
receives an offer from the Licensor to exercise the |
||||
Licensed Rights under the terms and conditions of this |
||||
Public License. |
||||
|
||||
b. No downstream restrictions. You may not offer or impose |
||||
any additional or different terms or conditions on, or |
||||
apply any Effective Technological Measures to, the |
||||
Licensed Material if doing so restricts exercise of the |
||||
Licensed Rights by any recipient of the Licensed |
||||
Material. |
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or |
||||
may be construed as permission to assert or imply that You |
||||
are, or that Your use of the Licensed Material is, connected |
||||
with, or sponsored, endorsed, or granted official status by, |
||||
the Licensor or others designated to receive attribution as |
||||
provided in Section 3(a)(1)(A)(i). |
||||
|
||||
b. Other rights. |
||||
|
||||
1. Moral rights, such as the right of integrity, are not |
||||
licensed under this Public License, nor are publicity, |
||||
privacy, and/or other similar personality rights; however, to |
||||
the extent possible, the Licensor waives and/or agrees not to |
||||
assert any such rights held by the Licensor to the limited |
||||
extent necessary to allow You to exercise the Licensed |
||||
Rights, but not otherwise. |
||||
|
||||
2. Patent and trademark rights are not licensed under this |
||||
Public License. |
||||
|
||||
3. To the extent possible, the Licensor waives any right to |
||||
collect royalties from You for the exercise of the Licensed |
||||
Rights, whether directly or through a collecting society |
||||
under any voluntary or waivable statutory or compulsory |
||||
licensing scheme. In all other cases the Licensor expressly |
||||
reserves any right to collect such royalties. |
||||
|
||||
|
||||
Section 3 -- License Conditions. |
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the |
||||
following conditions. |
||||
|
||||
a. Attribution. |
||||
|
||||
1. If You Share the Licensed Material (including in modified |
||||
form), You must: |
||||
|
||||
a. retain the following if it is supplied by the Licensor |
||||
with the Licensed Material: |
||||
|
||||
i. identification of the creator(s) of the Licensed |
||||
Material and any others designated to receive |
||||
attribution, in any reasonable manner requested by |
||||
the Licensor (including by pseudonym if |
||||
designated); |
||||
|
||||
ii. a copyright notice; |
||||
|
||||
iii. a notice that refers to this Public License; |
||||
|
||||
iv. a notice that refers to the disclaimer of |
||||
warranties; |
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the |
||||
extent reasonably practicable; |
||||
|
||||
b. indicate if You modified the Licensed Material and |
||||
retain an indication of any previous modifications; and |
||||
|
||||
c. indicate the Licensed Material is licensed under this |
||||
Public License, and include the text of, or the URI or |
||||
hyperlink to, this Public License. |
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any |
||||
reasonable manner based on the medium, means, and context in |
||||
which You Share the Licensed Material. For example, it may be |
||||
reasonable to satisfy the conditions by providing a URI or |
||||
hyperlink to a resource that includes the required |
||||
information. |
||||
|
||||
3. If requested by the Licensor, You must remove any of the |
||||
information required by Section 3(a)(1)(A) to the extent |
||||
reasonably practicable. |
||||
|
||||
4. If You Share Adapted Material You produce, the Adapter's |
||||
License You apply must not prevent recipients of the Adapted |
||||
Material from complying with this Public License. |
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights. |
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that |
||||
apply to Your use of the Licensed Material: |
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right |
||||
to extract, reuse, reproduce, and Share all or a substantial |
||||
portion of the contents of the database; |
||||
|
||||
b. if You include all or a substantial portion of the database |
||||
contents in a database in which You have Sui Generis Database |
||||
Rights, then the database in which You have Sui Generis Database |
||||
Rights (but not its individual contents) is Adapted Material; and |
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share |
||||
all or a substantial portion of the contents of the database. |
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not |
||||
replace Your obligations under this Public License where the Licensed |
||||
Rights include other Copyright and Similar Rights. |
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability. |
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE |
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS |
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF |
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, |
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, |
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR |
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, |
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT |
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT |
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. |
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE |
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, |
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, |
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, |
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR |
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN |
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR |
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR |
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. |
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided |
||||
above shall be interpreted in a manner that, to the extent |
||||
possible, most closely approximates an absolute disclaimer and |
||||
waiver of all liability. |
||||
|
||||
|
||||
Section 6 -- Term and Termination. |
||||
|
||||
a. This Public License applies for the term of the Copyright and |
||||
Similar Rights licensed here. However, if You fail to comply with |
||||
this Public License, then Your rights under this Public License |
||||
terminate automatically. |
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under |
||||
Section 6(a), it reinstates: |
||||
|
||||
1. automatically as of the date the violation is cured, provided |
||||
it is cured within 30 days of Your discovery of the |
||||
violation; or |
||||
|
||||
2. upon express reinstatement by the Licensor. |
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any |
||||
right the Licensor may have to seek remedies for Your violations |
||||
of this Public License. |
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the |
||||
Licensed Material under separate terms or conditions or stop |
||||
distributing the Licensed Material at any time; however, doing so |
||||
will not terminate this Public License. |
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public |
||||
License. |
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions. |
||||
|
||||
a. The Licensor shall not be bound by any additional or different |
||||
terms or conditions communicated by You unless expressly agreed. |
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the |
||||
Licensed Material not stated herein are separate from and |
||||
independent of the terms and conditions of this Public License. |
||||
|
||||
|
||||
Section 8 -- Interpretation. |
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and |
||||
shall not be interpreted to, reduce, limit, restrict, or impose |
||||
conditions on any use of the Licensed Material that could lawfully |
||||
be made without permission under this Public License. |
||||
|
||||
b. To the extent possible, if any provision of this Public License is |
||||
deemed unenforceable, it shall be automatically reformed to the |
||||
minimum extent necessary to make it enforceable. If the provision |
||||
cannot be reformed, it shall be severed from this Public License |
||||
without affecting the enforceability of the remaining terms and |
||||
conditions. |
||||
|
||||
c. No term or condition of this Public License will be waived and no |
||||
failure to comply consented to unless expressly agreed to by the |
||||
Licensor. |
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted |
||||
as a limitation upon, or waiver of, any privileges and immunities |
||||
that apply to the Licensor or You, including from the legal |
||||
processes of any jurisdiction or authority. |
||||
|
||||
# Sources: |
||||
This page was derived in large part from: |
||||
|
||||
<https://creativecommons.org/licenses/by/4.0> |
||||
|
||||
<https://creativecommons.org/licenses/by/4.0/legalcode.txt> |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,79 @@ |
||||
body { |
||||
margin: 0 auto; |
||||
padding: 0 0.5rem; |
||||
max-width: 45rem; |
||||
float: none; |
||||
text-align: left; |
||||
} |
||||
|
||||
ul.navbar { |
||||
list-style-type: none; |
||||
margin: 0; |
||||
padding: 0; |
||||
overflow: hidden; |
||||
border-bottom-style: solid; |
||||
border-width: 0.1rem; |
||||
} |
||||
|
||||
ul.navbar li a { |
||||
display: block; |
||||
text-align: center; |
||||
padding: 0.4rem 0.4rem; |
||||
text-decoration: none; |
||||
border-left-style: dotted; |
||||
border-width: 0.1rem; |
||||
border-radius: 0.7rem; |
||||
} |
||||
|
||||
ul.navbar li { float: left; } |
||||
|
||||
ul.navbar li.right { float: right; } |
||||
|
||||
header { |
||||
border-bottom-style: solid; |
||||
border-width: 0.1rem; |
||||
} |
||||
|
||||
header img { float:right; } |
||||
|
||||
header p.end { clear:right; } |
||||
|
||||
header h1, |
||||
header p { margin: 0.7rem 0; } |
||||
|
||||
img { |
||||
max-width: 90%; |
||||
height: auto; |
||||
display: block; |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
} |
||||
|
||||
img.half { |
||||
max-width: 44%; |
||||
display: inline-block; |
||||
padding: 0.25rem; |
||||
} |
||||
|
||||
code { |
||||
background-color: lightgrey; |
||||
border: 0.1rem solid; |
||||
display: block; |
||||
overflow-x: auto; |
||||
padding: 0.5rem; |
||||
word-wrap: normal; |
||||
} |
||||
|
||||
footer { |
||||
border-top-style: solid; |
||||
border-width: 0.1rem; |
||||
margin: 0.5rem auto; |
||||
} |
||||
|
||||
@media print { |
||||
img { |
||||
break-before: auto; |
||||
break-after: auto; |
||||
break-inside: avoid; |
||||
} |
||||
} |
After Width: | Height: | Size: 9.2 KiB |
@ -0,0 +1,8 @@ |
||||
;;; |
||||
{ |
||||
"lang" : "en", |
||||
"copyright" : "2020", |
||||
"author" : "Firstname Lastname", |
||||
"giturl" : "https://my.git.repository" |
||||
} |
||||
;;; |
@ -0,0 +1,9 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude":[ |
||||
"global.igot", |
||||
"pageBegin.igot", |
||||
"pageEnd.igot" |
||||
] |
||||
} |
||||
;;; |
@ -0,0 +1,34 @@ |
||||
;;; |
||||
;;; |
||||
<!DOCTYPE html> |
||||
<html lang="{{.lang}}"> |
||||
<head> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
||||
<meta name="viewport" content="width=device-width"> |
||||
{{if .tag}}<meta name="keywords" content="{{.tag}}">{{end}} |
||||
<meta name="description" content="{{.description}}"> |
||||
<meta name="author" content="{{.author}}"> |
||||
<title>{{.title}}</title> |
||||
<link rel="stylesheet" href="{{.siteurl}}/css/style.css" type="text/css"> |
||||
<link rel="icon" href="{{.siteurl}}/favicon.svg" type="image/svg+xml"> |
||||
</head> |
||||
<body> |
||||
<ul class="navbar"> |
||||
<li><a href="{{.siteurl}}/{{.dfile}}">Home</a></li> |
||||
<li><a href="{{.siteurl}}/topic/{{.dfile}}">Topics</a></li> |
||||
<li class="right"><a href="{{.siteurl}}/contact/{{.dfile}}">Contact</a></li> |
||||
<li class="right"><a href="{{.siteurl}}/about/{{.dfile}}">About</a></li> |
||||
<li class="right"><a href="{{.siteurl}}/source/{{.dfile}}">Source</a></li> |
||||
</ul> |
||||
<article> |
||||
<header> |
||||
<a href="{{.siteurl}}/{{.dfile}}"><img src="{{.siteurl}}/favicon.svg" width="60"></a> |
||||
<h1>{{.title}}</h1> |
||||
<p>{{.description}}</p> |
||||
<p class="end"> |
||||
{{if .udate}}{{.udate}} / {{end}}{{.cdate}} |
||||
{{if .category}}- <i>cat</i>: {{.category}}{{end}} |
||||
{{if .tag}}- <i>tag</i>: {{.tag}}{{end}} |
||||
</p> |
||||
</header> |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,12 @@ |
||||
;;; |
||||
;;; |
||||
<footer> |
||||
<p> |
||||
<span style="float:left;">Made with <a href="https://git.lenzplace.org/lenzj/makeht">makeht</a></span> |
||||
<span style="float:right;"><a href="{{.siteurl}}/copyright/{{.dfile}}">Copyright</a> © {{.copyright}} {{.author}}</span> |
||||
</p> |
||||
</footer> |
||||
</article> |
||||
</body> |
||||
</html> |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,55 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "MyBlog", |
||||
"description" : "Thoughts and projects relating to x, y, z.", |
||||
"cdate" : "2020-05-20", |
||||
"posts" : [ |
||||
{ "title": "Pellentesque eleifend", |
||||
"path": "post/pellentesque", |
||||
"thumb": "rhino.svg", |
||||
"description": "Nulla feugiat arcu in ante.", |
||||
"date": "2020-05-20", |
||||
"category": "efficitur", |
||||
"tag": "commodo,lectus" |
||||
}, |
||||
{ "title": "Mauris elementum eros a justo", |
||||
"path": "post/mauris_elementum", |
||||
"thumb": "computer.svg", |
||||
"description": "Maecenas sodales augue id pulvinar.", |
||||
"date": "2019-11-03", |
||||
"category": "porta", |
||||
"tag": "turpis" |
||||
}, |
||||
{ "title": "Nulla porttitor tellus ut leo", |
||||
"path": "post/nulla_porttitor_tellus", |
||||
"thumb": "elephant.svg", |
||||
"description": "Duis justo tortor, consequat a.", |
||||
"date": "2018-08-24", |
||||
"category": "efficitur", |
||||
"tag": "commodo,turpis" |
||||
} |
||||
] |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
<p></p> |
||||
<table> |
||||
{{range .posts -}} |
||||
<tr> |
||||
<td> |
||||
<a href="{{.path}}/{{$.dfile}}"> |
||||
<img src="{{.path}}/{{.thumb}}" width="80"></a> |
||||
</td> |
||||
<td> |
||||
<a href="{{.path}}/{{$.dfile}}"> |
||||
<p><b>{{.title}}</b></p></a> |
||||
<p><i>{{.date}}</i> - {{.description}}</p> |
||||
<p><i>cat:</i>{{.category}} - <i>tag:</i>{{.tag}}</p> |
||||
</td> |
||||
</tr> |
||||
{{end -}} |
||||
</table> |
||||
<p></p> |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
After Width: | Height: | Size: 9.2 KiB |
@ -0,0 +1,63 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Mauris elementum eros a justo", |
||||
"description" : "maecenas sodales augue id pulvinar.", |
||||
"cdate" : "2019-11-03", |
||||
"category" : "porta", |
||||
"tag" : "turpis" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
## Lorem ipsum dolor |
||||
|
||||
Sit amet, consectetur adipiscing elit. Vivamus eu malesuada augue, vehicula |
||||
bibendum quam. Duis sit amet varius quam. Pellentesque ut quam ipsum. Etiam |
||||
tortor massa, tempus a semper ac, mattis eget risus. Cras nec malesuada ipsum. |
||||
Vivamus semper dui sit amet tristique consectetur. Nam quis mi volutpat, aliquam |
||||
augue ut, varius arcu. Maecenas tempor accumsan metus id rhoncus. In |
||||
sollicitudin purus ut urna aliquet, ac vehicula nulla faucibus. Phasellus |
||||
mollis faucibus nibh sit amet sagittis. |
||||
|
||||
// Parse command line |
||||
flag.Usage = func() { |
||||
fmt.Fprintf(flag.CommandLine.Output(), |
||||
"Usage: %s [OPTION]... [FILE]...\n"+ |
||||
"Process a got (golang template) file and send transformed text to output.\n"+ |
||||
"Options:\n", appName) |
||||
flag.PrintDefaults() |
||||
} |
||||
var oflag = flag.String("o", "-", "output `file` path") |
||||
var iflag = flag.String("i", "", "colon separated list of `paths` to search with pgotInclude") |
||||
var dflag = flag.String("d", "", "string of json frontmatter to include") |
||||
var vflag = flag.Bool("v", false, "display "+appName+" version") |
||||
|
||||
##Maecenas mollis |
||||
|
||||
Egestas tincidunt. Sed id pellentesque est. Phasellus viverra, risus nec gravida |
||||
consectetur, ex lorem molestie orci, nec feugiat mi purus at libero. Praesent |
||||
elit elit, facilisis eget molestie sit amet, venenatis id nunc. Proin ut neque |
||||
nec diam finibus laoreet vitae sit amet metus. Donec vel dui vel leo condimentum |
||||
aliquet. Nunc quis neque vitae enim interdum tempus. |
||||
|
||||
 |
||||
|
||||
Cras vel porttitor nibh. Nulla condimentum sit amet mi sit amet mattis. In id |
||||
neque commodo, mattis nibh non, hendrerit augue. Curabitur sed placerat odio, |
||||
quis molestie mauris. Curabitur ac sodales est. Cras sodales mi risus, sed |
||||
sodales tellus fringilla ut. Fusce odio mi, viverra sit amet faucibus sed, |
||||
iaculis nec lectus. Nulla a erat ut urna lobortis fringilla ac ac nibh. |
||||
Vestibulum dictum sapien porttitor tellus imperdiet, ornare feugiat est |
||||
ultrices. Fusce enim nulla, ornare a blandit ut, iaculis vitae augue. Mauris |
||||
eget erat odio. Fusce vel pulvinar nisi, sed facilisis tellus. Etiam malesuada |
||||
urna sed nulla tempor pellentesque. |
||||
|
||||
## References: |
||||
|
||||
<https://lipsum.com> |
||||
|
||||
<https://commons.wikimedia.org/wiki/File:Computer_Turned_On.svg> |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
After Width: | Height: | Size: 3.2 KiB |
@ -0,0 +1,56 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Nulla porritor tellus ut leo", |
||||
"description" : "Duis justo tortor, consequat a.", |
||||
"cdate" : "2018-08-24", |
||||
"category" : "efficitur", |
||||
"tag" : "commodo,turpis" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
## Pellentesque vestibulum |
||||
|
||||
Lectus sed eros vulputate, vel molestie tortor feugiat. Vivamus ultricies, erat |
||||
quis faucibus finibus, ligula nunc commodo sapien, in aliquam erat ex vel purus. |
||||
Sed tincidunt, diam sed dapibus ultricies, urna turpis tempus augue, et porta ex |
||||
tellus a ante. Nunc non elit lobortis, ultricies ex non, vulputate neque. Cras |
||||
dui urna, tincidunt in dictum lobortis, viverra ut velit. Pellentesque nec |
||||
ultricies purus. Curabitur imperdiet leo tellus. Ut at aliquam turpis. Morbi a |
||||
libero malesuada, tempor metus at, accumsan metus. In congue tortor a turpis |
||||
suscipit rhoncus. Integer ac vulputate purus, ac cursus justo. Sed tincidunt |
||||
finibus pellentesque. Donec vulputate tempor eros nec maximus. Vivamus lacus |
||||
urna, auctor at felis in, aliquam vestibulum nulla. Donec id sagittis dui. |
||||
|
||||
 |
||||
|
||||
## Aenean egestas |
||||
|
||||
Vulputate leo non iaculis. Suspendisse potenti. Mauris tincidunt viverra |
||||
hendrerit. Vestibulum consequat justo ac ex dictum lobortis. Fusce et mi sit |
||||
amet ligula euismod tincidunt. Nulla consequat, diam eu mollis aliquam, sapien |
||||
nunc sollicitudin risus, vel hendrerit diam nibh ut ligula. Morbi non blandit |
||||
velit. Ut pellentesque justo non leo finibus aliquet. Cras eu urna lacus. Sed ut |
||||
urna eget nunc mollis facilisis. Ut ut risus quis quam egestas semper. |
||||
Vestibulum malesuada sodales odio in mollis. |
||||
|
||||
Interdum et malesuada fames ac ante ipsum primis in faucibus. Nullam mauris |
||||
nunc, accumsan id lacinia vel, vehicula nec sapien. Lorem ipsum dolor sit amet, |
||||
consectetur adipiscing elit. In maximus, nibh placerat ultrices luctus, felis |
||||
est suscipit turpis, eu ultrices augue nulla ut turpis. In libero diam, pretium |
||||
et ligula sodales, feugiat commodo mi. Nullam quis elit lacus. Aenean |
||||
condimentum pulvinar ante, ut lacinia ex porttitor ut. Curabitur auctor, mi vel |
||||
lacinia rhoncus, metus est porta sapien, nec scelerisque lacus dolor non libero. |
||||
Aenean dapibus enim at ligula ultrices pulvinar. Morbi nec magna mattis, pretium |
||||
dolor a, aliquam tellus. Sed semper odio sed justo dictum auctor. In congue |
||||
lacus vitae quam mattis tempus. |
||||
|
||||
## References: |
||||
|
||||
<https://lipsum.com> |
||||
|
||||
<https://commons.wikimedia.org/wiki/File:Asian_elephant_line.svg> |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,54 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Pellentesque eleifend", |
||||
"description" : "Nulla feugiat arcu in ante.", |
||||
"cdate" : "2020-05-20", |
||||
"category" : "efficitur", |
||||
"tag" : "commodo,lectus" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
Aliquam pharetra lectus magna, at cursus ante dapibus in. Sed et nisl elit. |
||||
Quisque vitae hendrerit arcu, ac maximus lacus. Aenean vel ligula dictum sapien |
||||
semper scelerisque. Donec cursus nec augue ut venenatis. Vivamus consectetur |
||||
velit ut tempus interdum. Donec suscipit lacus mauris, vitae molestie tortor |
||||
dignissim vel. Maecenas nunc felis, pharetra sed sem non, viverra semper lectus. |
||||
Nulla vestibulum mi eu lobortis suscipit. Vestibulum vitae dolor ornare, |
||||
vulputate est eget, vehicula quam. Nam neque nisl, auctor at efficitur eu, |
||||
auctor interdum enim. Proin volutpat posuere sapien sit amet dignissim. Sed nec |
||||
ante feugiat, mattis quam ut, congue purus. Nunc condimentum ipsum vitae iaculis |
||||
egestas. |
||||
|
||||
 |
||||
|
||||
1. Praesent eu velit at nibh luctus mollis vitae mollis purus. Etiam justo lectus, |
||||
egestas a lacinia sit amet, aliquam at nulla. Curabitur scelerisque urna vel. |
||||
|
||||
2. Duis faucibus dui eget augue pellentesque, eget finibus ex vestibulum. Duis in |
||||
ornare ex, vitae faucibus eros. Donec ornare metus sed purus interdum laoreet. |
||||
|
||||
3. Nulla semper, odio quis sodales posuere, diam turpis accumsan est, vel ultricies |
||||
mauris nisi ut felis. In porta pharetra facilisis. Lorem ipsum dolor sit amet, |
||||
consectetur adipiscing elit. Pellentesque pellentesque nisl enim, eget volutpat |
||||
nisi aliquet vitae. Donec eget mi libero. Nullam lectus odio, congue eget urna. |
||||
|
||||
Nam aliquet eros sit amet odio vestibulum, nec lacinia metus pharetra. Phasellus |
||||
et tellus suscipit, hendrerit arcu non, blandit enim. In sed lacinia turpis. |
||||
Maecenas aliquam commodo massa ut vestibulum. Mauris fringilla malesuada dictum. |
||||
Praesent ultrices vel eros id dictum. Cras non ligula eu diam fringilla tempus |
||||
eu id arcu. Sed nulla odio, placerat vitae tempor ornare, condimentum sit amet |
||||
ligula. Duis porta tortor fringilla dictum vehicula. Mauris vel ultricies metus. |
||||
Fusce lacinia orci mollis, pretium ipsum et, posuere arcu. Nulla venenatis purus |
||||
eu tortor aliquet, eu malesuada mauris congue. Donec eu ligula sit amet nunc |
||||
pulvinar scelerisque in vel orci. |
||||
|
||||
## References: |
||||
|
||||
<https://lipsum.com> |
||||
|
||||
<https://commons.wikimedia.org/wiki/File:Rhino.svg> |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
After Width: | Height: | Size: 6.6 KiB |
@ -0,0 +1,38 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Source", |
||||
"description" : "Repository of open source code and assets.", |
||||
"cdate" : "2020-05-09" |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
|||md+ |
||||
Open source code associated with this site can be obtained from the source code |
||||
repository at: |
||||
|
||||
<{{.giturl}}> |
||||
|
||||
The following are some highlighted projects from the repository. |
||||
|
||||
## [Project 1 Name]({{.giturl}}/project1) |
||||
|
||||
Aliquam erat volutpat. Maecenas et lacus augue. Nunc vulputate, est eget |
||||
consequat imperdiet, tellus orci pharetra leo, a consequat nibh tortor quis |
||||
elit. Aenean egestas ante sapien, nec mattis dui faucibus et. Duis ac volutpat |
||||
enim. Sed volutpat elit sit amet eros iaculis maximus eu id ex. Aenean sem |
||||
nulla, porta eu egestas nec, ullamcorper sed velit. In hac habitasse platea |
||||
dictumst. Proin et metus quis ligula placerat sodales. Duis eu posuere massa, id |
||||
tincidunt sem. Nam volutpat urna id bibendum scelerisque. Donec cursus erat eu |
||||
massa scelerisque dignissim. |
||||
|
||||
## [Project 2 Name]({{.giturl}}/project2) |
||||
|
||||
Mauris et arcu ultrices, cursus justo at, fringilla purus. Fusce et dignissim |
||||
erat. Pellentesque semper nunc velit, in aliquam est fringilla id. Cras |
||||
tincidunt sit amet enim ut tempor. Pellentesque risus purus, interdum vitae |
||||
consectetur quis, imperdiet vitae leo. Morbi auctor ligula vitae porta eleifend. |
||||
Sed rutrum ex eget nunc viverra auctor. |
||||
|||md- |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,60 @@ |
||||
;;; |
||||
{ |
||||
"pgotInclude" : [ "globalPage.igot" ], |
||||
"title" : "Topics", |
||||
"description" : "Content on this website listed by category, tag, date.", |
||||
"cdate" : "2020-05-20", |
||||
"posts": [ |
||||
{ "title": "Pellentesque eleifend", |
||||
"path": "post/pellentesque" |
||||
}, |
||||
{ "title": "Mauris elementum eros a justo", |
||||
"path": "post/mauris_elementum" |
||||
}, |
||||
{ "title": "Nulla porttitor tellus ut leo", |
||||
"path": "post/nulla_porttitor_tellus" |
||||
} |
||||
], |
||||
"topics" : [ |
||||
{ "name": "By Category", |
||||
"item": [ |
||||
{ "name": "efficitur", "postnum": [ 0, 2 ] }, |
||||
{ "name": "porta", "postnum": [ 1 ] } |
||||
] |
||||
}, |
||||
{ "name": "By Tag", |
||||
"item": [ |
||||
{ "name": "commodo", "postnum": [ 0, 2 ] }, |
||||
{ "name": "lectus", "postnum": [ 0 ] }, |
||||
{ "name": "turpis", "postnum": [ 1, 2 ] } |
||||
] |
||||
}, |
||||
{ "name": "By Date", |
||||
"item": [ |
||||
{ "name": "2020", "postnum": [ 0 ] }, |
||||
{ "name": "2019", "postnum": [ 1 ] }, |
||||
{ "name": "2018", "postnum": [ 2 ] } |
||||
] |
||||
} |
||||
] |
||||
} |
||||
;;; |
||||
{{template "pageBegin" . -}} |
||||
<p></p> |
||||
{{range .topics -}} |
||||
<h3>{{.name}}</h3> |
||||
{{range .item -}} |
||||
<b>{{.name}}</b> |
||||
<ul><li> |
||||
{{range .postnum -}} |
||||
{{$i := toInt . -}} |
||||
<a href="{{$.siteurl}}/{{index $.posts $i "path"}}/{{$.dfile}}"> |
||||
{{index $.posts $i "title" -}}</a>, |
||||
{{end -}} |
||||
</li></ul> |
||||
{{end -}} |
||||
<hr> |
||||
{{end -}} |
||||
<p></p> |
||||
{{template "pageEnd" . -}} |
||||
{{- /* vim:set noet tw=80: */ -}} |
@ -0,0 +1,18 @@ |
||||
# Purpose |
||||
|
||||
This "template" folder contains templates and associates scripts to generate |
||||
standard repository files such as README.md and LICENSE. This is primarily |
||||
used by the author to ensure consistency across repositories and can safely be |
||||
ignored by most end users and contributors. |
||||
|
||||
# Usage |
||||
|
||||
If you do desire to use or process templates in this folder make sure you have |
||||
cloned the git repository at <https://git.lenzplace.org/lenzj/repo-template>. |
||||
The cloned "repo-template" respository should ideally exist one level outside |
||||
this repository root. I.E. ../repo-template |
||||
|
||||
Once this is in place you can regenerate the documents from templates using the |
||||
following command: |
||||
|
||||
$ sh regen-files.sh |
@ -0,0 +1,155 @@ |
||||
;;; |
||||
{ |
||||
"rname":"makeht", |
||||
"pgotInclude": [ "README.src/all.got" ] |
||||
} |
||||
;;; |
||||
# {{.rname}} |
||||
|
||||
This is a makefile based static website generator. Files are authored in the |
||||
"src" subdirectory using a standard text editor with markdown or html a |
||||
desired. A template processor is also used which enables standard page header, |
||||
footers, and other common information across various web pages. |
||||
|
||||
The makefile is set up to recognize and process files based on their filename |
||||
extension. The following file types are currently handled: |
||||
|
||||
* .got - These are the primary content files which are translated into html. |
||||
These are golang template files for processing by the |
||||
[pgot]({{.repUrl}}pgot) utility. The file types that follow are typically |
||||
referred to within these .got files. |
||||
|
||||
* .igot - These are intended to be "included" in the frontmatter section of the |
||||
.got files above and typically contain global variables or content to |
||||
standardize across web pages. |
||||
|
||||
* .cpy - Files intended to be copied over directly into the build directory |
||||
without any type of translation. The cpy file extension is removed in the |
||||
process. |
||||
|
||||
* .raw - Raw files are binary files that are not stored efficiently within git. |
||||
These are the only content files that are ignored by git and are handled |
||||
separately using the [cogit](#cogit) methodology described below. These are |
||||
copied directly into the build directory with the raw file extension removed. |
||||
|
||||
Note that folders are only created in the build directory if they contain |
||||
content files. Case in point, the "inc" folder within the "src" directory is |
||||
not mirrored into the "bld" folder because it only contains igot files. Since |
||||
igot files are by definition only included in other got files they do not |
||||
create content on their own and as such the inc folder does not need to be |
||||
created in the corresponding "bld" directory. |
||||
|
||||
Once files have been authored, these are mirrored and transformed into final |
||||
html in the "bld" subdirectory. The user can make a local version using the |
||||
following command in order to browse and confirm content/appearance using a |
||||
standard web browser. The generated files are stored in the "bld/loc" sub |
||||
folder. |
||||
|
||||
$ make loc |
||||
|
||||
Once satisfied with the results the user can then make a public version using |
||||
the following command. The files are similarly stored in the "bld/pub" sub |
||||
folder. |
||||
|
||||
$ make pub |
||||
|
||||
The files in the "bld/pub" folder can be copied to the destination server |
||||
address using scp, rsync, etc. |
||||
|
||||
## Installing |
||||
|
||||
To install, clone the git repository and ensure you have the |
||||
[dependencies](#dependencies) in the section below installed. |
||||
|
||||
In addition you will need to download the latest "cogit" file set from the |
||||
[release]({{.repUrl}}makeht/releases) folder. This is a tar archive containing |
||||
any images or video etc. used by this website. See the [cogit](#cogit) section |
||||
below for more background info. There is currently only one file in the makeht |
||||
cogit archive, and it is mainly included to demonstrate the cogit method. From |
||||
within the main git repository you can then extract the tar archive as follows |
||||
(assuming the downloaded cogit tar archive is in your ~/Download folder) and it |
||||
will populate the cogit files into the "src" directory. |
||||
|
||||
$ tar -xf ~/Download/{{.rname}}-cogit-20XX-XX-XX.tar |
||||
|
||||
You should then execute the configure script which selects the appropriate |
||||
Makefile version depending on which operating system you are using (linux or |
||||
bsd). |
||||
|
||||
$ ./configure |
||||
|
||||
You should edit the following line near the top of the Makefile to match the |
||||
public server address that you plan to use. |
||||
|
||||
MYSERVER=my.blog.site |
||||
|
||||
You can then either edit / create files directly in the "src" sub folder in the |
||||
repository or alternately copy all the files in the git repository to a |
||||
separate folder or repository of your choice. The src sub folder currently |
||||
contains a skeleton blog site with placeholder information that you can edit as |
||||
a starting point or alternately wipe it clean and start with your own format. |
||||
A screen shot of the skeleton blog is shown below. |
||||
|
||||
 |
||||
|
||||
Lastly, you can then execute "make loc" to generate a local set of files that |
||||
you can browse with your default web browser. |
||||
|
||||
$ make loc |
||||
$ xdg-open bld/loc/index.html |
||||
|
||||
## Dependencies |
||||
+ __make__ (any posix compliant make utility) Used to identify items that have |
||||
changed and convert those into final html files for a website using the tools |
||||
above. |
||||
+ __pgot__ ({{.repUrl}}pgot) A template processing tool |
||||
written in golang. |
||||
+ __chuf__ ({{.repUrl}}chuf) An inline chunk filtering |
||||
tool written in golang (used to select sections for markdown processing). |
||||
+ __markdown__ I use discount as the markdown processor. |
||||
<http://www.pell.portland.or.us/~orc/Code/discount/> |
||||
+ __unix utilities__ The following standard unix utilities are needed and |
||||
should be available in most linux/bsd default installations: find, tar, grep, |
||||
sort, sha256sum |
||||
|
||||
## Folder structure |
||||
|
||||
This can be created as desired. One recommended folder layout is as follows: |
||||
|
||||
```text |
||||
+- Makefile |
||||
+- src : All templates and source text files are in this folder. |
||||
| +- css : html cascading style sheets |
||||
| +- inc : These are .igot templates that are included or referenced by |
||||
| individual content pages in src. Global variables can be defined |
||||
| here etc. |
||||
| +- topic1 : Website topics are stored in different sub folders. |
||||
| +- topic2 : etc. ... |
||||
+- bld : All output is written to this folder. |
||||
| +- loc : This folder is generated with "make loc", and can be viewed with |
||||
| a standard web browser. |
||||
| +- pub : This folder contains files which are intended for the public web |
||||
| server. These files can be directly copied to the server. |
||||
+- template : You can safely ignore this folder unless you want to update the |
||||
README or LICENSE files. Further detail is in the folder. |
||||
``` |
||||
|
||||
## Cogit |
||||
|
||||
Websites typically have a variety of raw binary data files including images, |
||||
video, icons, etc. Git works exceptionally well for text files, but is not a |
||||
good tool for storing these types of binary files. The git LFS system has been |
||||
developed to handle this situation, however a specialized LFS server is needed. |
||||
An alternate strategy is used here which I am calling "cogit" (raw binary files |
||||
cohabitating with git). The .gitignore file specifies the raw files and/or |
||||
folders to be ignored by git. The Makefile generates a manifest text file |
||||
containing lines with a sha256sum first followed by the sub path/name for each |
||||
raw binary file. The manifest is tracked in git so that the even though the |
||||
raw files are not stored in git the user can determine exactly which set of raw |
||||
files is associated with each commit. A tarball |