2 # -*- coding: utf-8 -*-
3 # create-version-itexi.py
5 """ when being called on lilypond.org, pass it the location of the
6 top source dir on the command-line. """
12 # these links are relative from /website/ on lilypond.org
15 ### translation data -- shouldn't be here; see issue
16 ### http://code.google.com/p/lilypond/issues/detail?id=1050
18 # don't add your language to this list unless you have all the
20 # Hmm, is this a feature -- why not keep original english as a fallback?
21 langs = ['', 'es', 'nl']
23 # Get/update node translations
25 for i in es fr nl de hu ja it; do
27 (echo '--' ; grep -nH -B1 translationof Documentation/$i/web/*) \
28 | pytt '^--\n.*@(?:unnum|sub)[^ ]* (.*)\n.*@translationof (.*)\n' "'\2': '\1',\n" \
29 | grep -E 'Source|Learning|Glossary|Essay|Notation|Usage|Snippets|Web|Changes|Extending|Internals|Contributor'
36 'Source': 'Código fuente',
38 'Learning': 'Aprendizaje',
39 'Music glossary': 'Glosario',
41 'Notation': 'Notación',
42 'Usage': 'Utilización',
43 'Snippets': 'Fragmentos',
46 'Extending': 'Extensión',
47 'Internals': 'Funcionamiento interno',
48 'Contributor': 'Guía del colaborador',
51 ' (split HTML)': ' (HTML seccionado)',
52 ' (big HTML)': ' (HTML monolítico)',
54 'Regression tests for ': 'Pruebas de regresión para ',
55 'PDF of regtests for ': 'Pruebas en PDF para ',
56 'MusicXML Regression tests for ': 'Pruebas de regresión de MusicXML para ',
57 'PDF of MusicXML regtests for ': 'Pruebas de MusicXML en PDF para ',
59 'Doc tarball for ': 'Tarball de la documentación para ',
60 ' (did not exist in 2.12)': ' (no existía en la versión 2.12)',
64 'Learning': 'Initiation',
65 'Music glossary': 'Glossaire',
67 'Notation': 'Notation',
68 'Usage': 'Utilisation',
69 'Snippets': 'Morceaux choisis',
71 'Changes': 'Nouveautés',
72 'Internals': 'Propriétés internes',
79 'Learning': 'Beginnen',
80 'Music glossary': 'Terminologie',
82 'Notation': 'Notatie',
84 'Snippets': 'Snippers',
86 'Changes': 'Veranderingen',
87 'Extending': 'Uitbreidingen',
88 'Internals': 'Internals',
89 'Contributor': 'Contributor',
92 ' (split HTML)': ' (opgesplitste HTML)',
93 ' (big HTML)': ' (grote pagina HTML)',
95 'Regression tests for ': 'Regressietesten voor ',
96 'PDF of regtests for ': 'PDF van regressietesten voor ',
97 'MusicXML Regression tests for ': 'MusicXML regressietesten voor ',
98 'PDF of MusicXML regtests for ': 'MusicXML regressietesten voor ',
100 'Doc tarball for ': 'Tarball met documentation voor ',
101 ' (did not exist in 2.12)': ' (bestond nog niet in 2.12)',
105 'Learning': 'Einführung',
106 'Music glossary': 'Glossar',
108 'Notation': 'Notation',
109 'Usage': 'Benutzung',
110 'Snippets': 'Schnipsel',
112 'Changes': 'Änderungen',
113 'Internals': 'Interna',
119 'Learning': 'Tankönyv',
120 'Music glossary': 'Fogalomtár',
122 'Notation': 'Kottaírás',
123 'Usage': 'Használat',
124 'Snippets': 'Kódrészletek',
126 'Changes': 'Változások',
127 'Internals': 'Belső működés',
134 'Music glossary': '用語集',
138 'Snippets': 'コード断片集',
141 'Internals': '内部リファレンス',
159 myDir = os.path.dirname(sys.argv[0])
160 # use two abspaths to work around some windows python bug
161 topDir = os.path.join(os.path.abspath(myDir)+os.sep+'..'+os.sep+'..'+os.sep)
162 topDir = os.path.abspath( topDir )
165 # TODO: this might be useful for other scripts; can we make it available?
166 manuals = map(lambda x: os.path.splitext(x)[0],
167 map(os.path.basename,
168 glob.glob(os.path.join(topDir,'Documentation', '*.te??'))))
169 #manuals = map(lambda x: 'glossary' if x=='music-glossary' else x, manuals)
170 manuals.append('internals')
173 version_file_path = os.path.join(topDir, "VERSION")
175 version_contents = open(version_file_path).readlines()
179 for line in version_contents:
180 if (line.startswith('MAJOR_VERSION')):
182 if (line.startswith('MINOR_VERSION')):
184 if (line.startswith('PATCH_LEVEL')):
186 if (line.startswith('VERSION_STABLE')):
187 VERSION_STABLE = line[15:-1]
188 if (line.startswith('VERSION_DEVEL')):
189 VERSION_DEVEL = line[14:-1]
191 VERSION = str(major)+'.'+str(minor)+'.'+str(patch)
193 def getTrans(text, lang):
195 text = translations[lang][text]
198 def macroLang(name, lang):
200 return name + '-' + lang
203 def make_macro(name, string):
209 def make_download(name, osA, osB, version, revision, text):
210 string = "@uref{http://download.linuxaudio.org/lilypond/binaries/"
211 string += osA + "lilypond-"
212 string += version + "-" + revision
213 string += "." + osB + ",\n"
215 string += ": LilyPond "
216 string += version + "-" + revision
218 make_macro(name, string)
220 def make_download_source(name, vstring, version, lang):
221 string = "@uref{http://download.linuxaudio.org/lilypond/sources/"
222 string += vstring + "/"
223 string += "lilypond-" + version + ".tar.gz"
225 string += getTrans("Source", lang)
226 string += ": lilypond-" + version + ".tar.gz"
228 make_macro(macroLang(name,lang), string)
230 def make_all_downloads(macroName, version):
231 make_download("download"+macroName+"LinuxNormal", "linux-x86/",
232 "linux-x86.sh", version, "1", "Linux x86")
233 make_download("download"+macroName+"LinuxBig", "linux-64/",
234 "linux-64.sh", version, "1", "Linux 64")
235 make_download("download"+macroName+"LinuxPPC", "linux-ppc/",
236 "linux-ppc.sh", version, "1", "Linux PPC")
238 make_download("download"+macroName+"FreeBSDNormal", "freebsd-x86/",
239 "freebsd-x86.sh", version, "1", "FreeBSD i386")
240 make_download("download"+macroName+"FreeBSDBig", "freebsd-64/",
241 "freebsd-64.sh", version, "1", "FreeBSD amd64")
243 make_download("download"+macroName+"DarwinNormal", "darwin-x86/",
244 "darwin-x86.tar.bz2", version, "1", "MacOS X x86")
245 make_download("download"+macroName+"DarwinPPC", "darwin-ppc/",
246 "darwin-ppc.tar.bz2", version, "1", "MacOS X PPC")
248 make_download("download"+macroName+"Windows", "mingw/",
249 "mingw.exe", version, "1", "Windows")
251 def make_ver_link(macroname, url, linktext):
257 make_macro(macroname, string)
259 # TODO: this kind of thing should really be in a central place for
260 # lilypond python build scripts
261 def translateNameToUrl(manual, version):
262 ver_split = version.split('.')
263 ver_minor = ver_split[0] + '.' + ver_split[1]
264 url = depth + "doc/v" + ver_minor + "/Documentation/"
266 if (ver_minor == '2.13'):
268 if (ver_minor == '2.12'):
269 if (manual=='learning'):
270 return url+'user/lilypond-learning'
271 elif (manual=='internals'):
272 return url+'user/lilypond-internals'
273 elif (manual=='notation'):
274 return url+'user/lilypond'
275 elif (manual=='usage'):
276 return url+'user/lilypond-program'
277 elif (manual=='snippets'):
278 return url+'../input/lsr/lilypond-snippets'
279 elif (manual=='changes'):
280 return url+'topdocs/NEWS.html'
281 elif (manual=='music-glossary'):
282 return url+'user/music-glossary'
283 elif (manual=='essay'):
284 return url+'user/lilypond-learning/Background.html'
285 elif (manual=='extending'):
286 return url+'user/lilypond/Interfaces-for-programmers.html'
291 def make_manual_links(name, version, lang):
292 """Here is where all the macros manualStableLearningSplit,
293 manualStableLearningBig, manualStableLearningSplitNoName, etc. are
294 created on the fly. Hopefully this documentation string will help
295 others a bit while grepping for those.
299 # TODO: this is a stupid way of doing it
300 if (m=='music-glossary'):
303 mshort = m.capitalize()
304 if (manual=='music-glossary'):
305 manual = 'Music glossary'
306 url = translateNameToUrl(m, version)
309 # can't have a comma here due to texinfo
310 make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
311 "http://lilypond.org",
312 mshort+getTrans(" (did not exist in 2.12)",lang))
313 make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
314 "http://lilypond.org",
315 mshort+getTrans(" (did not exist in 2.12)",lang))
316 make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
317 "http://lilypond.org",
318 mshort+getTrans(" (did not exist in 2.12)",lang))
319 make_ver_link(macroLang("manual"+name+mshort+'SplitNoName',lang),
320 "http://lilypond.org",
321 mshort+getTrans(" (did not exist in 2.12)",lang))
323 make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
325 getTrans(manual.capitalize(),lang) + '.pdf')
326 make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
328 getTrans(manual.capitalize(),lang) +
329 getTrans(' (split HTML)',lang))
330 make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
331 url + '-big-page.html',
332 getTrans(manual.capitalize(),lang) +
333 getTrans(' (big HTML)',lang))
334 # this is stupid and I shouldn't have bothered trying
335 # to support the 2.12 docs and it will be deleted once
336 # 2.14 is out and the website won't be visible to users
337 # until 2.14 is out. -gp
338 if (url.endswith('.html')):
341 newurl = url + '/index.html'
342 make_ver_link(macroLang("manual"+name+mshort+'SplitNoName',lang),
344 getTrans(manual.capitalize(),lang))
346 def make_regtest_links(name, version, lang):
347 ver_split = version.split('.')
348 ver_minor = ver_split[0] + '.' + ver_split[1]
349 url = depth + "doc/v" + ver_minor + "/input/regression/"
351 make_ver_link(macroLang("regtest"+name, lang),
352 url+"collated-files.html",
353 getTrans("Regression tests for ", lang)+version)
354 make_ver_link(macroLang("regtest"+name+"Pdf", lang),
355 url+"collated-files.pdf",
356 getTrans("PDF of regtests for ", lang)+version)
357 make_ver_link(macroLang("regtest"+name+"Xml", lang),
358 url+"musicxml/collated-files.html",
359 getTrans("MusicXML Regression tests for ", lang)+version)
360 make_ver_link(macroLang("regtest"+name+"XmlPdf", lang),
361 url+"musicxml/collated-files.html",
362 getTrans("PDF of MusicXML regtests for ", lang)+version)
364 def make_doctarball_links(name, version, lang):
365 url = depth + "download/binaries/documentation/lilypond-"
366 # ugly FIXME, but proper build number support isn't Critical.
367 url += version + "-1"
368 url += ".documentation.tar.bz2"
369 make_ver_link(macroLang("doctarball"+name, lang),
370 url, getTrans("Doc tarball for ", lang)+version)
372 print "@c ************************ Download binaries ************"
373 make_all_downloads("Stable", VERSION_STABLE)
374 make_all_downloads("Devel", VERSION_DEVEL)
376 print "@c ************************ Download source ************"
377 # FIXME: icky hard-coding! -gp
379 print "@c *********", lang, "***"
380 make_download_source("downloadStableSource","v2.12",VERSION_STABLE,lang)
381 make_download_source("downloadDevelSource","v2.13",VERSION_DEVEL,lang)
383 print "@c ************************ Manual links ************"
385 print "@c *********", lang, "***"
386 make_manual_links("Stable", VERSION_STABLE,lang)
387 make_manual_links("Devel", VERSION_DEVEL,lang)
389 make_doctarball_links("Stable", VERSION_STABLE,lang)
390 make_doctarball_links("Devel", VERSION_DEVEL,lang)
392 print "@c ************************ Regtest links ************"
394 print "@c *********", lang, "***"
395 make_regtest_links("Stable", VERSION_STABLE,lang)
396 make_regtest_links("Devel", VERSION_DEVEL,lang)