forgejo/contrib/environment-to-ini
Earl Warren 00ce992957
[BRANDING] parse FORGEJO__* in the container environment
Add the FORGEJO__ prefix as equivalent to GITEA__ when interpreted by
environment-to-ini. It is used when running the Forgejo container like
so:

  docker run --name forgejo -e FORGEJO__security__INSTALL_LOCK=true \
             -d codeberg.org/forgejo/forgejo:1.19

(cherry picked from commit 6cd61e2ab7)
(cherry picked from commit 62cae8cc6a)
(cherry picked from commit aee1afc509)
(cherry picked from commit 6ba563cd9b)
(cherry picked from commit 6429b20f4a)
(cherry picked from commit dd545aa077)
(cherry picked from commit 63a00e573e)
(cherry picked from commit 8e35a50b91)
(cherry picked from commit 26e8fb6cd9)
(cherry picked from commit 56bbf644be)
(cherry picked from commit 4d0a8c8640)
(cherry picked from commit b58f775fa2)
(cherry picked from commit f4b6fa7a93)
(cherry picked from commit 4eca363082)
(cherry picked from commit e2e7a72f80)
2023-06-05 19:39:02 +02:00
..
environment-to-ini.go [BRANDING] parse FORGEJO__* in the container environment 2023-06-05 19:39:02 +02:00
environment-to-ini_test.go [BRANDING] parse FORGEJO__* in the container environment 2023-06-05 19:39:02 +02:00
README

Environment To Ini
==================

Multiple docker users have requested that the Gitea docker is changed
to permit arbitrary configuration via environment variables.

Gitea needs to use an ini file for configuration because the running
environment that starts the docker may not be the same as that used
by the hooks. An ini file also gives a good default and means that
users do not have to completely provide a full environment.

With those caveats above, this command provides a generic way of
converting suitably structured environment variables into any ini
value.

To use the command is very simple just run it and the default gitea
app.ini will be rewritten to take account of the variables provided,
however there are various options to give slightly different
behavior and these can be interrogated with the `-h` option.

The environment variables should be of the form:

	GITEA__SECTION_NAME__KEY_NAME

Note, SECTION_NAME in the notation above is case-insensitive.

Environment variables are usually restricted to a reduced character
set "0-9A-Z_" - in order to allow the setting of sections with
characters outside of that set, they should be escaped as following:
"_0X2E_" for "." and "_0X2D_" for "-". The entire section and key names 
can be escaped as a UTF8 byte string if necessary. E.g. to configure:

	"""
	...
	[log.console]
	COLORIZE=false
	STDERR=true
	...
	"""

You would set the environment variables: "GITEA__LOG_0x2E_CONSOLE__COLORIZE=false"
and "GITEA__LOG_0x2E_CONSOLE__STDERR=false". Other examples can be found
on the configuration cheat sheet.

To build locally, run:

	go build contrib/environment-to-ini/environment-to-ini.go