Ver código fonte

Import web and doc updater as git repos, not npm modules

James Allen 12 anos atrás
pai
commit
5911a7fb43
4 arquivos alterados com 110 adições e 33 exclusões
  1. 3 0
      .gitignore
  2. 86 20
      Gruntfile.coffee
  3. 21 11
      config/settings.development.coffee
  4. 0 2
      package.json

+ 3 - 0
.gitignore

@@ -1 +1,4 @@
 node_modules
+
+web
+document-updater

+ 86 - 20
Gruntfile.coffee

@@ -1,3 +1,11 @@
+fs = require "fs"
+exec = require("child_process").exec
+spawn = require("child_process").spawn
+
+WEB_REPO = "git@bitbucket.org:sharelatex/web-sharelatex.git"
+DOC_UPDATER_REPO = "git@bitbucket.org:sharelatex/documentupdater-sharelatex.git"
+
+
 module.exports = (grunt) ->
 	grunt.loadNpmTasks 'grunt-bunyan'
 	grunt.loadNpmTasks 'grunt-execute'
@@ -7,9 +15,9 @@ module.exports = (grunt) ->
 	grunt.initConfig
 		execute:
 			web:
-				src: "node_modules/web-sharelatex/app.js"
+				src: "web/app.js"
 			'document-updater':
-				src: "node_modules/document-updater-sharelatex/app.js"
+				src: "document-updater/app.js"
 
 		concurrent:
 			all:
@@ -20,25 +28,39 @@ module.exports = (grunt) ->
 		availabletasks:
 			tasks:
 				options:
-		            filter: 'exclude',
-		            tasks: [
-		            	'concurrent'
-		            	'execute'
-		            	'bunyan'
-		            	'availabletasks'
-		           	]
-		            groups:
-		            	"Run tasks": [
-		            		"run"
-		            		"run:all"
-		            		"run:web"
-		            		"run:document-updater"
-		            		"default"
-		            	]
-		            	"Misc": [
-		            		"help"
-		            	]
+					filter: 'exclude',
+					tasks: [
+						'concurrent'
+						'execute'
+						'bunyan'
+						'availabletasks'
+						]
+					groups:
+						"Run tasks": [
+							"run"
+							"run:all"
+							"run:web"
+							"run:document-updater"
+							"default"
+						]
+						"Misc": [
+							"help"
+						]
 
+	grunt.registerTask 'install:web', "Download and set up the web-sharelatex service", () ->
+		done = @async()
+		Helpers.installService(WEB_REPO, "web", done)
+	grunt.registerTask 'install:document-updater', "Download and set up the document-updater-sharelatex service", () ->
+		done = @async()
+		Helpers.installService(DOC_UPDATER_REPO, "document-updater", done)
+
+	grunt.registerTask 'update:web', "Checkout and update the web-sharelatex service", () ->
+		done = @async()
+		Helpers.updateService("web", done)
+	grunt.registerTask 'update:document-updater', "Checkout and update the document-updater-sharelatex service", () ->
+		done = @async()
+		Helpers.updateService("document-updater", done)
+		
 	grunt.registerTask 'help', 'Display this help list', 'availabletasks'
 
 	grunt.registerTask 'run:web', "Run web-sharelatex, the ShareLaTeX web server", ["bunyan", "execute:web"]
@@ -49,3 +71,47 @@ module.exports = (grunt) ->
 
 	grunt.registerTask 'default', 'run'
 
+Helpers =
+	installService: (repo_src, dir, callback = (error) ->) ->
+		Helpers.cloneGitRepo repo_src, dir, (error) ->
+			return callback(error) if error?
+			Helpers.installNpmModules dir, (error) ->
+				return callback(error) if error?
+				Helpers.runGruntInstall dir, (error) ->
+					return callback(error) if error?
+					callback()
+
+	updateService: (dir, callback = (error) ->) ->
+		Helpers.updateGitRepo dir, (error) ->
+			return callback(error) if error?
+			Helpers.installNpmModules dir, (error) ->
+				return callback(error) if error?
+				Helpers.runGruntInstall dir, (error) ->
+					return callback(error) if error?
+					callback()
+
+	cloneGitRepo: (repo_src, dir, callback = (error) ->) ->
+		if !fs.existsSync(dir)
+			proc = spawn "git", ["clone", repo_src, dir], stdio: "inherit"
+			proc.on "close", () ->
+				callback()
+		else
+			console.log "#{dir} already installed, skipping."
+			callback()
+
+	updateGitRepo: (dir, callback = (error) ->) ->
+		proc = spawn "git", ["checkout", "master"], cwd: dir, stdio: "inherit"
+		proc.on "close", () ->
+			proc = spawn "git", ["pull"], cwd: dir, stdio: "inherit"
+			proc.on "close", () ->
+				callback()
+
+	installNpmModules: (dir, callback = (error) ->) ->
+		proc = spawn "npm", ["install"], stdio: "inherit", cwd: dir
+		proc.on "close", () ->
+			callback()
+
+	runGruntInstall: (dir, callback = (error) ->) ->
+		proc = spawn "grunt", ["install"], stdio: "inherit", cwd: dir
+		proc.on "close", () ->
+			callback()

+ 21 - 11
config/settings.testing.coffee → config/settings.development.coffee

@@ -20,7 +20,7 @@ module.exports =
 	# ------------
 	#
 	# ShareLaTeX stores binary files like images in S3.
-	# Fill in your Amazon S3 credential below.
+	# Fill in your Amazon S3 credentials below.
 	s3:
 		key: ""
 		secret: ""
@@ -29,7 +29,7 @@ module.exports =
 	# Databases
 	# ---------
 	mongo:
-		url : 'mongodb://127.0.0.1/sharelatexTesting'
+		url : 'mongodb://127.0.0.1/sharelatex'
 
 	redis:
 		web:
@@ -175,20 +175,30 @@ module.exports =
 	# cookie with a secure flag (recommended).
 	secureCookie: false
 
-
 	# Internal configs
 	# ----------------
 	path:
-		commonFolder: Path.resolve "common"
+		# If we ever need to write something to disk (e.g. incoming requests
+		# that need processing but may be too big for memory, then write
+		# them to disk here).
 		dumpFolder: Path.resolve "data/dumpFolder"
-		zippedProjects: Path.resolve "data/zippedProjects"
-		unzippedProjects: Path.resolve "data/unzippedProjects"
 	
+	# Automatic Snapshots
+	# -------------------
 	automaticSnapshots:
-		maxTimeBetweenSnapshots: 30 * minutes
+		# How long should we wait after the user last edited to 
+		# take a snapshot?
 		waitTimeAfterLastEdit: 5 * minutes
+		# Even if edits are still taking place, this is maximum
+		# time to wait before taking another snapshot.
+		maxTimeBetweenSnapshots: 30 * minutes
 
-	smokeTest:
-		user: "team+smoketest@sharelatex.com"
-		password: "smoketest"
-		projectId: "52b18a70249683c0a9000007"
+	# Smoke test
+	# ----------
+	# Provide log in credentials and a project to be able to run
+	# some basic smoke tests to check the core functionality.
+	#
+	# smokeTest:
+	# 	user: ""
+	# 	password: ""
+	# 	projectId: ""

+ 0 - 2
package.json

@@ -4,8 +4,6 @@
   "dependencies": {
     "logger-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/logger-sharelatex.git#bunyan",
     "settings-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/settings-sharelatex.git#master",
-    "web-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/web-sharelatex.git#master",
-    "document-updater-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/documentupdater-sharelatex.git#master",
     "coffee-script": "~1.7.1"
   },
   "devDependencies": {