Skip to content

Commit 1ec0128

Browse files
committed
version 0.4b
update scons to build html readmes automatically. update NVDA compatibility versions.
1 parent 809197a commit 1ec0128

File tree

2 files changed

+56
-45
lines changed

2 files changed

+56
-45
lines changed

buildVars.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
# Translators: Long description to be shown for this add-on on add-on information from add-ons manager
2020
"addon_description" : _("""This add-on allows the user to select which settings should appear on the synth settings ring."""),
2121
# version
22-
"addon_version" : "0.3",
22+
"addon_version" : "0.4b",
2323
# Author(s)
2424
"addon_author" : u"David CM <[email protected]>",
2525
# URL for the add-on documentation support
@@ -29,7 +29,7 @@
2929
# Minimum NVDA version supported (e.g. "2018.3.0")
3030
"addon_minimumNVDAVersion" : "2018.2.0",
3131
# Last NVDA version supported/tested (e.g. "2018.4.0", ideally more recent than minimum version)
32-
"addon_lastTestedNVDAVersion" : "2019.2.0",
32+
"addon_lastTestedNVDAVersion" : "2019.3.0",
3333
# Add-on update channel (default is stable or None)
3434
"addon_updateChannel" : None,
3535
}

sconstruct

Lines changed: 54 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,19 @@ import gettext
88
import os
99
import os.path
1010
import zipfile
11-
import sys
12-
sys.dont_write_bytecode = True
13-
1411
import buildVars
1512

16-
1713
def md2html(source, dest):
1814
import markdown
1915
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"])
2617
headerDic = {
2718
"[[!meta title=\"": "# ",
2819
"\"]]": " #",
2920
}
3021
with codecs.open(source, "r", "utf-8") as f:
3122
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():
3424
mdText = mdText.replace(k, v, 1)
3525
htmlText = markdown.markdown(mdText)
3626
with codecs.open(dest, "w", "utf-8") as f:
@@ -47,14 +37,37 @@ def md2html(source, dest):
4737
f.write(htmlText)
4838
f.write("\n</body>\n</html>")
4939

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])
5658
env.Append(**buildVars.addon_info)
5759

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+
5871
addonFile = env.File("${addon_name}-${addon_version}.nvda-addon")
5972

6073
def addonGenerator(target, source, env, for_signature):
@@ -67,7 +80,6 @@ def manifestGenerator(target, source, env, for_signature):
6780
lambda target, source, env : "Generating manifest %s" % target[0])
6881
return action
6982

70-
7183
def translatedManifestGenerator(target, source, env, for_signature):
7284
dir = os.path.abspath(os.path.join(os.path.dirname(str(source[0])), ".."))
7385
lang = os.path.basename(dir)
@@ -76,9 +88,6 @@ def translatedManifestGenerator(target, source, env, for_signature):
7688
return action
7789

7890
env['BUILDERS']['NVDAAddon'] = Builder(generator=addonGenerator)
79-
env['BUILDERS']['markdown']=Builder(generator = generateHelpFiles,
80-
suffix='.html',
81-
src_suffix='.md')
8291
env['BUILDERS']['NVDAManifest'] = Builder(generator=manifestGenerator)
8392
env['BUILDERS']['NVDATranslatedManifest'] = Builder(generator=translatedManifestGenerator)
8493

@@ -93,8 +102,6 @@ def createAddonHelp(dir):
93102
readmeTarget = env.Command(readmePath, "readme.md", Copy("$TARGET", "$SOURCE"))
94103
env.Depends(addon, readmeTarget)
95104

96-
97-
98105
def createAddonBundleFromPath(path, dest):
99106
""" Creates a bundle from a directory that contains an addon manifest file."""
100107
basedir = os.path.abspath(path)
@@ -109,14 +116,17 @@ def createAddonBundleFromPath(path, dest):
109116
return dest
110117

111118
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"]
112122
with codecs.open(source, "r", "utf-8") as f:
113123
manifest_template = f.read()
114-
manifest = manifest_template.format(**buildVars.addon_info)
124+
manifest = manifest_template.format(**addon_info)
115125
with codecs.open(dest, "w", "utf-8") as f:
116126
f.write(manifest)
117127

118128
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
120130
vars = {}
121131
for var in ("addon_summary", "addon_description"):
122132
vars[var] = _(buildVars.addon_info[var])
@@ -131,10 +141,28 @@ def expandGlobs(files):
131141

132142
addon = env.NVDAAddon(addonFile, env.Dir('addon'))
133143

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+
134155
pythonFiles = expandGlobs(buildVars.pythonSources)
135156
for file in pythonFiles:
136157
env.Depends(addon, file)
137158

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+
138166
# Pot target
139167
i18nFiles = expandGlobs(buildVars.i18nSources)
140168
gettextvars={
@@ -156,21 +184,4 @@ manifest = env.NVDAManifest(os.path.join("addon", "manifest.ini"), os.path.join(
156184
env.Depends(manifest, "buildVars.py")
157185

158186
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)
175187
env.Default(addon)
176-
env.Clean (addon, ['.sconsign.dblite', 'addon/doc/en/'])

0 commit comments

Comments
 (0)