diff --git a/setup.py b/setup.py index 381a3155..66df62d4 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ import os import sys import glob -from shutil import copyfile +import shutil from setuptools import setup def get_data_files(): @@ -16,64 +16,85 @@ def get_data_files(): dest_dir = f'/usr/share/locale/{lang}/LC_MESSAGES' data_files.append((dest_dir, [locale_file])) - # Handle configuration files - directories = glob.glob('config/*') - for directory in directories: - files = glob.glob(directory+'/*') - dest_dir = '' - if 'config/punctuation' in directory: - dest_dir = '/etc/fenrirscreenreader/punctuation' - elif 'config/keyboard' in directory: - dest_dir = '/etc/fenrirscreenreader/keyboard' - elif 'config/settings' in directory: - dest_dir = '/etc/fenrirscreenreader/settings' - if not force_settings: - try: - files.remove('config/settings/settings.conf') - except ValueError: - pass - elif 'config/scripts' in directory: - dest_dir = '/usr/share/fenrirscreenreader/scripts' - if dest_dir: - data_files.append((dest_dir, files)) + # Handle /etc/fenrirscreenreader directories + etc_dirs = { + 'keyboard': '/etc/fenrirscreenreader/keyboard', + 'punctuation': '/etc/fenrirscreenreader/punctuation', + 'settings': '/etc/fenrirscreenreader/settings' + } + + for src_dir, dest_dir in etc_dirs.items(): + src_path = f'config/{src_dir}' + if os.path.exists(src_path): + files = glob.glob(f'{src_path}/*') + if src_dir == 'settings': + if not force_settings: + # Remove settings.conf if it exists in the list + files = [f for f in files if not f.endswith('settings.conf')] + # Ensure settings.conf.example is included + example_file = os.path.join(src_path, 'settings.conf.example') + if os.path.exists(example_file) and example_file not in files: + files.append(example_file) + if files: # Only add if there are files to copy + data_files.append((dest_dir, files)) - # Handle sound files - files = glob.glob('config/sound/default/*') - data_files.append(('/usr/share/sounds/fenrirscreenreader/default', files)) - files = glob.glob('config/sound/template/*') - data_files.append(('/usr/share/sounds/fenrirscreenreader/template', files)) + # Handle /usr/share/fenrirscreenreader directories + share_dirs = { + 'scripts': '/usr/share/fenrirscreenreader/scripts', + } + + for src_dir, dest_dir in share_dirs.items(): + src_path = f'config/{src_dir}' + if os.path.exists(src_path): + files = glob.glob(f'{src_path}/*') + if files: # Only add if there are files to copy + data_files.append((dest_dir, files)) + + # Handle sound directory separately since it has subdirectories + sound_src = 'config/sound' + if os.path.exists(sound_src): + # Handle default sounds + default_files = glob.glob(f'{sound_src}/default/*') + if default_files: + data_files.append(('/usr/share/sounds/fenrirscreenreader/default', default_files)) + + # Handle template sounds + template_files = glob.glob(f'{sound_src}/template/*') + if template_files: + data_files.append(('/usr/share/sounds/fenrirscreenreader/template', template_files)) + + # Handle tools directory + tools_files = glob.glob('tools/*') + if tools_files: + data_files.append(('/usr/share/fenrirscreenreader/tools', tools_files)) + + # Add man page + if os.path.exists('docs/fenrir.1'): + data_files.append(('/usr/share/man/man1', ['docs/fenrir.1'])) return data_files -def post_install_actions(): - force_settings = os.environ.get('FENRIR_FORCE_SETTINGS') == '1' - if not force_settings: - print('') - # create settings file from example if not exist - if not os.path.isfile('/etc/fenrirscreenreader/settings/settings.conf'): +if __name__ == "__main__": + setup(data_files=get_data_files()) + + # Post-install setup for settings.conf if needed + if not os.environ.get('FENRIR_FORCE_SETTINGS') == '1': + settings_path = '/etc/fenrirscreenreader/settings/settings.conf' + example_path = '/etc/fenrirscreenreader/settings/settings.conf.example' + if not os.path.exists(settings_path) and os.path.exists(example_path): try: - copyfile('/etc/fenrirscreenreader/settings/settings.conf.example', - '/etc/fenrirscreenreader/settings/settings.conf') - print('create settings file in /etc/fenrirscreenreader/settings/settings.conf') - except: - pass - else: - print('settings.conf file found. It is not overwritten automatically') - - print('') + shutil.copyfile(example_path, settings_path) + print(f'Created settings file: {settings_path}') + except Exception as e: + print(f'Note: Could not create {settings_path}: {e}') + + print('\nSetup complete!') print('To have Fenrir start at boot:') print('sudo systemctl enable fenrir') print('Pulseaudio users may want to run:') print('/usr/share/fenrirscreenreader/tools/configure_pulse.sh') print('once as their user account and once as root to configure Pulseaudio.') - print('Please install the following packages manually:') + print('\nPlease install the following packages manually:') print('- Speech-dispatcher: for the default speech driver') print('- Espeak: as basic TTS engine') print('- sox: is a player for the generic sound driver') - -if __name__ == "__main__": - setup( - data_files=get_data_files(), - ) - - post_install_actions()