Files
wasm-encoding-tool/config/main.py

187 lines
4.9 KiB
Python

import configparser
from pathlib import PurePath
from typing import Callable
from .levels import levels
from .models import Algorithm
config = configparser.RawConfigParser()
config.read(
filenames='./config.ini',
encoding='utf-8',
)
class Main:
base_path = PurePath(config.get(
section='Main',
option='base_path',
))
max_threads = config.getint(
section='Main',
option='max_threads',
fallback=4,
)
log_level = levels.get(
config.get(
section='Main',
option='log_level',
fallback='info',
).upper()
)
class Input:
path = PurePath(config.get(
section='Input',
option='path',
))
class Output:
path = PurePath(config.get(
section='Output',
option='path',
))
dir_mode = int(config.get(
section='Output',
option='dir_mode',
fallback='755',
), 8)
file_mode = int(config.get(
section='Output',
option='file_mode',
fallback='644',
), 8)
class Wasm:
class Source:
enabled = config.getboolean(
section='Output.Wasm.Source',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Output.Wasm.Source',
option='path',
fallback=PurePath('.', 'wasm', 'src'),
))
class Brotli(Algorithm):
compress: Callable
name = 'Brotli'
enabled = config.getboolean(
section='Output.Wasm.Brotli',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Output.Wasm.Brotli',
option='path',
fallback=PurePath('.', 'wasm', 'br'),
))
level = config.getint(
section='Output.Wasm.Brotli',
option='level',
fallback=11,
)
class Zstandard(Algorithm):
compress: Callable
name = 'Zstandard'
enabled = config.getboolean(
section='Output.Wasm.Zstandard',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Output.Wasm.Zstandard',
option='path',
fallback=PurePath('.', 'wasm', 'zstd'),
))
level = config.getint(
section='Output.Wasm.Zstandard',
option='level',
fallback=22,
)
class Gzip(Algorithm):
compress: Callable
name = 'Gzip'
enabled = config.getboolean(
section='Output.Wasm.Gzip',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Output.Wasm.Gzip',
option='path',
fallback=PurePath('.', 'wasm', 'gzip'),
))
level = config.getint(
section='Output.Wasm.Gzip',
option='level',
fallback=9,
)
class Deflate(Algorithm):
compress: Callable
name = 'Deflate'
enabled = config.getboolean(
section='Output.Wasm.Deflate',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Output.Wasm.Deflate',
option='path',
fallback=PurePath('.', 'wasm', 'deflate'),
))
level = config.getint(
section='Output.Wasm.Deflate',
option='level',
fallback=9,
)
class Other:
enabled = config.getboolean(
section='Output.Other',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Output.Other',
option='path',
fallback=PurePath('.'),
))
class Backup:
enabled = config.getboolean(
section='Backup',
option='enabled',
fallback=True,
)
path = PurePath(config.get(
section='Backup',
option='path',
fallback=PurePath(Main.base_path, 'backup'),
))
Input.path = Main.base_path / Input.path
Output.path = Main.base_path / Output.path
Backup.path = Main.base_path / Backup.path
Output.Wasm.Source.path = Output.path / Output.Wasm.Source.path
Output.Wasm.Brotli.path = Output.path / Output.Wasm.Brotli.path
Output.Wasm.Zstandard.path = Output.path / Output.Wasm.Zstandard.path
Output.Wasm.Gzip.path = Output.path / Output.Wasm.Gzip.path
Output.Wasm.Deflate.path = Output.path / Output.Wasm.Deflate.path
Output.Other.path = Output.path / Output.Other.path