Coverage for heliumcli/actions/startservers.py: 96.30%

27 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-11-14 23:25 +0000

1import os 

2import subprocess 

3 

4from .. import utils 

5 

6__author__ = "Alex Laird" 

7__copyright__ = "Copyright 2018, Helium Edu" 

8__version__ = "1.5.0" 

9 

10child_processes = [] 

11 

12 

13class StartServersAction: 

14 def __init__(self): 

15 self.name = "start-servers" 

16 self.help = "Launch known project servers to run locally" 

17 

18 def setup(self, subparsers): 

19 parser = subparsers.add_parser(self.name, help=self.help) 

20 parser.set_defaults(action=self) 

21 

22 def run(self, args): 

23 config = utils.get_config() 

24 projects_dir = utils.get_projects_dir() 

25 

26 # Identify dev servers (if present) and launch them 

27 processes = [] 

28 for project in utils.get_projects(config): 

29 if config["projectsRelativeDir"] != ".": 

30 project_path = os.path.join(projects_dir, project) 

31 else: 

32 project_path = os.path.join(projects_dir) 

33 

34 runserver_bin = os.path.join(project_path, config["serverBinFilename"]) 

35 

36 if os.path.exists(runserver_bin): 

37 processes.append(subprocess.Popen(runserver_bin)) 

38 

39 if len(processes) > 0: 

40 processes[-1].wait()