File: prepareHTML

package info (click to toggle)
expeyes 5.3.3%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 43,480 kB
  • sloc: python: 36,039; ansic: 9,754; xml: 1,010; makefile: 784; sh: 581; asm: 202; javascript: 46; php: 1
file content (83 lines) | stat: -rwxr-xr-x 3,371 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#! /usr/bin/python3

#############################################
# This script updates help files for eyes17 #
#############################################
#
# it operates from a directory containing 'pics' and 'schematics' directories.
# the directory also contains all language directories,
# with their own 'pics' and 'schematics' inside.
#
# Script creates symlinks, if they do not exist, from the language-specific
# 'pics' and 'schematics' directories to the common files, except when a plain
# file with the same name already exists in the language-specific directory
#
############################################
# Managing translation of SVG files        #
# or a language-specific bitmap screenshot #
############################################
#
# When one wants to translate a vectorial image (SVG format), one must first
# delete the symlink from the language tree's 'schematics' directory, 
# rework the SVG file from the common 'schematics' directory, and save it
# as a plain file with the same name, but inside the language tree's directory.
#
# To install a language-specific screenshot, e.g. <lang>/pics/foo-screen.png,
# first delete the symlink from <lang>/pics/foo-screen.png to
# ../../foo-screen.png, then save a plain file in <lang>/pics/foo-screen.png
#
# BEWARE: symlinks must be removed prior to saving plain files!

import sys, argparse, os, glob

def checkAndRepairLinks (args, imgDir, globs):
  """
  check and repair symlinks from language-specific directories to
  common images. There is an exception for the files missing.*, which
  are specials; symlinks to them do not come from language-specific
  directories.
  :param args: parsed arguments
  :type  args: argparse.ArgumentParser
  :param imgDir: name of an image directory ("pics","schematics")
  :param globs: list of globbing expressions to get files (like "*.png")
  """
  print(f"establishing symlinks to images {', '.join(globs)} in {imgDir}")
  # find basenames of images inside pics common directory
  images = []
  for g in globs:
    images += glob.glob(os.path.join(args.destdir, imgDir, g))
  images = [os.path.basename(img) for img in images]
  images = [img for img in images  if not img.startswith("missing.")]
  for l in args.languages:
    print(f"language = {l}", end=" ")
    for img in images:
      path=os.path.join(args.destdir,l,imgDir,img)
      if os.path.exists(path):
        if os.path.islink(path):
          print(".", end="")
        else:
          print("o", end="")
      else:
        # path does not yet exist, create the symlink
        os.symlink(
          os.path.join('..','..',imgDir,img),
          os.path.join(args.destdir,l,imgDir,img)
        )
        print('+', end="")
    print()

if __name__ == "__main__":
  parser = argparse.ArgumentParser(prog='prepareHTML')
  parser.add_argument(
    'destdir', metavar='destdir', type=str,
    help='The directory where prepareHTML is supposed to work'
  )
  parser.add_argument(
    'languages', metavar='lang', type=str, nargs='+',
    help='list of language directories (for instance en es fr ml)'
  )
  args = parser.parse_args()
  print(f"Working in {args.destdir} for languages {', '.join(args.languages)}")
  checkAndRepairLinks (args, 'pics', ['*.jpg','*.png'])
  checkAndRepairLinks (args, 'schematics', ['*.svg'])
  print ("To convert RST files to HTML, please run 'make'")