Skip to content

Commit 672c681

Browse files
committed
add integration with appveyor to do automatic releasing.
1 parent dbbf2a9 commit 672c681

File tree

3 files changed

+74
-56
lines changed

3 files changed

+74
-56
lines changed

appveyor.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
version: '{branch}-{build}'
2+
environment:
3+
PY_PYTHON: 3.7-32
4+
install:
5+
- cmd: >-
6+
set PATH=C:\Python37\Scripts;%PATH%
7+
8+
pip install wheel
9+
10+
pip install scons
11+
12+
pip install markdown
13+
build_script:
14+
- cmd: scons
15+
artifacts:
16+
- path: '*.nvda-addon'
17+
name: addon
18+
type: WebDeployPackage
19+
before_deploy:
20+
- ps: $env:REPO_NAME = $env:APPVEYOR_REPO_NAME.Substring($env:APPVEYOR_REPO_NAME.IndexOf('/') + 1)
21+
deploy:
22+
- provider: GitHub
23+
tag: $(APPVEYOR_REPO_TAG_NAME)
24+
release: Release $(APPVEYOR_REPO_TAG_NAME)
25+
description: This is the release $(APPVEYOR_REPO_TAG_NAME) of the $(REPO_NAME) addon for the NVDA screen reader built and uploaded to GitHub using Appveyor.
26+
auth_token:
27+
secure: hwgAZezYq6+gi0L3+FGMaWOT/GBGeyVH9QqPxGSqVVGi3+VzqjMFy/9PcAMSE5cL
28+
artifact: addon
29+
on:
30+
appveyor_repo_tag: true

buildVars.py

Lines changed: 1 addition & 1 deletion
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 is the IBMTTS synthesizer driver for NVDA."""),
2121
# version
22-
"addon_version" : "19.2b6",
22+
"addon_version" : "19.5a1",
2323
# Author(s)
2424
"addon_author" : u"David CM <dhf360@gmail.com> and others",
2525
# URL for the add-on documentation support

sconstruct

Lines changed: 43 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,29 @@ import gettext
88
import os
99
import os.path
1010
import zipfile
11-
import six
11+
import sys
12+
sys.dont_write_bytecode = True
13+
1214
import buildVars
1315

16+
1417
def md2html(source, dest):
1518
import markdown
1619
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"])
1826
headerDic = {
1927
"[[!meta title=\"": "# ",
2028
"\"]]": " #",
2129
}
2230
with codecs.open(source, "r", "utf-8") as f:
2331
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:
2534
mdText = mdText.replace(k, v, 1)
2635
htmlText = markdown.markdown(mdText)
2736
with codecs.open(dest, "w", "utf-8") as f:
@@ -38,36 +47,13 @@ def md2html(source, dest):
3847
f.write(htmlText)
3948
f.write("\n</body>\n</html>")
4049

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
6054

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)
7157

7258
addonFile = env.File("${addon_name}-${addon_version}.nvda-addon")
7359

@@ -81,6 +67,7 @@ def manifestGenerator(target, source, env, for_signature):
8167
lambda target, source, env : "Generating manifest %s" % target[0])
8268
return action
8369

70+
8471
def translatedManifestGenerator(target, source, env, for_signature):
8572
dir = os.path.abspath(os.path.join(os.path.dirname(str(source[0])), ".."))
8673
lang = os.path.basename(dir)
@@ -89,6 +76,9 @@ def translatedManifestGenerator(target, source, env, for_signature):
8976
return action
9077

9178
env['BUILDERS']['NVDAAddon'] = Builder(generator=addonGenerator)
79+
env['BUILDERS']['markdown']=Builder(generator = generateHelpFiles,
80+
suffix='.html',
81+
src_suffix='.md')
9282
env['BUILDERS']['NVDAManifest'] = Builder(generator=manifestGenerator)
9383
env['BUILDERS']['NVDATranslatedManifest'] = Builder(generator=translatedManifestGenerator)
9484

@@ -103,6 +93,8 @@ def createAddonHelp(dir):
10393
readmeTarget = env.Command(readmePath, "readme.md", Copy("$TARGET", "$SOURCE"))
10494
env.Depends(addon, readmeTarget)
10595

96+
97+
10698
def createAddonBundleFromPath(path, dest):
10799
""" Creates a bundle from a directory that contains an addon manifest file."""
108100
basedir = os.path.abspath(path)
@@ -117,17 +109,14 @@ def createAddonBundleFromPath(path, dest):
117109
return dest
118110

119111
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"]
123112
with codecs.open(source, "r", "utf-8") as f:
124113
manifest_template = f.read()
125-
manifest = manifest_template.format(**addon_info)
114+
manifest = manifest_template.format(**buildVars.addon_info)
126115
with codecs.open(dest, "w", "utf-8") as f:
127116
f.write(manifest)
128117

129118
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
131120
vars = {}
132121
for var in ("addon_summary", "addon_description"):
133122
vars[var] = _(buildVars.addon_info[var])
@@ -142,28 +131,10 @@ def expandGlobs(files):
142131

143132
addon = env.NVDAAddon(addonFile, env.Dir('addon'))
144133

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-
156134
pythonFiles = expandGlobs(buildVars.pythonSources)
157135
for file in pythonFiles:
158136
env.Depends(addon, file)
159137

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-
167138
# Pot target
168139
i18nFiles = expandGlobs(buildVars.i18nSources)
169140
gettextvars={
@@ -185,4 +156,21 @@ manifest = env.NVDAManifest(os.path.join("addon", "manifest.ini"), os.path.join(
185156
env.Depends(manifest, "buildVars.py")
186157

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

0 commit comments

Comments
 (0)