forked from RHVoice/RHVoice
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSConscript
52 lines (47 loc) · 1.99 KB
/
SConscript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# -*- coding: utf-8; mode: Python; indent-tabs-mode: t -*-
import sys
import os
import os.path
import RHVoicePackaging.nvda
import RHVoicePackaging.windows
import RHVoiceInfoParser
Import("env")
local_env=env.Clone()
def list_files(dir):
files=[]
for name in sorted(os.listdir(dir.abspath)):
node_path=os.path.join(dir.abspath,name)
if os.path.isfile(node_path):
files.append(dir.File(name))
elif os.path.isdir(node_path):
files.extend(list_files(dir.Dir(name)))
return files
root_dir=Dir(".").srcnode()
for dir_name in ["languages","voices"]:
type=dir_name[:-1]
dir=root_dir.Dir(dir_name)
for subdir_name in os.listdir(dir.abspath):
subdir=dir.Dir(subdir_name)
data_files=list_files(subdir)
props=RHVoiceInfoParser.parse(subdir.File(type+".info").abspath)
if type=="language":
props["language"]=props["name"]
props["type"]=type
version="{format}.{revision}".format(**props)
name_format_string="RHVoice-voice-{language}-{name}" if type=="voice" else "RHVoice-language-{name}"
name=name_format_string.format(**props)
description_format_string="{name} - {language} voice for RHVoice" if type=="voice" else "{name} language pack for RHVoice"
description=description_format_string.format(**props)
if sys.platform!="win32":
for f in data_files:
local_env.InstallData(f,os.path.relpath(f.Dir(".").abspath,root_dir.abspath))
packagers=dict()
if sys.platform=="win32":
pkgdir=Dir("..").Dir("packages")
packagers["nvda"]=RHVoicePackaging.nvda.addon_packager(name,pkgdir.Dir("nvda"),local_env,name,description,description,version)
packagers["sapi"]=RHVoicePackaging.windows.app_packager(name,pkgdir.Dir("sapi"),local_env,description,version,True)
for f in data_files:
packagers["nvda"].add(f,os.path.normpath(os.path.join("data",os.path.relpath(f.Dir(".").abspath,subdir.abspath))))
packagers["sapi"].add(f,os.path.normpath(os.path.join("data",type+"s",props["name"],os.path.relpath(f.Dir(".").abspath,subdir.abspath))))
for p in packagers.values():
p.package()