@@ -8,20 +8,29 @@ import gettext
8
8
import os
9
9
import os.path
10
10
import zipfile
11
- import six
11
+ import sys
12
+ sys.dont_write_bytecode = True
13
+
12
14
import buildVars
13
15
16
+
14
17
def md2html(source, dest):
15
18
import markdown
16
19
lang = os.path.basename(os.path.dirname(source)).replace('_', '-')
17
- title="{addonSummary} {addonVersion}".format(addonSummary=buildVars.addon_info["addon_summary"], addonVersion=buildVars.addon_info["addon_version"])
20
+ localeLang = os.path.basename(os.path.dirname(source))
21
+ try:
22
+ _ = gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[localeLang]).ugettext if sys.version_info.major == 2 else gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[localeLang]).gettext
23
+ title=u"{0}".format(_(buildVars.addon_info["addon_summary"]))
24
+ except:
25
+ title="{0}".format(buildVars.addon_info["addon_summary"])
18
26
headerDic = {
19
27
"[[!meta title=\"": "# ",
20
28
"\"]]": " #",
21
29
}
22
30
with codecs.open(source, "r", "utf-8") as f:
23
31
mdText = f.read()
24
- for k, v in six.iteritems(headerDic):
32
+ headerList = headerDic.iteritems () if sys.version_info.major == 2 else list(headerDic.items())
33
+ for k, v in headerList:
25
34
mdText = mdText.replace(k, v, 1)
26
35
htmlText = markdown.markdown(mdText)
27
36
with codecs.open(dest, "w", "utf-8") as f:
@@ -38,36 +47,13 @@ def md2html(source, dest):
38
47
f.write(htmlText)
39
48
f.write("\n</body>\n</html>")
40
49
41
- def mdTool(env):
42
- mdAction=env.Action(
43
- lambda target,source,env: md2html(source[0].path, target[0].path),
44
- lambda target,source,env: 'Generating %s'%target[0],
45
- )
46
- mdBuilder=env.Builder(
47
- action=mdAction,
48
- suffix='.html',
49
- src_suffix='.md',
50
- )
51
- env['BUILDERS']['markdown']=mdBuilder
52
-
53
- vars = Variables()
54
- vars.Add("version", "The version of this build", buildVars.addon_info["addon_version"])
55
- vars.Add(BoolVariable("dev", "Whether this is a daily development version", False))
56
- vars.Add("channel", "Update channel for this build", buildVars.addon_info["addon_updateChannel"])
57
-
58
- env = Environment(variables=vars, ENV=os.environ, tools=['gettexttool', mdTool])
59
- env.Append(**buildVars.addon_info)
50
+ def generateHelpFiles (source, target, env, for_signature):
51
+ action = env.Action(lambda target, source, env : md2html(source[0].abspath, target[0].abspath) and None,
52
+ lambda target, source, env : "Generating %s" % target[0])
53
+ return action
60
54
61
- if env["dev"]:
62
- import datetime
63
- buildDate = datetime.datetime.now()
64
- year, month, day = str(buildDate.year), str(buildDate.month), str(buildDate.day)
65
- env["addon_version"] = "".join([year, month.zfill(2), day.zfill(2), "-dev"])
66
- env["channel"] = "dev"
67
- elif env["version"] is not None:
68
- env["addon_version"] = env["version"]
69
- if "channel" in env and env["channel"] is not None:
70
- env["addon_updateChannel"] = env["channel"]
55
+ env = Environment(ENV=os.environ, tools=['gettexttool'])
56
+ env.Append(**buildVars.addon_info)
71
57
72
58
addonFile = env.File("${addon_name}-${addon_version}.nvda-addon")
73
59
@@ -81,6 +67,7 @@ def manifestGenerator(target, source, env, for_signature):
81
67
lambda target, source, env : "Generating manifest %s" % target[0])
82
68
return action
83
69
70
+
84
71
def translatedManifestGenerator(target, source, env, for_signature):
85
72
dir = os.path.abspath(os.path.join(os.path.dirname(str(source[0])), ".."))
86
73
lang = os.path.basename(dir)
@@ -89,6 +76,9 @@ def translatedManifestGenerator(target, source, env, for_signature):
89
76
return action
90
77
91
78
env['BUILDERS']['NVDAAddon'] = Builder(generator=addonGenerator)
79
+ env['BUILDERS']['markdown']=Builder(generator = generateHelpFiles,
80
+ suffix='.html',
81
+ src_suffix='.md')
92
82
env['BUILDERS']['NVDAManifest'] = Builder(generator=manifestGenerator)
93
83
env['BUILDERS']['NVDATranslatedManifest'] = Builder(generator=translatedManifestGenerator)
94
84
@@ -103,6 +93,8 @@ def createAddonHelp(dir):
103
93
readmeTarget = env.Command(readmePath, "readme.md", Copy("$TARGET", "$SOURCE"))
104
94
env.Depends(addon, readmeTarget)
105
95
96
+
97
+
106
98
def createAddonBundleFromPath(path, dest):
107
99
""" Creates a bundle from a directory that contains an addon manifest file."""
108
100
basedir = os.path.abspath(path)
@@ -117,17 +109,14 @@ def createAddonBundleFromPath(path, dest):
117
109
return dest
118
110
119
111
def generateManifest(source, dest):
120
- addon_info = buildVars.addon_info
121
- addon_info["addon_version"] = env["addon_version"]
122
- addon_info["addon_updateChannel"] = env["addon_updateChannel"]
123
112
with codecs.open(source, "r", "utf-8") as f:
124
113
manifest_template = f.read()
125
- manifest = manifest_template.format(**addon_info)
114
+ manifest = manifest_template.format(**buildVars. addon_info)
126
115
with codecs.open(dest, "w", "utf-8") as f:
127
116
f.write(manifest)
128
117
129
118
def generateTranslatedManifest(source, language, out):
130
- _ = gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[language]).gettext
119
+ _ = gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[language]).ugettext if sys.version_info.major == 2 else gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[language]). gettext
131
120
vars = {}
132
121
for var in ("addon_summary", "addon_description"):
133
122
vars[var] = _(buildVars.addon_info[var])
@@ -142,28 +131,10 @@ def expandGlobs(files):
142
131
143
132
addon = env.NVDAAddon(addonFile, env.Dir('addon'))
144
133
145
- langDirs = [f for f in env.Glob(os.path.join("addon", "locale", "*"))]
146
-
147
- #Allow all NVDA's gettext po files to be compiled in source/locale, and manifest files to be generated
148
- for dir in langDirs:
149
- poFile = dir.File(os.path.join("LC_MESSAGES", "nvda.po"))
150
- moFile=env.gettextMoFile(poFile)
151
- env.Depends(moFile, poFile)
152
- translatedManifest = env.NVDATranslatedManifest(dir.File("manifest.ini"), [moFile, os.path.join("manifest-translated.ini.tpl")])
153
- env.Depends(translatedManifest, ["buildVars.py"])
154
- env.Depends(addon, [translatedManifest, moFile])
155
-
156
134
pythonFiles = expandGlobs(buildVars.pythonSources)
157
135
for file in pythonFiles:
158
136
env.Depends(addon, file)
159
137
160
- #Convert markdown files to html
161
- createAddonHelp("addon") # We need at least doc in English and should enable the Help button for the add-on in Add-ons Manager
162
- for mdFile in env.Glob(os.path.join('addon', 'doc', '*', '*.md')):
163
- htmlFile = env.markdown(mdFile)
164
- env.Depends(htmlFile, mdFile)
165
- env.Depends(addon, htmlFile)
166
-
167
138
# Pot target
168
139
i18nFiles = expandGlobs(buildVars.i18nSources)
169
140
gettextvars={
@@ -185,4 +156,21 @@ manifest = env.NVDAManifest(os.path.join("addon", "manifest.ini"), os.path.join(
185
156
env.Depends(manifest, "buildVars.py")
186
157
187
158
env.Depends(addon, manifest)
159
+ createAddonHelp("addon") # We need at least doc in English and should enable the Help button for the add-on in Add-ons Manager
160
+ langDirs = [f for f in env.Glob(os.path.join("addon", "locale", "*"))]
161
+
162
+ #Allow all NVDA's gettext po files to be compiled in source/locale, and manifest files to be generated
163
+ for dir in langDirs:
164
+ poFile = dir.File(os.path.join("LC_MESSAGES", "nvda.po"))
165
+ moFile=env.gettextMoFile(poFile)
166
+ env.Depends(moFile, poFile)
167
+ translatedManifest = env.NVDATranslatedManifest(dir.File("manifest.ini"), [moFile, os.path.join("manifest-translated.ini.tpl")])
168
+ env.Depends(translatedManifest, ["buildVars.py"])
169
+ env.Depends(addon, [translatedManifest, moFile])
170
+ #Convert markdown files to html
171
+ for mdFile in env.Glob(os.path.join('addon', 'doc', '*', '*.md')):
172
+ htmlFile = env.markdown(mdFile)
173
+ env.Depends(htmlFile, [mdFile, moFile])
174
+ env.Depends(addon, htmlFile)
188
175
env.Default(addon)
176
+ env.Clean (addon, ['.sconsign.dblite', 'addon/doc/en/'])
0 commit comments