| 
					
				 | 
			
			
				@@ -25343,7 +25343,7 @@ $globals.Setting.a$cls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.addClass("SmalltalkImage", $globals.Object, ["globalJsVariables", "packageDictionary"], "Kernel-Infrastructure"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$globals.SmalltalkImage.comment="I represent the Smalltalk system, wrapping\x0aoperations of variable `$core` declared in `support/boot.js`.\x0a\x0a## API\x0a\x0aI have only one instance, accessed with global variable `Smalltalk`.\x0a\x0a## Classes\x0a\x0aClasses can be accessed using the following methods:\x0a\x0a- `#classes` answers the full list of Smalltalk classes in the system\x0a- `#globals #at:` answers a specific global (usually, a class) or `nil`\x0a\x0a## Packages\x0a\x0aPackages can be accessed using the following methods:\x0a\x0a- `#packages` answers the full list of packages\x0a- `#packageAt:` answers a specific package or `nil`\x0a\x0a## Parsing\x0a\x0aThe `#parse:` method is used to parse Amber source code.\x0aIt requires the `Compiler` package and the `support/parser.js` parser file in order to work."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$globals.SmalltalkImage.comment="I represent the Smalltalk system, wrapping\x0aoperations of variable `$core` declared in `base/boot.js`.\x0a\x0a## API\x0a\x0aI have only one instance, accessed with global variable `Smalltalk`.\x0a\x0a## Classes\x0a\x0aClasses can be accessed using the following methods:\x0a\x0a- `#classes` answers the full list of Smalltalk classes in the system\x0a- `#globals #at:` answers a specific global (usually, a class) or `nil`\x0a\x0a## Packages\x0a\x0aPackages can be accessed using the following methods:\x0a\x0a- `#packages` answers the full list of packages\x0a- `#packageAt:` answers a specific package or `nil`\x0a\x0a## Parsing\x0a\x0aThe `#parse:` method is used to parse Amber source code.\x0aIt requires the `Compiler` package and the `base/parser.js` parser file in order to work."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "addGlobalJsVariable:", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -26138,11 +26138,11 @@ selector: "version", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 protocol: "accessing", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this,$self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return "0.22.2"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return "0.23.0-pre"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.22.2'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.23.0-pre'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68413,40 +68413,6 @@ $globals.FileServer.a$cls); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.addClass("Initer", $globals.BaseFileManipulator, ["childProcess", "nmPath"], "AmberCli"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "bowerInstallThenDo:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-protocol: "action", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this,$self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var child; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $core.withContext(function($ctx1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var $1,$3,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-child=$recv($self["@childProcess"])._fork_args_($self._npmScriptForModule_named_("bower","bower"),["install"]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=child; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($1)._on_do_("error",aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ctx1.sendIdx["on:do:"]=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($1)._on_do_("close",(function(code){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $core.withContext(function($ctx2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$3=$recv(code).__eq((0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if($core.assert($3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=nil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $recv(aBlock)._value_($2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx2) {$ctx2.fillBlock({code:code},$ctx1,1)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx1) {$ctx1.fill(self,"bowerInstallThenDo:",{aBlock:aBlock,child:child},$globals.Initer)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "bowerInstallThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09fork: (self npmScriptForModule: 'bower' named: 'bower')\x0a\x09\x09args: #('install').\x0a\x09child\x0a\x09\x09on: 'error' do: aBlock;\x0a\x09\x09on: 'close' do: [ :code |\x0a\x09\x09\x09aBlock value: (code = 0 ifTrue: [ nil ] ifFalse: [ code ]) ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "ifTrue:ifFalse:", "="] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$globals.Initer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "finishMessage", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68538,6 +68504,29 @@ messageSends: ["fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $globals.Initer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "initProjectThenDo:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+protocol: "action", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this,$self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var child; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $core.withContext(function($ctx1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+child=$recv($self["@childProcess"])._exec_thenDo_("npm run init",aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=$recv(child)._stdout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$ctx1.sendIdx["stdout"]=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$recv($1)._pipe_options_($recv(process)._stdout(),$globals.HashedCollection._newFromPairs_(["end",false])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx1) {$ctx1.fill(self,"initProjectThenDo:",{aBlock:aBlock,child:child},$globals.Initer)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "initProjectThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09exec: 'npm run init'\x0a\x09\x09thenDo: aBlock.\x0a\x09child stdout pipe: process stdout options: #{ 'end' -> false }", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["exec:thenDo:", "pipe:options:", "stdout"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$globals.Initer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "initialize", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68561,29 +68550,6 @@ messageSends: ["initialize", "value:", "join:with:", "rootDirname"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $globals.Initer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "npmInstallThenDo:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-protocol: "action", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this,$self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var child; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $core.withContext(function($ctx1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-child=$recv($self["@childProcess"])._exec_thenDo_("npm install",aBlock); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=$recv(child)._stdout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ctx1.sendIdx["stdout"]=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($1)._pipe_options_($recv(process)._stdout(),$globals.HashedCollection._newFromPairs_(["end",false])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx1) {$ctx1.fill(self,"npmInstallThenDo:",{aBlock:aBlock,child:child},$globals.Initer)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "npmInstallThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09exec: 'npm install'\x0a\x09\x09thenDo: aBlock.\x0a\x09child stdout pipe: process stdout options: #{ 'end' -> false }", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["exec:thenDo:", "pipe:options:", "stdout"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$globals.Initer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $core.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 selector: "npmScriptForModule:named:", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68625,48 +68591,34 @@ protocol: "action", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this,$self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $core.withContext(function($ctx1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var $1,$2,$3,$4,$5,$6,$7,$receiver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var $1,$2,$3,$4,$5,$receiver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $self._gruntInitThenDo_((function(error){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $core.withContext(function($ctx2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if(($receiver = error) == null || $receiver.a$nil){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $self._bowerInstallThenDo_((function(error2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $self._initProjectThenDo_((function(error2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $core.withContext(function($ctx3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if(($receiver = error2) == null || $receiver.a$nil){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $self._npmInstallThenDo_((function(error3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $core.withContext(function($ctx4) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if(($receiver = error3) == null || $receiver.a$nil){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $self._gruntThenDo_((function(error4){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $core.withContext(function($ctx5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $core.withContext(function($ctx4) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if(($receiver = error4) == null || $receiver.a$nil){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $self._finishMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $recv(process)._exit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$7=console; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($7)._log_("grunt exec error:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ctx5.sendIdx["log:"]=7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($7)._log_(error4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $recv(process)._exit_((104)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx5) {$ctx5.fillBlock({error4:error4},$ctx4,10)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $5=console; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($5)._log_("npm install exec error:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$recv($5)._log_("grunt exec error:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $ctx4.sendIdx["log:"]=5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$6=$recv($5)._log_(error3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ctx4.sendIdx["log:"]=6; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $recv(process)._exit_((103)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$ctx4.sendIdx["exit:"]=3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$recv($5)._log_(error4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $recv(process)._exit_((104)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, function($ctx4) {$ctx4.fillBlock({error3:error3},$ctx3,7)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, function($ctx4) {$ctx4.fillBlock({error4:error4},$ctx3,7)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $3=console; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$recv($3)._log_("bower install exec error:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$recv($3)._log_("npm run init exec error:"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $ctx3.sendIdx["log:"]=3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $4=$recv($3)._log_(error2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $ctx3.sendIdx["log:"]=4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $recv(process)._exit_((102)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $recv(process)._exit_((105)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $ctx3.sendIdx["exit:"]=2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx3) {$ctx3.fillBlock({error2:error2},$ctx2,4)}); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68686,9 +68638,9 @@ return self; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, function($ctx1) {$ctx1.fill(self,"start",{},$globals.Initer)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "start\x0a\x09self gruntInitThenDo: [ :error | error\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt-init exec error:'; log: error.\x0a\x09\x09process exit: 101 ]\x0a\x09ifNil: [\x0a\x0a\x09self bowerInstallThenDo: [ :error2 | error2\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'bower install exec error:'; log: error2.\x0a\x09\x09process exit: 102 ]\x0a\x09ifNil: [\x0a\x0a\x09self npmInstallThenDo: [ :error3 | error3\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'npm install exec error:'; log: error3.\x0a\x09\x09process exit: 103 ]\x0a\x09ifNil: [\x0a\x0a\x09self gruntThenDo: [ :error4 | error4\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt exec error:'; log: error4.\x0a\x09\x09process exit: 104 ]\x0a\x09ifNil: [\x0a\x0a\x09self finishMessage.\x0a\x09process exit ]]]]]]]]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "start\x0a\x09self gruntInitThenDo: [ :error | error\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt-init exec error:'; log: error.\x0a\x09\x09process exit: 101 ]\x0a\x09ifNil: [\x0a\x0a\x09self initProjectThenDo: [ :error2 | error2\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'npm run init exec error:'; log: error2.\x0a\x09\x09process exit: 105 ]\x0a\x09ifNil: [\x0a\x0a\x09self gruntThenDo: [ :error4 | error4\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt exec error:'; log: error4.\x0a\x09\x09process exit: 104 ]\x0a\x09ifNil: [\x0a\x0a\x09self finishMessage.\x0a\x09process exit ]]]]]]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["gruntInitThenDo:", "ifNotNil:ifNil:", "log:", "exit:", "bowerInstallThenDo:", "npmInstallThenDo:", "gruntThenDo:", "finishMessage", "exit"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["gruntInitThenDo:", "ifNotNil:ifNil:", "log:", "exit:", "initProjectThenDo:", "gruntThenDo:", "finishMessage", "exit"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $globals.Initer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |