mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-01-03 09:25:42 +10:00
117 lines
10 KiB
Python
Executable File
117 lines
10 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Welcome to the ArchiveBox source code! Thanks for checking it out!
|
|
#
|
|
# "We are swimming upstream against a great torrent of disorganization.
|
|
# In this, our main obligation is to establish arbitrary enclaves of order and system.
|
|
# It is the greatest possible victory to be, to continue to be, and to have been.
|
|
# No defeat can deprive us of the success of having existed for some moment of time
|
|
# in a universe that seems indifferent to us."
|
|
# --Norber Weiner
|
|
|
|
__package__ = 'archivebox'
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ASCII_LOGO = """
|
|
█████╗ ██████╗ ██████╗██╗ ██╗██╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗ ██╗
|
|
██╔══██╗██╔══██╗██╔════╝██║ ██║██║██║ ██║██╔════╝ ██╔══██╗██╔═══██╗╚██╗██╔╝
|
|
███████║██████╔╝██║ ███████║██║██║ ██║█████╗ ██████╔╝██║ ██║ ╚███╔╝
|
|
██╔══██║██╔══██╗██║ ██╔══██║██║╚██╗ ██╔╝██╔══╝ ██╔══██╗██║ ██║ ██╔██╗
|
|
██║ ██║██║ ██║╚██████╗██║ ██║██║ ╚████╔╝ ███████╗ ██████╔╝╚██████╔╝██╔╝ ██╗
|
|
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
|
|
"""
|
|
|
|
PACKAGE_DIR = Path(__file__).resolve().parent
|
|
|
|
# # Add PACKAGE_DIR to sys.path - required for Django migrations to import models
|
|
# # Migrations reference models like 'machine.Binary' which need to be importable
|
|
# if str(PACKAGE_DIR) not in sys.path:
|
|
# sys.path.append(str(PACKAGE_DIR))
|
|
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'archivebox.core.settings'
|
|
os.environ['TZ'] = 'UTC'
|
|
|
|
# detect ArchiveBox user's UID/GID based on data dir ownership
|
|
from .config.permissions import drop_privileges # noqa
|
|
drop_privileges()
|
|
|
|
from .misc.checks import check_not_root, check_not_inside_source_dir, check_io_encoding # noqa
|
|
check_not_root()
|
|
check_not_inside_source_dir()
|
|
check_io_encoding()
|
|
|
|
# Install monkey patches for third-party libraries
|
|
from .misc.monkey_patches import * # noqa
|
|
|
|
# Built-in plugin directories
|
|
BUILTIN_PLUGINS_DIR = PACKAGE_DIR / 'plugins'
|
|
USER_PLUGINS_DIR = Path(os.getcwd()) / 'plugins'
|
|
|
|
# These are kept for backwards compatibility with existing code
|
|
# that checks for plugins. The new hook system uses discover_hooks()
|
|
ALL_PLUGINS = {
|
|
'builtin': BUILTIN_PLUGINS_DIR,
|
|
'user': USER_PLUGINS_DIR,
|
|
}
|
|
LOADED_PLUGINS = ALL_PLUGINS
|
|
|
|
# Setup basic config, constants, paths, and version
|
|
from .config.constants import CONSTANTS # noqa
|
|
from .config.paths import PACKAGE_DIR, DATA_DIR, ARCHIVE_DIR # noqa
|
|
from .config.version import VERSION # noqa
|
|
|
|
# Set MACHINE_ID env var so hook scripts can use it
|
|
os.environ.setdefault('MACHINE_ID', CONSTANTS.MACHINE_ID)
|
|
|
|
__version__ = VERSION
|
|
__author__ = 'ArchiveBox'
|
|
__license__ = 'MIT'
|
|
|
|
ASCII_ICON = """
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██████████████████████████████████████████████████████████████████████████████████████████████████
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ████████████████████████████████████ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ██ █████████████████████████ █ ██
|
|
██ ████████████████████████████████████ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██████████████████████████████████████████ ██
|
|
██ ██████████████████████████████████████████ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
██ ██
|
|
████████████████████████████████████████████████████████████████████████████████
|
|
"""
|