Coverage for pyquickhelper/helpgen/install_js_dep.py: 67%

45 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-03 02:21 +0200

1""" 

2@file 

3@brief Install javascript dependencies for the documentation generation. 

4""" 

5 

6import os 

7import shutil 

8from ..loghelper.flog import noLOG 

9from .install_custom import download_revealjs, download_requirejs 

10from ..filehelper import ( 

11 synchronize_folder, change_file_status, download) 

12from ..filehelper.internet_helper import ReadUrlException 

13 

14 

15def install_javascript_tools(root, dest, fLOG=noLOG, 

16 revealjs_github=False): 

17 """ 

18 Installs extra dependencies such as :epkg:`reveal.js`. 

19 

20 @param root location of the documentation 

21 @param dest location of static path 

22 @param fLOG logging function 

23 @param revealjs_github to get :epkg:`reveal.js` from github 

24 

25 The function will create sub folders in folder *root*. 

26 """ 

27 # delayed import to speed up time 

28 from ..sphinxext import revealjs 

29 

30 # reveal.js 

31 if revealjs_github: 

32 rev = os.path.join(dest, "reveal.js") 

33 if not os.path.exists(rev): 

34 lfiles = download_revealjs(root, dest, fLOG=fLOG) 

35 else: 

36 lfiles = [] 

37 else: 

38 rev = os.path.join(dest, "reveal.js") 

39 if not os.path.exists(rev): 

40 folder = os.path.dirname(revealjs.__file__) 

41 js = os.path.join(folder, "templates", "revealjs", "static") 

42 os.mkdir(rev) 

43 sync = synchronize_folder(js, rev, copy_1to2=True, fLOG=fLOG) 

44 fulls = [s[1].fullname for s in sync] 

45 change_file_status(rev) 

46 lfiles = fulls 

47 else: 

48 lfiles = [] 

49 

50 # require.js 

51 expected = os.path.join(dest, "require.js") 

52 if not os.path.exists(expected): 

53 try: 

54 one = download_requirejs(dest, fLOG=fLOG) 

55 except ReadUrlException: 

56 name = os.path.join(os.path.dirname(__file__), "require.js") 

57 shutil.copy(name, expected) 

58 one = [expected] 

59 else: 

60 one = [expected] 

61 lfiles.extend(one) 

62 

63 # embed-ams.js 

64 expected = os.path.join(dest, "embed-amd.js") 

65 if not os.path.exists(expected): 

66 url = "https://unpkg.com/@jupyter-widgets/html-manager@0.20.0/dist/embed-amd.js" 

67 try: 

68 one = [download(url, dest, fLOG=fLOG)] 

69 except ReadUrlException: 

70 name = os.path.join(os.path.dirname(__file__), "embed-amd.js") 

71 shutil.copy(name, expected) 

72 one = [expected] 

73 else: 

74 one = [expected] 

75 lfiles.extend(one) 

76 return lfiles