mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-09 12:21:57 -04:00
169 lines
4.5 KiB
Python
169 lines
4.5 KiB
Python
from pathlib import Path
|
|
from typing import Optional, Dict, Union, Tuple, Callable, Pattern, Type, Any, List
|
|
from mypy_extensions import TypedDict
|
|
|
|
|
|
|
|
SimpleConfigValue = Union[str, bool, int, None, Pattern, Dict[str, Any]]
|
|
SimpleConfigValueDict = Dict[str, SimpleConfigValue]
|
|
SimpleConfigValueGetter = Callable[[], SimpleConfigValue]
|
|
ConfigValue = Union[SimpleConfigValue, SimpleConfigValueDict, SimpleConfigValueGetter]
|
|
|
|
SHArgs = List[str] # shell command args list e.g. ["--something=1", "--someotherarg"]
|
|
|
|
|
|
class BaseConfig(TypedDict):
|
|
pass
|
|
|
|
class ConfigDict(BaseConfig, total=False):
|
|
"""
|
|
# Regenerate by pasting this quine into `archivebox shell` 🥚
|
|
from archivebox.config import ConfigDict, CONFIG_SCHEMA
|
|
print('class ConfigDict(BaseConfig, total=False):')
|
|
print(' ' + '"'*3 + ConfigDict.__doc__ + '"'*3)
|
|
for section, configs in CONFIG_SCHEMA.items():
|
|
for key, attrs in configs.items():
|
|
Type, default = attrs['type'], attrs['default']
|
|
if default is None:
|
|
print(f' {key}: Optional[{Type.__name__}]')
|
|
else:
|
|
print(f' {key}: {Type.__name__}')
|
|
print()
|
|
"""
|
|
IS_TTY: bool
|
|
USE_COLOR: bool
|
|
SHOW_PROGRESS: bool
|
|
IN_DOCKER: bool
|
|
IN_QEMU: bool
|
|
PUID: int
|
|
PGID: int
|
|
|
|
OUTPUT_DIR: Optional[str]
|
|
CONFIG_FILE: Optional[str]
|
|
ONLY_NEW: bool
|
|
TIMEOUT: int
|
|
MEDIA_TIMEOUT: int
|
|
OUTPUT_PERMISSIONS: str
|
|
RESTRICT_FILE_NAMES: str
|
|
URL_DENYLIST: str
|
|
URL_ALLOWLIST: Optional[str]
|
|
ADMIN_USERNAME: Optional[str]
|
|
ADMIN_PASSWORD: Optional[str]
|
|
ENFORCE_ATOMIC_WRITES: bool
|
|
TAG_SEPARATOR_PATTERN: str
|
|
|
|
SECRET_KEY: Optional[str]
|
|
BIND_ADDR: str
|
|
ALLOWED_HOSTS: str
|
|
DEBUG: bool
|
|
PUBLIC_INDEX: bool
|
|
PUBLIC_SNAPSHOTS: bool
|
|
PUBLIC_ADD_VIEW: bool
|
|
FOOTER_INFO: str
|
|
SNAPSHOTS_PER_PAGE: int
|
|
CUSTOM_TEMPLATES_DIR: Optional[str]
|
|
TIME_ZONE: str
|
|
TIMEZONE: str
|
|
REVERSE_PROXY_USER_HEADER: str
|
|
REVERSE_PROXY_WHITELIST: str
|
|
LOGOUT_REDIRECT_URL: str
|
|
PREVIEW_ORIGINALS: bool
|
|
LDAP: bool
|
|
LDAP_SERVER_URI: Optional[str]
|
|
LDAP_BIND_DN: Optional[str]
|
|
LDAP_BIND_PASSWORD: Optional[str]
|
|
LDAP_USER_BASE: Optional[str]
|
|
LDAP_USER_FILTER: Optional[str]
|
|
LDAP_USERNAME_ATTR: Optional[str]
|
|
LDAP_FIRSTNAME_ATTR: Optional[str]
|
|
LDAP_LASTNAME_ATTR: Optional[str]
|
|
LDAP_EMAIL_ATTR: Optional[str]
|
|
LDAP_CREATE_SUPERUSER: bool
|
|
|
|
SAVE_TITLE: bool
|
|
SAVE_FAVICON: bool
|
|
SAVE_WGET: bool
|
|
SAVE_WGET_REQUISITES: bool
|
|
SAVE_SINGLEFILE: bool
|
|
SAVE_READABILITY: bool
|
|
SAVE_MERCURY: bool
|
|
SAVE_HTMLTOTEXT: bool
|
|
SAVE_PDF: bool
|
|
SAVE_SCREENSHOT: bool
|
|
SAVE_DOM: bool
|
|
SAVE_HEADERS: bool
|
|
SAVE_WARC: bool
|
|
SAVE_GIT: bool
|
|
SAVE_MEDIA: bool
|
|
SAVE_ARCHIVE_DOT_ORG: bool
|
|
SAVE_ALLOWLIST: dict
|
|
SAVE_DENYLIST: dict
|
|
|
|
RESOLUTION: str
|
|
GIT_DOMAINS: str
|
|
CHECK_SSL_VALIDITY: bool
|
|
MEDIA_MAX_SIZE: str
|
|
CURL_USER_AGENT: str
|
|
WGET_USER_AGENT: str
|
|
CHROME_USER_AGENT: str
|
|
COOKIES_FILE: Optional[str]
|
|
CHROME_USER_DATA_DIR: Optional[str]
|
|
CHROME_TIMEOUT: int
|
|
CHROME_HEADLESS: bool
|
|
CHROME_SANDBOX: bool
|
|
YOUTUBEDL_ARGS: list
|
|
WGET_ARGS: list
|
|
CURL_ARGS: list
|
|
GIT_ARGS: list
|
|
SINGLEFILE_ARGS: Optional[list]
|
|
FAVICON_PROVIDER: str
|
|
|
|
USE_INDEXING_BACKEND: bool
|
|
USE_SEARCHING_BACKEND: bool
|
|
SEARCH_BACKEND_ENGINE: str
|
|
SEARCH_BACKEND_HOST_NAME: str
|
|
SEARCH_BACKEND_PORT: int
|
|
SEARCH_BACKEND_PASSWORD: str
|
|
SEARCH_PROCESS_HTML: bool
|
|
SONIC_COLLECTION: str
|
|
SONIC_BUCKET: str
|
|
SEARCH_BACKEND_TIMEOUT: int
|
|
FTS_SEPARATE_DATABASE: bool
|
|
FTS_TOKENIZERS: str
|
|
FTS_SQLITE_MAX_LENGTH: int
|
|
|
|
USE_CURL: bool
|
|
USE_WGET: bool
|
|
USE_SINGLEFILE: bool
|
|
USE_READABILITY: bool
|
|
USE_MERCURY: bool
|
|
USE_GIT: bool
|
|
USE_CHROME: bool
|
|
USE_NODE: bool
|
|
USE_YOUTUBEDL: bool
|
|
USE_RIPGREP: bool
|
|
CURL_BINARY: str
|
|
GIT_BINARY: str
|
|
WGET_BINARY: str
|
|
SINGLEFILE_BINARY: str
|
|
READABILITY_BINARY: str
|
|
MERCURY_BINARY: str
|
|
YOUTUBEDL_BINARY: str
|
|
NODE_BINARY: str
|
|
RIPGREP_BINARY: str
|
|
CHROME_BINARY: Optional[str]
|
|
POCKET_CONSUMER_KEY: Optional[str]
|
|
POCKET_ACCESS_TOKENS: dict
|
|
READWISE_READER_TOKENS: dict
|
|
|
|
|
|
ConfigDefaultValueGetter = Callable[[ConfigDict], ConfigValue]
|
|
ConfigDefaultValue = Union[ConfigValue, ConfigDefaultValueGetter]
|
|
|
|
ConfigDefault = TypedDict('ConfigDefault', {
|
|
'default': ConfigDefaultValue,
|
|
'type': Optional[Type],
|
|
'aliases': Optional[Tuple[str, ...]],
|
|
}, total=False)
|
|
|
|
ConfigDefaultDict = Dict[str, ConfigDefault]
|