comparison piecrust/processing/less.py @ 1112:a3dec0fbd9ce

bake: Fix bug on Windows where shim scripts of NodeJS tools couldn't run.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 20 Feb 2018 22:15:57 -0800
parents 63be34ce6e65
children fac4483867a5
comparison
equal deleted inserted replaced
1111:98c7dd6ea4ac 1112:a3dec0fbd9ce
75 args += self._conf['options'] 75 args += self._conf['options']
76 args.append(in_path) 76 args.append(in_path)
77 args.append(out_path) 77 args.append(out_path)
78 logger.debug("Processing LESS file: %s" % args) 78 logger.debug("Processing LESS file: %s" % args)
79 79
80 # On Windows, we need to run the process in a shell environment
81 # otherwise it looks like `PATH` isn't taken into account.
82 shell = (platform.system() == 'Windows')
83 try: 80 try:
84 proc = subprocess.Popen( 81 proc = subprocess.Popen(args, stderr=subprocess.PIPE)
85 args, shell=shell,
86 stderr=subprocess.PIPE)
87 stdout_data, stderr_data = proc.communicate() 82 stdout_data, stderr_data = proc.communicate()
88 except FileNotFoundError as ex: 83 except FileNotFoundError as ex:
89 logger.error("Tried running LESS processor with command: %s" % 84 logger.error("Tried running LESS processor with command: %s" %
90 args) 85 args)
91 raise Exception("Error running LESS processor. " 86 raise Exception("Error running LESS processor. "
103 98
104 def _ensureInitialized(self): 99 def _ensureInitialized(self):
105 if self._conf is not None: 100 if self._conf is not None:
106 return 101 return
107 102
103 bin_name = 'lessc'
104 if platform.system() == 'Windows':
105 bin_name += '.cmd'
106
108 self._conf = self.app.config.get('less') or {} 107 self._conf = self.app.config.get('less') or {}
109 self._conf.setdefault('bin', 'lessc') 108 self._conf.setdefault('bin', bin_name)
110 self._conf.setdefault('options', ['--compress']) 109 self._conf.setdefault('options', ['--compress'])
111 if not isinstance(self._conf['options'], list): 110 if not isinstance(self._conf['options'], list):
112 raise Exception("The `less/options` configuration setting " 111 raise Exception("The `less/options` configuration setting "
113 "must be an array of arguments.") 112 "must be an array of arguments.")
114 113