import cp from 'child_process';
import queue from 'queue';
import ms from 'ms';
import {yarn, plugs} from '../config/paths';

export default {
  install: fn => {
    const spawnQueue = queue({concurrency: 1});
    function yarnFn(args, cb) {
      const env = {
        NODE_ENV: 'production',
        ELECTRON_RUN_AS_NODE: 'true'
      };
      spawnQueue.push(end => {
        const cmd = [process.execPath, yarn].concat(args).join(' ');
        //eslint-disable-next-line no-console
        console.log('Launching yarn:', cmd);

        cp.execFile(
          process.execPath,
          [yarn].concat(args),
          {
            cwd: plugs.base,
            env,
            timeout: ms('5m'),
            maxBuffer: 1024 * 1024
          },
          (err, stdout, stderr) => {
            if (err) {
              cb(stderr);
            } else {
              cb(null);
            }
            end();
            spawnQueue.start();
          }
        );
      });

      spawnQueue.start();
    }

    yarnFn(['install', '--no-emoji', '--no-lockfile', '--cache-folder', plugs.cache], err => {
      if (err) {
        return fn(err);
      }
      fn(null);
    });
  }
};

@@ -130,27 +130,21 @@
 ort 
-default %7B%0A 
+const
  install
 : fn
@@ -139,17 +139,18 @@
  install
-:
+ =
  fn =%3E %7B
@@ -150,18 +150,16 @@
 fn =%3E %7B%0A
-  
   const 
@@ -196,18 +196,16 @@
 y: 1%7D);%0A
-  
   functi
@@ -226,26 +226,24 @@
 , cb) %7B%0A    
-  
 const env = 
@@ -244,18 +244,16 @@
 env = %7B%0A
-  
       NO
@@ -280,18 +280,16 @@
 ,%0A      
-  
 ELECTRON
@@ -317,15 +317,11 @@
     
-  
 %7D;%0A
-  
     
@@ -347,26 +347,24 @@
  =%3E %7B%0A      
-  
 const cmd = 
@@ -418,18 +418,16 @@
 ;%0A      
-  
 //eslint
@@ -456,18 +456,16 @@
 console%0A
-  
       co
@@ -506,18 +506,16 @@
 %0A%0A      
-  
 cp.execF
@@ -519,18 +519,16 @@
 ecFile(%0A
-  
         
@@ -545,18 +545,16 @@
 ecPath,%0A
-  
         
@@ -586,14 +586,10 @@
     
-  %7B%0A  
+%7B%0A
     
@@ -611,18 +611,16 @@
 s.base,%0A
-  
         
@@ -636,18 +636,16 @@
         
-  
 timeout:
@@ -655,18 +655,16 @@
 ('5m'),%0A
-  
         
@@ -688,18 +688,16 @@
  * 1024%0A
-  
         
@@ -707,18 +707,16 @@
         
-  
 (err, st
@@ -740,26 +740,24 @@
 %7B%0A          
-  
 if (err) %7B%0A 
@@ -751,26 +751,24 @@
  if (err) %7B%0A
-  
             
@@ -789,18 +789,16 @@
         
-  
 %7D else %7B
@@ -798,18 +798,16 @@
  else %7B%0A
-  
         
@@ -820,18 +820,16 @@
 (null);%0A
-  
         
@@ -846,19 +846,15 @@
     
-  
 end();%0A
-  
     
@@ -875,26 +875,24 @@
 ue.start();%0A
-  
         %7D%0A  
@@ -899,15 +899,11 @@
     
-  
 );%0A
-  
     
@@ -903,26 +903,24 @@
 );%0A    %7D);%0A%0A
-  
     spawnQue
@@ -935,17 +935,13 @@
 ();%0A
-  
   %7D%0A%0A
-  
   ya
@@ -1025,26 +1025,24 @@
 %5D, err =%3E %7B%0A
-  
     if (err)
@@ -1050,18 +1050,16 @@
 %7B%0A      
-  
 return f
@@ -1066,30 +1066,26 @@
 n(err);%0A    
-  %7D%0A  
+%7D%0A
     fn(null)
@@ -1090,19 +1090,13 @@
 l);%0A
-  
   %7D);%0A
-  %7D%0A
 %7D;%0A

change export syntax in app/plugins/install.js