| Age | Commit message (Collapse) | Author |
|
This is the first major release of ciigo on the new year of 2025.
We bring many enhancements and update on the documentation.
[ENHANCEMENT]
The first changes is refactoring to use watchfs/v2. The [watchfs/v2]
bring new enhancements by watching only single file instead of all
markup files for changes. This minimize number of goroutine calling
[os.Stat] on each markup files.
[BUG FIX]
When listing the file markups, if the node is symlink (either file or
directory) and target its not exist, continue to the next node instead
of returning error. The same is true for directory that cannot be
opened, probably due to broken symlink or permission.
[ENHANCEMENT]
In development mode, where [ServeOptions.IsDevelopment] is set to true
or when running "ciigo serve", the ciigo HTTP server will check if the
new markup file is newer than HTML file when user press refresh or
reload on the browser. If its newer, it will convert the markup file and
return the new content of HTML file.
This allow quick preview without waiting for watcher to complete.
[ENHANCEMENT]
The README has been revamped to include section on how to install ciigo
as program, how to running ciigo convert and serve, how to write content
and view it live on browser, and how to deploy it.
On the section "ciigo as library" we point the user the sample code at
"internal/cmd/ciigo-example" instead of writing long code at the front.
[BUG FIX]
This release also fix Exclude option does not get processed when calling
GoEmbed, or running "ciigo embed".
|
|
Instead of writing the code manually, show the where to look for
example, which is at "internal/cmd/ciigo-example".
|
|
|
|
While at it, update the example index by removing unnecessary
external image, and update links to open in new tab/window.
|
|
In the README we add list of ciigo features, describe how to install
ciigo, reformat the Usage, add an example of running ciigo convert
and serve, how to write content and view it live on browser, and
how to deploy it using rsync.
|
|
Converting extension to lowercase before trimming it may not remove
the extension itself since the string has changes.
|
|
Using port 8080 as the default address for "serve" is too common and may
conflict with other services in user local environment.
While at it, also change the "serve-doc" with other random ports to
allow us test running "ciigo serve" and viewing doc at the same time.
|
|
In development mode, where [ServeOptions.IsDevelopment] is set to true
or when running "ciigo serve", the ciigo HTTP server will check if the
new markup file is newer than HTML file when user press refresh or
reload on the browser.
If its newer, it will convert the markup file and return the new content
of HTML file.
|
|
Task for "lint" and "build" is much more faster than "test".
So if we lint or build failed, we did not waste too much times waiting
for all tests to pass.
While at it, remove linter "revive" we will use the standard linters
from Go tools itself.
|
|
When listing the file markups, if the node is symlink (either file or
directory) and target its not exist, continue to the next node instead
of returning error.
The same is true for directory that cannot be opened, probably due to
broken symlink or permission.
|
|
The [watchfs/v2] bring new enhancements that watching only single file
instead of all markup files for changes.
This minimize number of goroutine calling os.Stat on each markup
files being watched on directory.
|
|
|
|
=== Breaking changes
* all: refactoring functions to accept non pointer struct option
The function that accept struct XxxOptions should only received the
copy of struct, not pointer.
=== New features
* all: introduce new type Ciigo
The Ciigo type provides customizable and reusable instance of ciigo
for embedding, converting, and/or serving HTTP server. This type is
introduced so one can add HTTP handler or endpoint along with serving
the files.
=== Enhancements
* all: set margin on sectlevel3, sectlevel4, sectlevel5
Using default margin (1.25rem) cause the TOC for level 3 until 5 have
wide gap in between them.
|
|
|
|
The function that accept struct XxxOptions should only received
the copy of struct, not pointer.
|
|
The Ciigo type provides customizable and reusable instance of ciigo for
embedding, converting, and/or serving HTTP server.
This type is introduced so one can add HTTP handler or endpoint along with
serving the files.
|
|
Using default margin (1.25rem) cause the TOC for level 3 until 5 have
wide gap in between them.
|
|
Update on asciidoctor-go bring new features and enhancements,
* Support document attribute "leveloffset".
The ":leveloffset:" on document attribute allow increment or decrement
the heading level on included files.
Reference: https://docs.asciidoctor.org/asciidoc/latest/directives/include-with-leveloffset/
* Use strict document header format.
Previously, an empty line before Document Title cause the parser
stop parsing the document header, now an empty lines are skipped.
Also document attribute can be place anywhere, either before or after
title, and in between attributes; now it can be only placed after
revision or author or title.
|
|
Using ".reuse/dep5" has been deprecated since REUSE v3.2.
|
|
|
|
|
|
=== Bug fixes
* Fix "serve" not detecting new files::
If there is new files on the root of directory it will not detected
automatically. This release now fix this issue.
=== Others
* all: remove Limitations and update Links
The asciidoc-go library now support scanning symlink inside Root
directory. The Links sections merge the previous contents from old
index.adoc.
* all: update the CLI usage in the README
There are three places for command usage: one in main Go doc, one in
the program usage, and one in README.
If we changes the flags we need to update three of them, and sometimes
we forgot.
To simplify, we remove the one in the Go doc main program.
|
|
There are three places for command usage: one in main Go doc, one in the
program usage, and one in README.
If we changes the flags we need to update three of them, and sometimes
we forgot.
To simplify, we remove the one in the Go doc main program.
|
|
The asciidoc-go library now support scanning symlink inside Root
directory.
The Links sections merge the previous contents from old index.adoc.
|
|
|
|
In this way, we can view how repository README looks like and remove
duplication.
|
|
Update on git.sr.ht/~shulhan/pakakeh.go fixes the "serve" command where
new files on the root of served directory not detected automatically.
|
|
|
|
=== New features
* cmd/ciigo: add flag to set package and variable name for "embed"
The flag "-package-name" can be used to changes the default package
name inside the Go embed file. The flag "-var-name" can be used to
changes the default memfs variable name inside the Go embed file.
=== Enhancements
* all: fix HTML files always generated when HTMLTemplate is not set
If the path to HTMLTemplate option is not set, GoEmbed should convert
to HTML only if markup file is newer than HTML file or when HTML file
not exist.
* all: initialize memfs using New
When memfs not initialized using New, the [memfs.MemFS.PathNodes]
will be nil. This cause any Get on new file will return 404.
|
|
|
|
Putting SPDX headers at the bottom cause the "reuse lint" detect the file
have no copyright and license information.
|
|
This is to make the go embed output consistent when this repository
cloned for the first time, due the file modtime is newer on each
"git clone".
|
|
The comment for HTML should end with "-->" not "--!>".
While at it, set embedded Go file store the file without modification time
to make the output (cmd/ciigo-example/static.go) does not changes on new
clone.
|
|
When memfs not initialized using New, the [memfs.MemFS.PathNodes] will
be nil.
This cause any Get on new file will return 404.
|
|
|
|
The flag "-package-name" can be used to changes the default package name
inside the Go embed file.
The flag "-var-name" can be used to changes the default memfs variable
name inside the Go embed file.
|
|
If the path to HTMLTemplate option is not set, GoEmbed should convert
to HTML only if markup file is newer than HTML file or when HTML file
not exist.
|
|
Instead of creating variables on top of switch, only declare them when
needed.
|
|
=== New features
* all: add server option to automatically generate index HTML
If the requested path is directory and no "index.html" file exist in
that directory, ciigo server will render list of files as "index.html"
automatically.
=== Chores
* all: replace module "share" with "pakakeh.go"
The "share" module has been moved to new repository with new name at
"https://sr.ht/~shulhan/pakakeh.go".
|
|
If the requested path is directory and no "index.html" file exist in
that directory, ciigo server will render list of files as "index.html"
automatically.
|
|
|
|
|
|
|
|
|
|
=== Breaking changes
* Field [ConvertOptions.HtmlTemplate] become [ConvertOptions.HTMLTemplate]
* Method [Converter.SetHtmlTemplateFile] become
[Converter.SetHTMLTemplateFile]
* Method [Converter.ToHtmlFile] become [Converter.ToHTMLFile]
=== Bug fix
* asciidoc: fix custom ID on the first section not applied correctly
|
|
The latest changes on asciidoctor-go replace deprecated package
"lib/parser" with [strings.Parser].
|
|
Unfortunately, this breaks some API and exported fields, but its better
than creating revive.toml file to add an exception.
Some breaking changes,
* Field [ConvertOptions.HtmlTemplate] become [ConvertOptions.HTMLTemplate]
* Method [Converter.SetHtmlTemplateFile] become
[Converter.SetHTMLTemplateFile]
* Method [Converter.ToHtmlFile] become [Converter.ToHTMLFile]
|
|
The update on asciidoctor-go fix the custom ID on the first section
always being replaced.
|
|
In this release, update on asciidoctor-go add new features to parse
unordered list with '-' and some bug fixes related to rendering list.
The update on share module fix for permission error when scanning using
memfs and HTTP redirect for request to directory that does not end with
slash.
=== Bug fixes
all: ignore error permission when listing file markups::
Instead of returning the error, ignore it and continue processing
other files in the list.
=== Enhancements
all: print log message with log package::
This is to provide the timestamp to each log output.
cmd/ciigo: set default IP address to loopback on serve command::
Previously, the default IP address is 0.0.0.0 which listen on all
network interfaces. Listening to all network interface should be
explicit by user.
all: use modification time to force HTML conversion::
In this changes, we derive the decision based on modification time
of HTML template and markup file. If the HTML template or markup
file is newer that HTML file then the new HTML file will be generated.
|
|
By using TempDir we did not need to remove and create directory when the
testing started.
While at it, set the default DirWatcher delay to 100ms and decrease each
"time.Sleep" duration on tests to make test finish faster.
|