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