| 
									
										
										
										
											2020-12-21 00:37:45 +01:00
										 |  |  | # SPDX-License-Identifier: AGPL-3.0-or-later | 
					
						
							|  |  |  | """build environment used by shell scripts
 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # set path | 
					
						
							|  |  |  | import sys | 
					
						
							| 
									
										
										
										
											2021-01-11 22:56:15 +01:00
										 |  |  | import os | 
					
						
							|  |  |  | from os.path import realpath, dirname, join, sep, abspath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-21 00:37:45 +01:00
										 |  |  | repo_root = realpath(dirname(realpath(__file__)) + sep + '..') | 
					
						
							|  |  |  | sys.path.insert(0, repo_root) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-15 09:53:03 +02:00
										 |  |  | # Assure that the settings file from repository's working tree is used to | 
					
						
							| 
									
										
										
										
											2021-10-08 11:35:47 +02:00
										 |  |  | # generate the build_env, not from /etc/searxng/settings.yml. | 
					
						
							| 
									
										
										
										
											2021-10-02 17:18:05 +02:00
										 |  |  | os.environ['SEARXNG_SETTINGS_PATH'] = join(repo_root, 'etc', 'settings.yml') | 
					
						
							| 
									
										
										
										
											2021-01-11 22:56:15 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-17 19:03:54 +02:00
										 |  |  | def _env(*arg, **kwargs): | 
					
						
							|  |  |  |     val = get_setting(*arg, **kwargs) | 
					
						
							|  |  |  |     if val is True: | 
					
						
							|  |  |  |         val = '1' | 
					
						
							|  |  |  |     elif val is False: | 
					
						
							|  |  |  |         val = '' | 
					
						
							|  |  |  |     return val | 
					
						
							| 
									
										
										
										
											2020-12-21 00:37:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 11:32:42 +02:00
										 |  |  | # If you add or remove variables here, do not forget to update: | 
					
						
							| 
									
										
										
										
											2021-07-21 09:41:48 +02:00
										 |  |  | # - ./docs/admin/engines/settings.rst | 
					
						
							|  |  |  | # - ./docs/dev/makefile.rst (section make buildenv) | 
					
						
							| 
									
										
										
										
											2021-07-20 13:16:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-21 00:37:45 +01:00
										 |  |  | name_val = [ | 
					
						
							| 
									
										
										
										
											2021-07-20 13:16:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-11 19:59:34 +02:00
										 |  |  |     ('SEARXNG_URL'              , 'server.base_url'), | 
					
						
							| 
									
										
										
										
											2021-10-02 16:56:11 +02:00
										 |  |  |     ('SEARXNG_PORT'             , 'server.port'), | 
					
						
							| 
									
										
										
										
											2021-10-02 16:58:09 +02:00
										 |  |  |     ('SEARXNG_BIND_ADDRESS'     , 'server.bind_address'), | 
					
						
							| 
									
										
										
										
											2021-07-20 13:16:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-21 00:37:45 +01:00
										 |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-27 14:39:48 +01:00
										 |  |  | brand_env = 'utils' + sep + 'brand.env' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-29 19:46:06 +02:00
										 |  |  | # Some defaults in the settings.yml are taken from the environment, | 
					
						
							| 
									
										
										
										
											2021-10-02 16:58:09 +02:00
										 |  |  | # e.g. SEARXNG_BIND_ADDRESS (:py:obj:`searx.settings_defaults.SHEMA`).  When the | 
					
						
							| 
									
										
										
										
											2023-09-15 09:53:03 +02:00
										 |  |  | # 'brand.env' file is created these environment variables should be unset first:: | 
					
						
							| 
									
										
										
										
											2021-06-29 19:46:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | _unset = object() | 
					
						
							|  |  |  | for name, option in name_val: | 
					
						
							|  |  |  |     if not os.environ.get(name, _unset) is _unset: | 
					
						
							|  |  |  |         del os.environ[name] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-30 08:10:02 +02:00
										 |  |  | # After the variables are unset in the environ, we can import from the searx | 
					
						
							|  |  |  | # package (what will read the values from the settings.yml). | 
					
						
							| 
									
										
										
										
											2021-06-29 19:46:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-30 08:10:02 +02:00
										 |  |  | from searx.version import GIT_URL, GIT_BRANCH | 
					
						
							| 
									
										
										
										
											2021-06-29 19:46:06 +02:00
										 |  |  | from searx import get_setting | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-02 17:18:05 +02:00
										 |  |  | print('build %s (settings from: %s)' % (brand_env, os.environ['SEARXNG_SETTINGS_PATH'])) | 
					
						
							| 
									
										
										
										
											2021-06-29 19:46:06 +02:00
										 |  |  | sys.path.insert(0, repo_root) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-21 00:37:45 +01:00
										 |  |  | with open(repo_root + sep + brand_env, 'w', encoding='utf-8') as f: | 
					
						
							| 
									
										
										
										
											2021-06-29 19:46:06 +02:00
										 |  |  |     for name, option in name_val: | 
					
						
							|  |  |  |         print("export %s='%s'" % (name, _env(option)), file=f) | 
					
						
							| 
									
										
										
										
											2021-07-27 18:37:46 +02:00
										 |  |  |     print(f"export GIT_URL='{GIT_URL}'", file=f) | 
					
						
							|  |  |  |     print(f"export GIT_BRANCH='{GIT_BRANCH}'", file=f) |