Просмотр исходного кода

Merge pull request #549 from sharelatex/hof-replace-grunt-init

Replace grunt service initialisation with bash script
Henry Oswald 9 лет назад
Родитель
Сommit
f880cee1f6
2 измененных файлов с 32 добавлено и 31 удалено
  1. 17 31
      Gruntfile.coffee
  2. 15 0
      bin/install-services

+ 17 - 31
Gruntfile.coffee

@@ -87,9 +87,11 @@ module.exports = (grunt) ->
 	grunt.registerTask 'install:all', "Download and set up all ShareLaTeX services",
 		[].concat(
 			("install:#{service.name}" for service in SERVICES)
-		)
+		).concat(['postinstall'])
 
 	grunt.registerTask 'install', 'install:all'
+	grunt.registerTask 'postinstall', 'Explain postinstall steps', () ->
+		Helpers.postinstallMessage @async()
 
 	grunt.registerTask 'update:all', "Checkout and update all ShareLaTeX services",
 		["check:make"].concat(
@@ -120,16 +122,10 @@ module.exports = (grunt) ->
 		installService: (service, callback = (error) ->) ->
 			console.log "Installing #{service.name}"
 			Helpers.cloneGitRepo service, (error) ->
-				return callback(error) if error?
-				Helpers.installNpmModules service, (error) ->
-					return callback(error) if error?
-					Helpers.rebuildNpmModules service, (error) ->
-						return callback(error) if error?
-						Helpers.runGruntInstall service, (error) ->
-							return callback(error) if error?
-							console.log "Finished installing #{service.name}"
-							callback()
-
+				if error?
+					callback(error)
+				else
+					callback()
 
 		cloneGitRepo: (service, callback = (error) ->) ->
 			repo_src = service.repo
@@ -153,26 +149,16 @@ module.exports = (grunt) ->
 			proc.on "close", () ->
 				callback()
 
-
-		installNpmModules: (service, callback = (error) ->) ->
-			dir = service.name
-			proc = spawn "npm", ["install"], stdio: "inherit", cwd: dir
-			proc.on "close", () ->
-				callback()
-
-		# work around for https://github.com/npm/npm/issues/5400
-		# where binary modules are not built due to bug in npm
-		rebuildNpmModules: (service, callback = (error) ->) ->
-			dir = service.name
-			proc = spawn "npm", ["rebuild"], stdio: "inherit", cwd: dir
-			proc.on "close", () ->
-				callback()
-
-		runGruntInstall: (service, callback = (error) ->) ->
-			dir = service.name
-			proc = spawn "grunt", ["install"], stdio: "inherit", cwd: dir
-			proc.on "close", () ->
-				callback()
+		postinstallMessage: (callback = (error) ->) ->
+			grunt.log.write """
+			Services cloned:
+				#{service.name for service in SERVICES}
+			To install services run:
+				$ source bin/install-services
+			This will install the required node versions and run `npm install` for each service.
+			See https://github.com/sharelatex/sharelatex/pull/549 for more info.
+			"""
+			callback()
 
 		checkMake: (callback = (error) ->) ->
 			grunt.log.write "Checking make is installed... "

+ 15 - 0
bin/install-services

@@ -0,0 +1,15 @@
+#! env bash
+
+grep 'name:' config/services.js | \
+	sed 's/.*name: "\(.*\)",/\1/' | \
+	while read service
+	do
+		pushd $service &&
+		echo "Installing Service $service" &&
+		echo '  installing Node' &&
+		nvm install &&
+		nvm use &&
+		echo '  installing Dependencies' &&
+		npm install
+		popd
+	done