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

This commit is contained in:
James Allen 2014-02-12 10:21:20 +00:00
parent b1ae5cb7aa
commit 543c9f2878
4 changed files with 110 additions and 33 deletions

View file

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

View file

@ -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) -> module.exports = (grunt) ->
grunt.loadNpmTasks 'grunt-bunyan' grunt.loadNpmTasks 'grunt-bunyan'
grunt.loadNpmTasks 'grunt-execute' grunt.loadNpmTasks 'grunt-execute'
@ -7,9 +15,9 @@ module.exports = (grunt) ->
grunt.initConfig grunt.initConfig
execute: execute:
web: web:
src: "node_modules/web-sharelatex/app.js" src: "web/app.js"
'document-updater': 'document-updater':
src: "node_modules/document-updater-sharelatex/app.js" src: "document-updater/app.js"
concurrent: concurrent:
all: all:
@ -39,6 +47,20 @@ module.exports = (grunt) ->
"help" "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 'help', 'Display this help list', 'availabletasks'
grunt.registerTask 'run:web', "Run web-sharelatex, the ShareLaTeX web server", ["bunyan", "execute:web"] 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' 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()

View file

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

View file

@ -4,8 +4,6 @@
"dependencies": { "dependencies": {
"logger-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/logger-sharelatex.git#bunyan", "logger-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/logger-sharelatex.git#bunyan",
"settings-sharelatex": "git+ssh://git@bitbucket.org:sharelatex/settings-sharelatex.git#master", "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" "coffee-script": "~1.7.1"
}, },
"devDependencies": { "devDependencies": {