Second attempt at placing files into correct directories.
This commit is contained in:
parent
90d8e62db0
commit
c77d2bddd8
119
setup.py
119
setup.py
@ -2,7 +2,7 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import glob
|
import glob
|
||||||
from shutil import copyfile
|
import shutil
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
|
|
||||||
def get_data_files():
|
def get_data_files():
|
||||||
@ -16,64 +16,85 @@ def get_data_files():
|
|||||||
dest_dir = f'/usr/share/locale/{lang}/LC_MESSAGES'
|
dest_dir = f'/usr/share/locale/{lang}/LC_MESSAGES'
|
||||||
data_files.append((dest_dir, [locale_file]))
|
data_files.append((dest_dir, [locale_file]))
|
||||||
|
|
||||||
# Handle configuration files
|
# Handle /etc/fenrirscreenreader directories
|
||||||
directories = glob.glob('config/*')
|
etc_dirs = {
|
||||||
for directory in directories:
|
'keyboard': '/etc/fenrirscreenreader/keyboard',
|
||||||
files = glob.glob(directory+'/*')
|
'punctuation': '/etc/fenrirscreenreader/punctuation',
|
||||||
dest_dir = ''
|
'settings': '/etc/fenrirscreenreader/settings'
|
||||||
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 sound files
|
for src_dir, dest_dir in etc_dirs.items():
|
||||||
files = glob.glob('config/sound/default/*')
|
src_path = f'config/{src_dir}'
|
||||||
data_files.append(('/usr/share/sounds/fenrirscreenreader/default', files))
|
if os.path.exists(src_path):
|
||||||
files = glob.glob('config/sound/template/*')
|
files = glob.glob(f'{src_path}/*')
|
||||||
data_files.append(('/usr/share/sounds/fenrirscreenreader/template', files))
|
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 /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
|
return data_files
|
||||||
|
|
||||||
def post_install_actions():
|
if __name__ == "__main__":
|
||||||
force_settings = os.environ.get('FENRIR_FORCE_SETTINGS') == '1'
|
setup(data_files=get_data_files())
|
||||||
if not force_settings:
|
|
||||||
print('')
|
|
||||||
# create settings file from example if not exist
|
|
||||||
if not os.path.isfile('/etc/fenrirscreenreader/settings/settings.conf'):
|
|
||||||
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('')
|
# 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:
|
||||||
|
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('To have Fenrir start at boot:')
|
||||||
print('sudo systemctl enable fenrir')
|
print('sudo systemctl enable fenrir')
|
||||||
print('Pulseaudio users may want to run:')
|
print('Pulseaudio users may want to run:')
|
||||||
print('/usr/share/fenrirscreenreader/tools/configure_pulse.sh')
|
print('/usr/share/fenrirscreenreader/tools/configure_pulse.sh')
|
||||||
print('once as their user account and once as root to configure Pulseaudio.')
|
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('- Speech-dispatcher: for the default speech driver')
|
||||||
print('- Espeak: as basic TTS engine')
|
print('- Espeak: as basic TTS engine')
|
||||||
print('- sox: is a player for the generic sound driver')
|
print('- sox: is a player for the generic sound driver')
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
setup(
|
|
||||||
data_files=get_data_files(),
|
|
||||||
)
|
|
||||||
|
|
||||||
post_install_actions()
|
|
||||||
|
Loading…
Reference in New Issue
Block a user