This repository has been archived on 2024-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
forgejo/contrib/environment-to-ini
wxiaoguang 042cac5fed
Improve install code to avoid low-level mistakes. (#17779)
* Improve install code to avoid low-level mistakes.

If a user tries to do a re-install in a Gitea database, they gets a warning and double check.
When Gitea runs, it never create empty app.ini automatically.

Also some small (related) refactoring:

* Refactor db.InitEngine related logic make it more clean (especially for the install code)
* Move some i18n strings out from setting.go to make the setting.go can be easily maintained.
* Show errors in CLI code if an incorrect app.ini is used.
* APP_DATA_PATH is created when installing, and checked when starting (no empty directory is created any more).
2021-12-01 15:50:01 +08:00
..
environment-to-ini.go Improve install code to avoid low-level mistakes. (#17779) 2021-12-01 15:50:01 +08: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