forgejo/contrib/environment-to-ini
Earl Warren 24fed529fc
[BRANDING] parse FORGEJO__* in the container environment
(cherry picked from commit b0759917479ee17ccb11773176dbc8a75323c5cb)
(cherry picked from commit da3f76228e24d2276784ad7e1a03a34d094750e0)
(cherry picked from commit 20d196e74f9d7827cd812e3eb714eb87e888b6db)
(cherry picked from commit 0bf8b1824eac416ddb40fd2e0d7605573ba087a3)
(cherry picked from commit 655bb770a7cf65ada5d3e214ec23219e6cb19df0)
(cherry picked from commit d69d5c2c46f00b041beeb67a6238c5193ce9710a)
(cherry picked from commit 00b55e5a5396a49a6798a3ae2588e412637a77c6)
(cherry picked from commit 456121fd8a4c0c30f7854bd04907f2a0a583d27f)
(cherry picked from commit 9716a158e48ad6333f46fc0806a838603606e5ea)
(cherry picked from commit 7d60a6f5116124b72927a52db0dd36af7a9c3621)
(cherry picked from commit d32a6d9437a38ac35320ad7329eece1ab2bd54d1)
(cherry picked from commit ee1de38527ea1fbd52c319cfbbca24deef951fc1)
(cherry picked from commit 54e7799d13fa041be172d4a05d036cee43e390d4)
(cherry picked from commit 4f04da7ab716ccb1f2816842cde62965e89a852a)
(cherry picked from commit 3e001364ebef3c670e21ed0b7c91a1b4ec8b1577)
(cherry picked from commit d2d5193b388d4b36006a36a5d2145356ff28eec9)
(cherry picked from commit eb1f015c4218c93067f92ab401d6a6973aabf952)
(cherry picked from commit c4587aa893f809dd64418519e2bfc7ebbde4c48f)
(cherry picked from commit 6e340be917725254000c4bc01c22ca00f48142bd)

Conflicts:
	contrib/environment-to-ini/environment-to-ini.go
	https://codeberg.org/forgejo/forgejo/pulls/1773
2023-11-13 14:00:15 +01:00
..
environment-to-ini.go [BRANDING] parse FORGEJO__* in the container environment 2023-11-13 14:00:15 +01:00
README Add environment-to-ini to docker image (#14762) 2021-02-23 20:21:44 +01:00

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