From 9d3a7da513e1e1ca8495b038db9bd152a3b5829d Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Fri, 27 Mar 2015 11:40:16 -0700 Subject: [PATCH] Updated, sorted and cleaned up server libraries. --- app/templates/common/base.jade | 4 - karma.conf.js | 4 +- package.json | 87 ++-- scripts/devSetup/.gitignore | 1 - scripts/devSetup/bootstrap.sh | 70 --- scripts/devSetup/configuration.py | 19 - scripts/devSetup/dependency.py | 13 - scripts/devSetup/directoryController.py | 55 --- scripts/devSetup/downloader.py | 41 -- scripts/devSetup/errors.py | 19 - scripts/devSetup/factories.py | 88 ---- scripts/devSetup/mongo.py | 109 ----- scripts/devSetup/node.py | 162 ------- scripts/devSetup/repositoryInstaller.py | 71 --- scripts/devSetup/ruby.py | 42 -- scripts/devSetup/setup.py | 48 -- scripts/devSetup/systemConfiguration.py | 40 -- scripts/devSetup/which.py | 66 --- scripts/runAfterGit.coffee | 124 ------ scripts/windows/SCOCODE.bat | 5 - scripts/windows/coco-dev-setup/.gitignore | 2 - .../coco-dev-setup/batch/config/config.coco | 9 - .../batch/config/downloads.coco | 45 -- .../batch/config/finished_header.coco | 7 - .../batch/config/github_header.coco | 7 - .../coco-dev-setup/batch/config/header.coco | 8 - .../batch/config/install_header.coco | 7 - .../batch/config/localized/license-de.coco | 10 - .../batch/config/localized/license-nl.coco | 10 - .../batch/config/localized/license-ru.coco | 10 - .../batch/config/localized/license.coco | 10 - .../batch/config/localized/readme-de.coco | 30 -- .../batch/config/localized/readme-nl.coco | 30 -- .../batch/config/localized/readme-ru.coco | 29 -- .../batch/config/localized/readme.coco | 29 -- .../batch/config/localized/tips-de.coco | 7 - .../batch/config/localized/tips-nl.coco | 8 - .../batch/config/localized/tips-ru.coco | 7 - .../batch/config/localized/tips.coco | 7 - .../batch/config/npm_and_brunch_header.coco | 7 - .../coco-dev-setup/batch/configuration.exe | Bin 57856 -> 0 bytes .../coco-dev-setup/batch/localization/de.coco | 108 ----- .../coco-dev-setup/batch/localization/en.coco | 108 ----- .../batch/localization/languages.coco | 6 - .../coco-dev-setup/batch/localization/nl.coco | 108 ----- .../coco-dev-setup/batch/localization/ru.coco | 108 ----- .../batch/localization/zh-HANS.coco | 108 ----- .../batch/localization/zh-HANT.coco | 108 ----- .../batch/scripts/ask_question.bat | 5 - .../batch/scripts/configuration.bat | 47 -- .../batch/scripts/configuration_cmd.bat | 4 - .../scripts/download_and_install_app.bat | 141 ------ .../download_and_install_applications.bat | 54 --- .../batch/scripts/get_array.bat | 6 - .../batch/scripts/get_cache_var.bat | 3 - .../batch/scripts/get_category.bat | 3 - .../batch/scripts/get_config.bat | 3 - .../batch/scripts/get_download.bat | 3 - .../batch/scripts/get_extension.bat | 3 - .../batch/scripts/get_extension.ps1 | 18 - .../batch/scripts/get_language.bat | 39 -- .../batch/scripts/get_local_text.bat | 1 - .../batch/scripts/get_path_safe.bat | 10 - .../batch/scripts/get_system_information.bat | 29 -- .../coco-dev-setup/batch/scripts/get_text.bat | 3 - .../coco-dev-setup/batch/scripts/get_var.ps1 | 27 -- .../batch/scripts/get_variables.bat | 4 - .../batch/scripts/get_variables.ps1 | 33 -- .../batch/scripts/github_setup.bat | 149 ------- .../batch/scripts/nab_automatic_script.bat | 7 - .../batch/scripts/nab_install_bower.bat | 7 - .../batch/scripts/nab_install_mongodb.bat | 37 -- .../batch/scripts/nab_install_npm.bat | 6 - .../batch/scripts/nab_install_npm_all.bat | 7 - .../batch/scripts/nab_install_sass.bat | 7 - .../batch/scripts/npm_and_brunch_setup.bat | 24 - .../scripts/open_localized_text_file.bat | 6 - .../batch/scripts/open_readme.bat | 1 - .../batch/scripts/open_text_file.bat | 1 - .../batch/scripts/print_dashed_seperator.bat | 3 - .../batch/scripts/print_exit.bat | 3 - .../batch/scripts/print_file.bat | 4 - .../batch/scripts/print_finished_header.bat | 1 - .../batch/scripts/print_github_header.bat | 1 - .../batch/scripts/print_header.bat | 1 - .../batch/scripts/print_info.bat | 1 - .../batch/scripts/print_install_header.bat | 1 - .../batch/scripts/print_license.bat | 1 - .../batch/scripts/print_localized_file.bat | 6 - .../scripts/print_npm_and_brunch_header.bat | 1 - .../batch/scripts/print_seperator.bat | 3 - .../batch/scripts/print_tips.bat | 1 - .../batch/scripts/read_cache.bat | 2 - .../batch/scripts/run_script.bat | 2 - .../batch/scripts/set_environment_var.bat | 1 - .../coco-dev-setup/batch/scripts/setup.bat | 29 -- .../coco-dev-setup/batch/scripts/setup_p2.bat | 20 - .../batch/scripts/sign_license.bat | 27 -- .../batch/scripts/write_cache.bat | 10 - .../windows/coco-dev-setup/batch/setup.bat | 2 - .../windows/coco-dev-setup/batch/setup.exe | Bin 57856 -> 0 bytes .../coco-dev-setup/dev-setup-packer.bat | 16 - scripts/windows/install-mongodb.ps1 | 39 -- server/server-test.coffee | 4 +- vendor/scripts/difflib.js | 413 ------------------ vendor/scripts/diffview.js | 198 --------- vendor/styles/diffview.css | 83 ---- 107 files changed, 43 insertions(+), 3519 deletions(-) delete mode 100644 scripts/devSetup/.gitignore delete mode 100644 scripts/devSetup/bootstrap.sh delete mode 100644 scripts/devSetup/configuration.py delete mode 100644 scripts/devSetup/dependency.py delete mode 100644 scripts/devSetup/directoryController.py delete mode 100644 scripts/devSetup/downloader.py delete mode 100644 scripts/devSetup/errors.py delete mode 100644 scripts/devSetup/factories.py delete mode 100644 scripts/devSetup/mongo.py delete mode 100644 scripts/devSetup/node.py delete mode 100644 scripts/devSetup/repositoryInstaller.py delete mode 100644 scripts/devSetup/ruby.py delete mode 100644 scripts/devSetup/setup.py delete mode 100644 scripts/devSetup/systemConfiguration.py delete mode 100644 scripts/devSetup/which.py delete mode 100644 scripts/runAfterGit.coffee delete mode 100755 scripts/windows/SCOCODE.bat delete mode 100755 scripts/windows/coco-dev-setup/.gitignore delete mode 100755 scripts/windows/coco-dev-setup/batch/config/config.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/finished_header.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/github_header.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/header.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/install_header.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/localized/license-de.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/localized/license-nl.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/localized/license-ru.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/localized/license.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/localized/readme-de.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/localized/readme-nl.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/localized/readme-ru.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/localized/readme.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/localized/tips-de.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/localized/tips-nl.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/localized/tips-ru.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/localized/tips.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/config/npm_and_brunch_header.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/configuration.exe delete mode 100644 scripts/windows/coco-dev-setup/batch/localization/de.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/localization/en.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/localization/languages.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/localization/nl.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/localization/ru.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/localization/zh-HANS.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/localization/zh-HANT.coco delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/ask_question.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/configuration.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/configuration_cmd.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/download_and_install_app.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/download_and_install_applications.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_array.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/get_cache_var.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/get_category.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_config.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_download.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_extension.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_extension.ps1 delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_language.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_local_text.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_path_safe.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_system_information.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_text.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_var.ps1 delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_variables.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/get_variables.ps1 delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/github_setup.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/nab_automatic_script.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/nab_install_bower.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/nab_install_mongodb.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm_all.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/nab_install_sass.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/npm_and_brunch_setup.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/open_localized_text_file.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/open_readme.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/open_text_file.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_dashed_seperator.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_exit.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_file.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_finished_header.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_github_header.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_header.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_info.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_install_header.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_license.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/print_localized_file.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_npm_and_brunch_header.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_seperator.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/print_tips.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/read_cache.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/run_script.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/set_environment_var.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/setup.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/setup_p2.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/scripts/sign_license.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/scripts/write_cache.bat delete mode 100644 scripts/windows/coco-dev-setup/batch/setup.bat delete mode 100755 scripts/windows/coco-dev-setup/batch/setup.exe delete mode 100755 scripts/windows/coco-dev-setup/dev-setup-packer.bat delete mode 100755 scripts/windows/install-mongodb.ps1 delete mode 100644 vendor/scripts/difflib.js delete mode 100644 vendor/scripts/diffview.js delete mode 100644 vendor/styles/diffview.css diff --git a/app/templates/common/base.jade b/app/templates/common/base.jade index 7099d7d..67cbca9 100644 --- a/app/templates/common/base.jade +++ b/app/templates/common/base.jade @@ -1,6 +1,2 @@ -block header - #content.container block content - -block footer diff --git a/karma.conf.js b/karma.conf.js index d26c1ed..c9a602d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -71,12 +71,10 @@ module.exports = function(config) { }, plugins : [ - 'karma-jasmine', 'karma-chrome-launcher', - 'karma-phantomjs-launcher', 'karma-coffee-preprocessor', 'karma-coverage', - 'karma-firefox-launcher' + 'karma-jasmine' ] }); diff --git a/package.json b/package.json index 110e86d..ce82649 100644 --- a/package.json +++ b/package.json @@ -25,58 +25,49 @@ "***" ], "dependencies": { - "express": "~3.0.6", - "winston": "0.6.x", - "passport": "0.1.x", - "passport-local": "0.1.x", - "moment": "~2.5.0", - "mongodb": "1.2.x", + "async": "0.9.x", + "coffee-script": "1.9.x", + "connect": "3.3.x", + "express": "3.0.x", + "express-useragent": "0.1.x", + "graceful-fs": "3.0.x", + "gridfs-stream": "1.1.x", + "lodash": "3.6.x", + "moment": "2.9.x", + "mongodb": "2.0.x", "mongoose": "3.8.x", - "mongoose-text-search": "~0.0.2", - "request": "2.12.x", - "tv4": "~1.0.16", - "lodash": "*", - "underscore.string": "2.3.x", - "async": "0.2.x", - "connect": "2.7.x", - "coffee-script": "1.7.x", - "graceful-fs": "~2.0.1", - "express-useragent": "~0.0.9", - "gridfs-stream": "0.4.x", - "stream-buffers": "0.2.x", - "xml2js": "2.4.5" + "mongoose-text-search": "0.0.x", + "passport": "0.2.x", + "passport-local": "1.0.x", + "request": "2.54.x", + "tv4": "1.1.x", + "underscore.string": "3.0.x", + "winston": "0.9.x", + "xml2js": "0.4.x" }, "devDependencies": { - "auto-reload-brunch": "> 1.0 < 1.8", - "bower": "~1.3.8", - "brunch": "~1.7.4", - "coffee-script-brunch": "https://github.com/brunch/coffee-script-brunch/tarball/master", - "coffeelint-brunch": "> 1.0 < 1.8", - "compressible": "~1.0.1", - "css-brunch": "> 1.0 < 1.8", - "gaze": "0.6.4", - "jade": "0.33.x", - "jade-brunch": "> 1.0 < 1.8", + "auto-reload-brunch": "1.7.x", + "bower": "1.3.x", + "brunch": "1.7.x", + "coffee-script-brunch": "1.8.x", + "coffeelint-brunch": "1.7.x", + "compressible": "2.0.x", + "css-brunch": "1.7.x", + "gaze": "0.5.x", + "jade": "1.9.x", + "jade-brunch": "1.8.x", "jasmine-node": "1.14.x", - "jasmine-spec-reporter": "~0.3.0", - "javascript-brunch": "> 1.0 < 1.8", - "karma": "~0.12", - "karma-chrome-launcher": "~0.1.2", - "karma-coffee-preprocessor": "~0.1.2", - "karma-coverage": "~0.1.4", - "karma-firefox-launcher": "~0.1.3", - "karma-html2js-preprocessor": "~0.1.0", - "karma-jasmine": "~0.2.0", - "karma-phantomjs-launcher": "~0.1.1", - "karma-requirejs": "~0.2.1", - "karma-script-launcher": "~0.1.0", - "marked": "0.2.x", - "mockgoose": "~1.8", - "nodemon": "0.7.5", - "requirejs": "~2.1.10", - "sass-brunch": "1.7.2", - "uglify-js-brunch": "~1.7.4", - "ws": "*" + "javascript-brunch": "1.7.x", + "karma": "0.12.x", + "karma-chrome-launcher": "0.1.x", + "karma-coffee-preprocessor": "0.2.x", + "karma-coverage": "0.2.x", + "karma-jasmine": "0.3.x", + "mockgoose": "1.10.x", + "nodemon": "1.3.x", + "sass-brunch": "1.8.x", + "uglify-js-brunch": "1.7.x", + "ws": "0.7.1" }, "license": "MIT for the code, and CC-BY for the art and music", "private": true, diff --git a/scripts/devSetup/.gitignore b/scripts/devSetup/.gitignore deleted file mode 100644 index 4a298ae..0000000 --- a/scripts/devSetup/.gitignore +++ /dev/null @@ -1 +0,0 @@ -codecombat/ diff --git a/scripts/devSetup/bootstrap.sh b/scripts/devSetup/bootstrap.sh deleted file mode 100644 index 4609963..0000000 --- a/scripts/devSetup/bootstrap.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash - -repositoryUrl=${1:-https://github.com/codecombat/codecombat.git} -deps=( git python ) -NODE_VERSION=v0.10 -function checkDependencies { #usage: checkDependencies [name of dependency array] [name of error checking function] - declare -a dependencyArray=("${!1}") - for i in "${dependencyArray[@]}" - do - command -v $i >/dev/null 2>&1 || { $2 "$i" >&2; exit 1; } - done -} - -function openUrl { - case "$OSTYPE" in - darwin*) - open $@;; - linux*) - xdg-open $@;; - *) - echo "$@";; - esac -} - -function basicDependenciesErrorHandling { - case "$1" in - "python") - echo "Python isn't installed. Please install it to continue." - read -p "Press enter to open download link..." - openUrl http://www.python.org/download/ - exit 1 - ;; - "git") - echo "Please install Git.(If you're running mac, this is included in the XCode command line tools." - esac - } - - -function checkIsRoot { - if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root (run 'sudo ./$me $installDirectory')" 1>&2 - exit 1 - fi -} - -function checkNodeVersion { - #thanks https://gist.github.com/phatblat/1713458 - node --version | grep ${NODE_VERSION} - if [[ $? != 0 ]] ; then - echo "Node was found, but not version 0.10. Make sure 0.10 is installed before running the install script." - echo "Also, make sure `sudo node -v` also returns v0.10.x." - exit 1 - fi -} - -checkDependencies deps[@] basicDependenciesErrorHandling -#check for node -if command -v node >/dev/null 2>&1; then - checkNodeVersion -fi - -#check if a git repository already exists here -if [ -d .git ]; then - echo "A git repository already exists here!" -else - #install git repository - git clone $repositoryUrl coco - #python ./coco/scripts/devSetup/setup.py - echo "Now copy and paste 'sudo python ./coco/scripts/devSetup/setup.py' into the terminal!" -fi diff --git a/scripts/devSetup/configuration.py b/scripts/devSetup/configuration.py deleted file mode 100644 index 2eb0be3..0000000 --- a/scripts/devSetup/configuration.py +++ /dev/null @@ -1,19 +0,0 @@ -__author__ = u'schmatz' -from systemConfiguration import SystemConfiguration -import os -import directoryController -import errors -class Configuration(object): - def __init__(self): - self.system = SystemConfiguration() - assert isinstance(self.system,SystemConfiguration) - self.directory = directoryController.DirectoryController(self) - self.directory.create_base_directories() - #self.repository_url = u"https://github.com/nwinter/codecombat.git" - self.repository_url = "https://github.com/schmatz/cocopractice.git" - @property - def mem_width(self): - return self.system.virtual_memory_address_width - - - diff --git a/scripts/devSetup/dependency.py b/scripts/devSetup/dependency.py deleted file mode 100644 index 2cc726e..0000000 --- a/scripts/devSetup/dependency.py +++ /dev/null @@ -1,13 +0,0 @@ -__author__ = u'schmatz' - -from configuration import Configuration - -class Dependency(object): - def __init__(self,configuration): - assert isinstance(configuration,Configuration) - self.config = configuration - def download_dependencies(self): - raise NotImplementedError - def install_dependencies(self): - raise NotImplementedError - diff --git a/scripts/devSetup/directoryController.py b/scripts/devSetup/directoryController.py deleted file mode 100644 index 5087db8..0000000 --- a/scripts/devSetup/directoryController.py +++ /dev/null @@ -1,55 +0,0 @@ -__author__ = u'schmatz' -import configuration -import os -import sys -import errors -import shutil -class DirectoryController(object): - def __init__(self,config): - assert isinstance(config,configuration.Configuration) - self.config = config - self.root_dir = self.config.system.get_current_working_directory() - - @property - def root_install_directory(self): - return self.root_dir + os.sep + "coco" + os.sep + "bin" - @property - def tmp_directory(self): - return self.root_install_directory + os.sep + u"tmp" - @property - def bin_directory(self): - return self.root_install_directory - - def mkdir(self, path): - if os.path.exists(path): - print(u"Skipping creation of " + path + " because it exists.") - else: - os.mkdir(path) - - def create_directory_in_tmp(self,subdirectory): - path = self.generate_path_for_directory_in_tmp(subdirectory) - self.mkdir(path) - - def generate_path_for_directory_in_tmp(self,subdirectory): - return self.tmp_directory + os.sep + subdirectory - def create_directory_in_bin(self,subdirectory): - full_path = self.bin_directory + os.sep + subdirectory - self.mkdir(full_path) - - def create_base_directories(self): - shutil.rmtree(self.root_dir + os.sep + "coco" + os.sep + "node_modules",ignore_errors=True) #just in case - try: - if os.path.exists(self.tmp_directory): - self.remove_tmp_directory() - os.mkdir(self.tmp_directory) - except: - raise errors.CoCoError(u"There was an error creating the directory structure, do you have correct permissions? Please remove all and start over.") - - def remove_directories(self): - shutil.rmtree(self.bin_directory + os.sep + "node",ignore_errors=True) - shutil.rmtree(self.bin_directory + os.sep + "mongo",ignore_errors=True) - def remove_tmp_directory(self): - shutil.rmtree(self.tmp_directory) - - - diff --git a/scripts/devSetup/downloader.py b/scripts/devSetup/downloader.py deleted file mode 100644 index 477af3b..0000000 --- a/scripts/devSetup/downloader.py +++ /dev/null @@ -1,41 +0,0 @@ -from __future__ import print_function -__author__ = 'schmatz' -from configuration import Configuration -import sys -if sys.version_info.major < 3: - import urllib -else: - import urllib.request as urllib -from dependency import Dependency -class Downloader: - def __init__(self,dependency): - assert isinstance(dependency, Dependency) - self.dependency = dependency - @property - def download_directory(self): - raise NotImplementedError - def download(self): - raise NotImplementedError - def download_file(self,url,filePath): - urllib.urlretrieve(url,filePath,self.__progress_bar_reporthook) - def decompress(self): - raise NotImplementedError - def check_download(self): - raise NotImplementedError - - def __progress_bar_reporthook(self,blocknum,blocksize,totalsize): - #http://stackoverflow.com/a/13895723/1928667 - #http://stackoverflow.com/a/3173331/1928667 - bars_to_display = 70 - amount_of_data_downloaded_so_far = blocknum * blocksize - if totalsize > 0: - progress_fraction = float(amount_of_data_downloaded_so_far) / float(totalsize) - progress_percentage = progress_fraction * 1e2 - stringToDisplay = '\r[{0}] {1:.1f}%'.format('#'*int(bars_to_display*progress_fraction),progress_percentage) - print(stringToDisplay,end=' ') - if amount_of_data_downloaded_so_far >= totalsize: - print("\n",end=' ') - else: - stringToDisplay = '\r File size unknown. Read {0} bytes.'.format(amount_of_data_downloaded_so_far) - print(stringToDisplay,end=' ') - diff --git a/scripts/devSetup/errors.py b/scripts/devSetup/errors.py deleted file mode 100644 index 448eb67..0000000 --- a/scripts/devSetup/errors.py +++ /dev/null @@ -1,19 +0,0 @@ -__author__ = u'schmatz' -#TODO: Clean these up -class CoCoError(Exception): - def __init__(self,details): - self.details = details - def __str__(self): - return repr(self.details + u"\n Please contact CodeCombat support, and include this error in your message.") - -class NotSupportedError(CoCoError): - def __init__(self,details): - self.details = details - def __str__(self): - return repr(self.details + u"\n Please contact CodeCombat support, and include this error in your message.") - -class DownloadCorruptionError(CoCoError): - def __init__(self,details): - self.details = details - def __str__(self): - return repr(self.details + u"\n Please contact CodeCombat support, and include this error in your message.") diff --git a/scripts/devSetup/factories.py b/scripts/devSetup/factories.py deleted file mode 100644 index 1eab847..0000000 --- a/scripts/devSetup/factories.py +++ /dev/null @@ -1,88 +0,0 @@ -__author__ = u'schmatz' - -import errors -import configuration -import mongo -import node -import repositoryInstaller -import ruby -import shutil -import os -import glob -import subprocess -def print_computer_information(os_name,address_width): - print(os_name + " detected, architecture: " + str(address_width) + " bit") -def constructSetup(): - config = configuration.Configuration() - address_width = config.system.get_virtual_memory_address_width() - if config.system.operating_system == u"mac": - print_computer_information("Mac",address_width) - return MacSetup(config) - elif config.system.operating_system == u"win": - print_computer_information("Windows",address_width) - raise NotImplementedError("Windows is not supported at this time.") - elif config.system.operating_system == u"linux": - print_computer_information("Linux",address_width) - return LinuxSetup(config) - -class SetupFactory(object): - def __init__(self,config): - self.config = config - self.mongo = mongo.MongoDB(self.config) - self.node = node.Node(self.config) - self.repoCloner = repositoryInstaller.RepositoryInstaller(self.config) - self.ruby = ruby.Ruby(self.config) - def setup(self): - mongo_version_string = "" - try: - mongo_version_string = subprocess.check_output("mongod --version",shell=True) - mongo_version_string = mongo_version_string.decode(encoding='UTF-8') - except Exception as e: - print("Mongod not found: %s"%e) - if "v2.6." not in mongo_version_string: - if mongo_version_string: - print("Had MongoDB version: %s"%mongo_version_string) - print("MongoDB not found, so installing a local copy...") - self.mongo.download_dependencies() - self.mongo.install_dependencies() - self.node.download_dependencies() - self.node.install_dependencies() - #self.repoCloner.cloneRepository() - self.repoCloner.install_node_packages() - self.ruby.install_gems() - - print ("Doing initial bower install...") - bower_path = self.config.directory.root_dir + os.sep + "coco" + os.sep + "node_modules" + os.sep + ".bin" + os.sep + "bower" - subprocess.call(bower_path + " --allow-root install",shell=True,cwd=self.config.directory.root_dir + os.sep + "coco") - print("Removing temporary directories") - self.config.directory.remove_tmp_directory() - print("Changing permissions of files...") - #TODO: Make this more robust and portable(doesn't pose security risk though) - subprocess.call("chmod -R 755 " + self.config.directory.root_dir + os.sep + "coco" + os.sep + "bin",shell=True) - chown_command = "chown -R " + os.getenv("SUDO_USER") + " bower_components" - chown_directory = self.config.directory.root_dir + os.sep + "coco" - subprocess.call(chown_command,shell=True,cwd=chown_directory) - - print("") - print("Done! If you want to start the server, head into coco/bin and run ") - print("1. ./coco-mongodb") - print("2. ./coco-brunch ") - print("3. ./coco-dev-server") - print("NOTE: brunch may need to be run as sudo if it doesn't work (ulimit needs to be set higher than default)") - print("") - print("Before can play any levels you must update the database. See the Setup section here:") - print("https://github.com/codecombat/codecombat/wiki/Developer-environment#setup") - print("") - print("Go to http://localhost:3000 to see your local CodeCombat in action!") - def cleanup(self): - self.config.directory.remove_tmp_directory() - -class MacSetup(SetupFactory): - def setup(self): - super(self.__class__, self).setup() -class WinSetup(SetupFactory): - def setup(self): - super(self.__class__, self).setup() -class LinuxSetup(SetupFactory): - def setup(self): - super(self.__class__, self).setup() diff --git a/scripts/devSetup/mongo.py b/scripts/devSetup/mongo.py deleted file mode 100644 index eb57ea4..0000000 --- a/scripts/devSetup/mongo.py +++ /dev/null @@ -1,109 +0,0 @@ -from __future__ import print_function -__author__ = u'schmatz' -from downloader import Downloader -import tarfile -from errors import DownloadCorruptionError -import warnings -import os -from configuration import Configuration -from dependency import Dependency -import sys -import shutil - -class MongoDB(Dependency): - def __init__(self,configuration): - super(self.__class__, self).__init__(configuration) - operating_system = configuration.system.operating_system - self.config.directory.create_directory_in_tmp(u"mongo") - - if operating_system == u"mac": - self.downloader = MacMongoDBDownloader(self) - elif operating_system == u"win": - self.downloader = WindowsMongoDBDownloader(self) - elif operating_system == u"linux": - self.downloader = LinuxMongoDBDownloader(self) - @property - def tmp_directory(self): - return self.config.directory.tmp_directory - @property - def bin_directory(self): - return self.config.directory.bin_directory - - def bashrc_string(self): - return "COCO_MONGOD_PATH=" + self.config.directory.bin_directory + os.sep + u"mongo" + os.sep +"bin" + os.sep + "mongod" - - - def download_dependencies(self): - install_directory = self.config.directory.bin_directory + os.sep + u"mongo" - if os.path.exists(install_directory): - print(u"Skipping MongoDB download because " + install_directory + " exists.") - else: - self.downloader.download() - self.downloader.decompress() - def install_dependencies(self): - install_directory = self.config.directory.bin_directory + os.sep + u"mongo" - if os.path.exists(install_directory): - print(u"Skipping creation of " + install_directory + " because it exists.") - else: - shutil.copytree(self.findUnzippedMongoBinPath(),install_directory) - - def findUnzippedMongoBinPath(self): - return self.downloader.download_directory + os.sep + \ - (next(os.walk(self.downloader.download_directory))[1])[0] + os.sep + u"bin" - - - - -class MongoDBDownloader(Downloader): - @property - def download_url(self): - raise NotImplementedError - @property - def download_directory(self): - return self.dependency.tmp_directory + os.sep + u"mongo" - @property - def downloaded_file_path(self): - return self.download_directory + os.sep + u"mongodb.tgz" - def download(self): - print(u"Downloading MongoDB from URL " + self.download_url) - self.download_file(self.download_url,self.downloaded_file_path) - self.check_download() - def decompress(self): - print(u"Decompressing MongoDB...") - tfile = tarfile.open(self.downloaded_file_path) - #TODO: make directory handler class - tfile.extractall(self.download_directory) - print(u"Decompressed MongoDB into " + self.download_directory) - - def check_download(self): - isFileValid = tarfile.is_tarfile(self.downloaded_file_path) - if not isFileValid: - raise DownloadCorruptionError(u"MongoDB download was corrupted.") - - - -class LinuxMongoDBDownloader(MongoDBDownloader): - @property - def download_url(self): - if self.dependency.config.mem_width == 64: - return u"http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-latest.tgz" - else: - warnings.warn(u"MongoDB *really* doesn't run well on 32 bit systems. You have been warned.") - return u"http://fastdl.mongodb.org/linux/mongodb-linux-i686-latest.tgz" - -class WindowsMongoDBDownloader(MongoDBDownloader): - @property - def download_url(self): - #TODO: Implement Windows Vista detection - warnings.warn(u"If you have a version of Windows older than 7, MongoDB may not function properly!") - if self.dependency.config.mem_width == 64: - return u"http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-latest.zip" - else: - return u"http://fastdl.mongodb.org/win32/mongodb-win32-i386-latest.zip" - -class MacMongoDBDownloader(MongoDBDownloader): - @property - def download_url(self): - return u"http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-latest.tgz" - - diff --git a/scripts/devSetup/node.py b/scripts/devSetup/node.py deleted file mode 100644 index 8fb1265..0000000 --- a/scripts/devSetup/node.py +++ /dev/null @@ -1,162 +0,0 @@ -from __future__ import print_function -__author__ = u'schmatz' -from downloader import Downloader -import tarfile -import errors -from errors import DownloadCorruptionError -import warnings -import os -from configuration import Configuration -from dependency import Dependency -import shutil -from which import which -import subprocess -from stat import S_IRWXU,S_IRWXG,S_IRWXO -import sys - -if sys.version_info.major >= 3: - raw_input = input - -class Node(Dependency): - def __init__(self,configuration): - super(self.__class__, self).__init__(configuration) - operating_system = configuration.system.operating_system - self.config.directory.create_directory_in_tmp(u"node") - if operating_system == u"mac": - self.downloader = MacNodeDownloader(self) - elif operating_system == u"win": - self.downloader = WindowsNodeDownloader(self) - self.config.directory.create_directory_in_bin(u"node") #TODO: Fix windows node installation - elif operating_system == u"linux": - self.downloader = LinuxNodeDownloader(self) - @property - def tmp_directory(self): - return self.config.directory.tmp_directory - @property - def bin_directory(self): - return self.config.directory.bin_directory - - def download_dependencies(self): - install_directory = self.config.directory.bin_directory + os.sep + u"node" - if os.path.exists(install_directory): - print(u"Skipping Node download because " + install_directory + " exists.") - else: - self.downloader.download() - self.downloader.decompress() - def bashrc_string(self): - return "COCO_NODE_PATH=" + self.config.directory.bin_directory + os.sep + u"node" + os.sep + "bin" + os.sep +"node" - def install_dependencies(self): - install_directory = self.config.directory.bin_directory + os.sep + u"node" - #check for node here - if self.config.system.operating_system in ["mac","linux"] and not which("node"): - unzipped_node_path = self.findUnzippedNodePath() - print("Copying node into /usr/local/bin/...") - shutil.copy(unzipped_node_path + os.sep + "bin" + os.sep + "node","/usr/local/bin/") - os.chmod("/usr/local/bin/node",S_IRWXG|S_IRWXO|S_IRWXU) - if os.path.exists(install_directory): - print(u"Skipping creation of " + install_directory + " because it exists.") - else: - unzipped_node_path = self.findUnzippedNodePath() - shutil.copytree(self.findUnzippedNodePath(),install_directory) - wants_to_upgrade = True - if self.check_if_executable_installed(u"npm"): - warning_string = u"A previous version of npm has been found. \nYou may experience problems if you have a version of npm that's too old.Would you like to upgrade?(y/n) " - from distutils.util import strtobool - print(warning_string) - #for bash script, you have to somehow redirect stdin to raw_input() - user_input = raw_input() - while True: - try: - wants_to_upgrade = strtobool(user_input) - except: - print(u"Please enter y or n. ") - user_input = raw_input() - continue - break - if wants_to_upgrade: - if sys.version_info.major < 3: - import urllib2, urllib - else: - import urllib.request as urllib - print(u"Retrieving npm update script...") - npm_install_script_path = install_directory + os.sep + u"install.sh" - urllib.urlretrieve(u"https://npmjs.org/install.sh",filename=npm_install_script_path) - print(u"Retrieved npm install script. Executing...") - subprocess.call([u"sh", npm_install_script_path]) - print(u"Updated npm version installed") - - - - def findUnzippedNodePath(self): - return self.downloader.download_directory + os.sep + \ - (next(os.walk(self.downloader.download_directory))[1])[0] - def check_if_executable_installed(self,name): - executable_path = which(name) - if executable_path: - return True - else: - return False - - def check_node_version(self): - version = subprocess.check_output(u"node -v") - return version - def check_npm_version(self): - version = subprocess.check_output(u"npm -v") - return version - - -class NodeDownloader(Downloader): - @property - def download_url(self): - raise NotImplementedError - @property - def download_directory(self): - return self.dependency.tmp_directory + os.sep + u"node" - @property - def downloaded_file_path(self): - return self.download_directory + os.sep + u"node.tgz" - def download(self): - print(u"Downloading Node from URL " + self.download_url) - self.download_file(self.download_url,self.downloaded_file_path) - self.check_download() - def decompress(self): - print(u"Decompressing Node...") - tfile = tarfile.open(self.downloaded_file_path) - #TODO: make directory handler class - tfile.extractall(self.download_directory) - print(u"Decompressed Node into " + self.download_directory) - - def check_download(self): - isFileValid = tarfile.is_tarfile(self.downloaded_file_path) - if not isFileValid: - raise DownloadCorruptionError(u"Node download was corrupted.") - - - -class LinuxNodeDownloader(NodeDownloader): - @property - def download_url(self): - if self.dependency.config.mem_width == 64: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x64.tar.gz" - else: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x86.tar.gz" - -class WindowsNodeDownloader(NodeDownloader): - @property - def download_url(self): - raise NotImplementedError(u"Needs MSI to be executed to install npm") - #"http://nodejs.org/dist/v0.10.24/x64/node-v0.10.24-x64.msi" - if self.dependency.config.mem_width == 64: - return u"http://nodejs.org/dist/v0.10.24/x64/node.exe" - else: - return u"http://nodejs.org/dist/v0.10.24/node.exe" - -class MacNodeDownloader(NodeDownloader): - @property - def download_url(self): - if self.dependency.config.mem_width == 64: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-darwin-x64.tar.gz" - else: - return u"http://nodejs.org/dist/v0.10.24/node-v0.10.24-darwin-x86.tar.gz" - - diff --git a/scripts/devSetup/repositoryInstaller.py b/scripts/devSetup/repositoryInstaller.py deleted file mode 100644 index 3e854b8..0000000 --- a/scripts/devSetup/repositoryInstaller.py +++ /dev/null @@ -1,71 +0,0 @@ -from __future__ import print_function -__author__ = u'schmatz' -import configuration -import errors -import subprocess -import os -from which import which -#git clone https://github.com/nwinter/codecombat.git coco -class RepositoryInstaller(): - def __init__(self,config): - self.config = config - assert isinstance(self.config,configuration.Configuration) - if not self.checkIfGitExecutableExists(): - if self.config.system.operating_system == "linux": - raise errors.CoCoError("Git is missing. Please install it (try 'sudo apt-get install git')\nIf you are not using Ubuntu then please see your Linux Distribution's documentation for help installing git.") - elif self.config.system.operating_system == "mac": - raise errors.CoCoError("Git is missing. Please install the Xcode command line tools.") - raise errors.CoCoError(u"Git is missing. Please install git.") - #http://stackoverflow.com/questions/9329243/xcode-4-4-and-later-install-command-line-tools - if not self.checkIfCurlExecutableExists(): - if self.config.system.operating_system == "linux": - raise errors.CoCoError("Curl is missing. Please install it(try 'sudo apt-get install curl')\nIf you are not using Ubuntu then please see your Linux Distribution's documentation for help installing curl.") - elif self.config.system.operating_system == "mac": - raise errors.CoCoError("Curl is missing. Please install the Xcode command line tools.") - raise errors.CoCoError(u"Git is missing. Please install git.") - def checkIfGitExecutableExists(self): - gitPath = which(u"git") - if gitPath: - return True - else: - return False - #TODO: Refactor this into a more appropriate file - def checkIfCurlExecutableExists(self): - curlPath = which("curl") - if curlPath: - return True - else: - return False - def cloneRepository(self): - print(u"Cloning repository...") - #TODO: CHANGE THIS BEFORE LAUNCH - return_code = True - git_folder = self.config.directory.root_install_directory + os.sep + "coco" - print("Installing into " + git_folder) - return_code = subprocess.call("git clone " + self.config.repository_url +" coco",cwd=self.config.directory.root_install_directory,shell=True) - #TODO: remove this on windos - subprocess.call("chown -R " +git_folder + " 0777",shell=True) - if return_code and self.config.system.operating_system != u"windows": - #raise errors.CoCoError("Failed to clone git repository") - import shutil - #import sys - #sys.stdout.flush() - raw_input(u"Copy it now") - #shutil.copytree(u"/Users/schmatz/coco",self.config.directory.root_install_directory + os.sep + u"coco") - print(u"Copied tree just for you") - #print("FAILED TO CLONE GIT REPOSITORY") - #input("Clone the repository and click any button to continue") - elif self.config.system.operating_system == u"windows": - raise errors.CoCoError(u"Windows doesn't support automated installations of npm at this point.") - else: - print(u"Cloned git repository") - def install_node_packages(self): - print(u"Installing node packages...") - #TODO: "Replace npm with more robust package - #npm_location = self.config.directory.bin_directory + os.sep + "node" + os.sep + "bin" + os.sep + "npm" - npm_location = u"npm" - return_code = subprocess.call([npm_location,u"install"],cwd=self.config.directory.root_dir + os.sep + u"coco") - if return_code: - raise errors.CoCoError(u"Failed to install node packages") - else: - print(u"Installed node packages!") diff --git a/scripts/devSetup/ruby.py b/scripts/devSetup/ruby.py deleted file mode 100644 index 410ec6e..0000000 --- a/scripts/devSetup/ruby.py +++ /dev/null @@ -1,42 +0,0 @@ -from __future__ import print_function -__author__ = u'root' - -import dependency -import configuration -import shutil -import errors -import subprocess -from which import which -class Ruby(dependency.Dependency): - def __init__(self,config): - self.config = config - assert isinstance(config,configuration.Configuration) - is_ruby_installed = self.check_if_ruby_exists() - is_gem_installed = self.check_if_gem_exists() - if is_ruby_installed and not is_gem_installed: - #this means their ruby is so old that RubyGems isn't packaged with it - raise errors.CoCoError(u"You have an extremely old version of Ruby. Please upgrade it to get RubyGems.") - elif not is_ruby_installed: - self.install_ruby() - elif is_ruby_installed and is_gem_installed: - print(u"Ruby found.") - def check_if_ruby_exists(self): - ruby_path = which(u"ruby") - return bool(ruby_path) - def check_if_gem_exists(self): - gem_path = which(u"gem") - return bool(gem_path) - def install_ruby(self): - operating_system = self.config.system.operating_system - #Ruby is on every recent Mac, most Linux distros - if operating_system == u"windows": - self.install_ruby_on_windows() - elif operating_system == u"mac": - raise errors.CoCoError(u"Ruby should be installed with Mac OSX machines. Please install Ruby.") - elif operating_system == u"linux": - raise errors.CoCoError(u"Please install Ruby (try 'sudo apt-get install ruby').\nIf you are not using Ubuntu then please see your Linux Distribution's documentation for help installing ruby.") - def install_ruby_on_windows(self): - raise NotImplementedError - - def install_gems(self): - gem_install_status = subprocess.call([u"gem",u"install",u"--no-user-install",u"sass"]) diff --git a/scripts/devSetup/setup.py b/scripts/devSetup/setup.py deleted file mode 100644 index 5c4165b..0000000 --- a/scripts/devSetup/setup.py +++ /dev/null @@ -1,48 +0,0 @@ -#setup.py -#A setup script for the CodeCombat development environment - -# The MIT License (MIT) -# -# Copyright (c) 2013 CodeCombat Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -import factories -import os -import errors -import ctypes -def check_if_root(): - is_admin = False - try: - uid = os.getuid() - if uid == 0: - is_admin = True - except: - is_admin = True - #is_admin = ctypes.windll.shell32.IsUserAnAdmin() - if not is_admin: - raise errors.CoCoError(u"You need to be root. Run as sudo.") - -if __name__ == u"__main__": - print("Code Combat Development Environment Setup Script") - check_if_root() - setup = factories.constructSetup() - setup.setup() - - diff --git a/scripts/devSetup/systemConfiguration.py b/scripts/devSetup/systemConfiguration.py deleted file mode 100644 index 78df92f..0000000 --- a/scripts/devSetup/systemConfiguration.py +++ /dev/null @@ -1,40 +0,0 @@ -from __future__ import division -__author__ = u'schmatz' - -import sys -import os -from errors import NotSupportedError -class SystemConfiguration(object): - - def __init__(self): - self.operating_system = self.get_operating_system() - self.virtual_memory_address_width = self.get_virtual_memory_address_width() - - def get_operating_system(self): - platform = sys.platform - if platform.startswith(u'linux'): - return u"linux" - elif platform.startswith(u'darwin'): - return u"mac" - elif platform.startswith(u'win'): - return u"windows" - else: - raise NotSupportedError(u"Your platform," + sys.platform + u",isn't supported.") - - def get_current_working_directory(self): - if sys.version_info.major < 3: - return os.getcwdu() - else: - return os.getcwd() - - def get_virtual_memory_address_width(self): - is64Bit = sys.maxsize/3 > 2**32 - if is64Bit: - return 64 - else: - if self.operating_system == u"mac": - if os.uname()[4] == u"x86_64": - return 64 - raise NotSupportedError(u"Your processor is determined to have a maxSize of" + str(sys.maxsize) + - u",\n which doesn't correspond with a 64-bit architecture.") - return 32 diff --git a/scripts/devSetup/which.py b/scripts/devSetup/which.py deleted file mode 100644 index d8ec70b..0000000 --- a/scripts/devSetup/which.py +++ /dev/null @@ -1,66 +0,0 @@ -__author__ = 'root' -#copied from python3 -import os -import sys - -def which(cmd, mode=os.F_OK | os.X_OK, path=None): - """Given a command, mode, and a PATH string, return the path which - conforms to the given mode on the PATH, or None if there is no such - file. - - `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result - of os.environ.get("PATH"), or can be overridden with a custom search - path. - - """ - # Check that a given file can be accessed with the correct mode. - # Additionally check that `file` is not a directory, as on Windows - # directories pass the os.access check. - def _access_check(fn, mode): - return (os.path.exists(fn) and os.access(fn, mode) - and not os.path.isdir(fn)) - - # If we're given a path with a directory part, look it up directly rather - # than referring to PATH directories. This includes checking relative to the - # current directory, e.g. ./script - if os.path.dirname(cmd): - if _access_check(cmd, mode): - return cmd - return None - - if path is None: - path = os.environ.get("PATH", os.defpath) - if not path: - return None - path = path.split(os.pathsep) - - if sys.platform == "win32": - # The current directory takes precedence on Windows. - if not os.curdir in path: - path.insert(0, os.curdir) - - # PATHEXT is necessary to check on Windows. - pathext = os.environ.get("PATHEXT", "").split(os.pathsep) - # See if the given file matches any of the expected path extensions. - # This will allow us to short circuit when given "python.exe". - # If it does match, only test that one, otherwise we have to try - # others. - if any(cmd.lower().endswith(ext.lower()) for ext in pathext): - files = [cmd] - else: - files = [cmd + ext for ext in pathext] - else: - # On other platforms you don't have things like PATHEXT to tell you - # what file suffixes are executable, so just pass on cmd as-is. - files = [cmd] - - seen = set() - for dir in path: - normdir = os.path.normcase(dir) - if not normdir in seen: - seen.add(normdir) - for thefile in files: - name = os.path.join(dir, thefile) - if _access_check(name, mode): - return name - return None \ No newline at end of file diff --git a/scripts/runAfterGit.coffee b/scripts/runAfterGit.coffee deleted file mode 100644 index 185dacf..0000000 --- a/scripts/runAfterGit.coffee +++ /dev/null @@ -1,124 +0,0 @@ -# This is written in coffeescript. Run this using coffee, not node. (Line to yield nice warnings on node. :)) -return console.log '------------------------------------------------- \n - -Commandline utility written in Coffeescript to run all updates, download latest database and install it after you git pushed. \n -Params: \n -\t--skipupdates skips npm and bower update \n -\t--dldb: download the latest database (Over 300 mb!) \n -\t--resetdb: to reset the database and load dump from tmp. Will need a downloaded database or --dbdownload specified \n -\t--mongopath <.path/to/mongo>: to specify mongodb folder if not set in PATH. \n -\t--help: Yo fund this one already. \n -\n -May need an initial npm install upfront if newly checked out. \n - -' if '--help' in process.argv - -#TODO: MD5 Verification, using http://54.91.159.37/dump.md5 using digest stream https://github.com/jeffbski/digest-stream -dbDump = 'http://54.91.159.37/dump.tar.gz' # Don't change this unless you know what you're doing -dbLocalPath = '../temp' - -fs = require 'fs' -tar = require 'tar' -spawn = require('child_process').spawn -http = require 'http' -fs = require 'fs' -zlib = require 'zlib' -Deferred = require 'JQDeferred' - -#TODO: Could kill current coco server here. - -mongopath = '' -useNext = false -for path in process.argv - if useNext - mongopath = path - break - useNext = path is '--mongopath' -mongopath += '/bin/' if mongopath.length -mongopath += 'mongodb' # mongodb is in path. - -run = (proc, args) -> - deferred = Deferred() - spawned = spawn proc, args - spawned.stdout.on 'data', (data) -> process.stdout.write data - spawned.stderr.on 'data', (data) -> process.stderr.write data - spawned.on 'exit', (code) -> - console.log proc + ' exited with code ' + code - # unless code is null doesn't seem to work - # deferred.reject() - deferred.resolve code - spawned.on 'error', (code, error) -> - console.error proc + ' failed!' - deferred.reject() - deferred.promise() - -removeDir = (path) -> - if fs.existsSync(path) - fs.readdirSync(path).forEach (file) -> - current = path + '/' + file - if fs.lstatSync(current).isDirectory() # recurse - removeDir current - else # delete file - fs.unlinkSync current - fs.rmdirSync path - -resetDB = -> - deferred = Deferred() - console.log 'Dropping Database' - mongodrop = run 'mongo', ['coco', '--eval', 'db.dropDatabase()'] - mongodrop.fail -> console.error 'Error occurred while dropping mongo. Make sure CoCo\'s MongoDB is running.' - mongodrop.done -> - console.log 'Restoring from dump.' - mongorestore = run 'mongorestore', [dbLocalPath] - mongorestore.always = deferred.resolve() - deferred.promise() - -downloadDB = -> - deferred = Deferred() - #mongoose = require 'mongoose' - # TODO: What if mongo is not running? - console.log 'Downloading Database dump. It\'s big. This may take a while...' - request = http.get dbDump, (response)-> - unzip = response.pipe(zlib.createGunzip()).pipe(tar.Extract(path: dbLocalPath)) - # Log download - currentChunk = 0 - cur = 0 - len = parseInt(response.headers['content-length'], 10) - total = len / 1048576 #1048576 - bytes in 1Megabyte - response.on 'data', (chunk) -> - cur += chunk.length - console.log 'DB dump download received chunk ' + currentChunk++ + ', ' + (100.0 * cur / len).toFixed(2) + '% finished of ' + total.toFixed(0) + ' mb' - unzip.on('data', -> console.log 'Unpacking zip...') - unzip.on('error', (err) -> console.log 'An error occurred while downloading DB Dump: ' + err) - unzip.on 'end', -> - console.log 'Finished downloading.' - deferred.resolve() - deferred.promise() - -installUpdates = -> - deferred = Deferred() - npm = if process.platform is 'win32' then 'npm.cmd' else 'npm' - npminstall = run npm, ['update'] - npminstall.done -> - bowerinstall = run 'bower', ['update'] - deferred.resolve() - deferred.promise() - -cleanUpTmp = -> - removeDir dbLocalPath - -unless '--skipupdates' in process.argv - installUpdates() - -if '--resetdb' in process.argv - if '--dldb' in process.argv - downloadDB().done -> - resetDB().done -> - cleanUpTmp() if '--cleanup' in process.argv - else - resetDB().done -> - cleanUpTmp() if '--cleanup' in process.argv -else if '--dldb' in process.argv - downloadDB() - -# TODO: Could advice to start SCOCODE.bat et al. here diff --git a/scripts/windows/SCOCODE.bat b/scripts/windows/SCOCODE.bat deleted file mode 100755 index ec72bb5..0000000 --- a/scripts/windows/SCOCODE.bat +++ /dev/null @@ -1,5 +0,0 @@ -set "mongo_db_location=MONGO_DB_PATH_HERE" -start cmd.exe cmd /c call nodemon -w server -w server_config.js -start cmd.exe cmd /c call brunch w^ - & mongod --setParameter textSearchEnabled=true^ - --dbpath %mongo_db_location% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/.gitignore b/scripts/windows/coco-dev-setup/.gitignore deleted file mode 100755 index cce39e7..0000000 --- a/scripts/windows/coco-dev-setup/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# ignore unnecary files -/batch/utilities diff --git a/scripts/windows/coco-dev-setup/batch/config/config.coco b/scripts/windows/coco-dev-setup/batch/config/config.coco deleted file mode 100755 index 361af28..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/config.coco +++ /dev/null @@ -1,9 +0,0 @@ - - - 3.5 - GlenDC - CodeCombat.com © 2013-2014 - https://github.com/codecombat/codecombat.git - git@github.com:codecombat/codecombat.git - http://54.91.159.37/dump.tar.gz - diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads.coco b/scripts/windows/coco-dev-setup/batch/config/downloads.coco deleted file mode 100755 index 17a0312..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads.coco +++ /dev/null @@ -1,45 +0,0 @@ - - - - - http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi - http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353.exe?direct - http://s3.amazonaws.com/CodeCombatLargeFiles/python-32.msi - http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe - - - http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi - http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct - http://s3.amazonaws.com/CodeCombatLargeFiles/python-64.msi - http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe - - - https://msysgit.googlecode.com/files/Git-1.8.5.2-preview20131230.exe - http://download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe - - - - - https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip - - - https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip - - - - - https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip - - - https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip - - - - - https://fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.0.zip - - - https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2.6.0.zip - - - diff --git a/scripts/windows/coco-dev-setup/batch/config/finished_header.coco b/scripts/windows/coco-dev-setup/batch/config/finished_header.coco deleted file mode 100644 index 9163183..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/finished_header.coco +++ /dev/null @@ -1,7 +0,0 @@ - ______ _____ _ _ _____ _____ _ _ ___________ - | ___|_ _| \ | |_ _/ ___| | | || ___| _ \ - | |_ | | | \| | | | \ `--.| |_| || |__ | | | | - | _| | | | . ` | | | `--. \ _ || __|| | | | - | | _| |_| |\ |_| |_/\__/ / | | || |___| |/ / - \_| \___/\_| \_/\___/\____/\_| |_/\____/|___/ - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/github_header.coco b/scripts/windows/coco-dev-setup/batch/config/github_header.coco deleted file mode 100644 index ce71943..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/github_header.coco +++ /dev/null @@ -1,7 +0,0 @@ - _____ _____ _____ _ _ _ _______ - | __ \_ _|_ _| | | | | | | ___ \ - | | \/ | | | | | |_| | | | | |_/ / - | | __ | | | | | _ | | | | ___ \ - | |_\ \_| |_ | | | | | | |_| | |_/ / - \____/\___/ \_/ \_| |_/\___/\____/ - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/header.coco b/scripts/windows/coco-dev-setup/batch/config/header.coco deleted file mode 100755 index 376a2a2..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/header.coco +++ /dev/null @@ -1,8 +0,0 @@ - - _____ _ _____ _ _ - / __ \ | | / __ \ | | | | - | / \/ ___ __| | ___ | / \/ ___ _ __ ___ | |__ __ _| |_ - | | / _ \ / _` |/ _ \ | | / _ \| '_ ` _ \| '_ \ / _` | __| - | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ - \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/install_header.coco b/scripts/windows/coco-dev-setup/batch/config/install_header.coco deleted file mode 100644 index e99e50e..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/install_header.coco +++ /dev/null @@ -1,7 +0,0 @@ - _____ ___________ _____ _ _ ___ ______ _____ - / ___|| _ | ___|_ _| | | |/ _ \ | ___ \ ___| - \ `--. | | | | |_ | | | | | / /_\ \| |_/ / |__ - `--. \| | | | _| | | | |/\| | _ || /| __| - /\__/ /\ \_/ / | | | \ /\ / | | || |\ \| |___ - \____/ \___/\_| \_/ \/ \/\_| |_/\_| \_\____/ - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/license-de.coco b/scripts/windows/coco-dev-setup/batch/config/localized/license-de.coco deleted file mode 100644 index 0fe360f..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/license-de.coco +++ /dev/null @@ -1,10 +0,0 @@ - -The MIT Lizenz (MIT) - -Copyright (c) 2014 CodeCombat Inc. und andere Beitragende - -Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen: - -Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen. - -DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN. \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/license-nl.coco b/scripts/windows/coco-dev-setup/batch/config/localized/license-nl.coco deleted file mode 100755 index 15dd4fc..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/license-nl.coco +++ /dev/null @@ -1,10 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 CodeCombat Inc. and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN sCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE. diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/license-ru.coco b/scripts/windows/coco-dev-setup/batch/config/localized/license-ru.coco deleted file mode 100644 index 858d9eb..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/license-ru.coco +++ /dev/null @@ -1,10 +0,0 @@ - -業 MIT () - -Copyright (c) 2014 CodeCombat Inc. 㣨 ⭨ - - 業 ࠧ蠥 栬, 稢訬 ணࠬ ᯥ祭 ᮯ饩 㬥樨 ( 쭥襬 㥬묨 <ணࠬ ᯥ祭>), ᯮ짮 ணࠬ ᯥ祭 ࠭祭, ࠭祭 ࠢ ᯮ짮, ஢, , , 㡫, ࠭, 㡫業஢ / த ணࠬ ᯥ祭, ⠪ 栬, ।⠢ ணࠬ ᯥ祭, ᮡ ᫥ ᫮: - - 㢥 ᪮ ࠢ ᫮ 祭 稬 ணࠬ ᯥ祭. - - < >, - , , , , . , , , , . \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/license.coco b/scripts/windows/coco-dev-setup/batch/config/localized/license.coco deleted file mode 100755 index 15dd4fc..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/license.coco +++ /dev/null @@ -1,10 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 CodeCombat Inc. and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN sCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE. diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/readme-de.coco b/scripts/windows/coco-dev-setup/batch/config/localized/readme-de.coco deleted file mode 100644 index bdc7758..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/readme-de.coco +++ /dev/null @@ -1,30 +0,0 @@ - _____ _ _____ _ _ - / __ \ | | / __ \ | | | | - | / \/ ___ __| | ___ | / \/ ___ _ __ ___ | |__ __ _| |_ - | | / _ \ / _` |/ _ \ | | / _ \| '_ ` _ \| '_ \ / _` | __| - | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ - \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| - -============================================================================= - -Gratulation, du bist nun ein Teil der CodeCombat Community. -Nun da deine Entwicklungsumgebung installiert ist, bist du -bereit uns zu helfen und die Welt zu einem besseren -Ort zu machen. - -Hast du Fragen oder möchtest du dich mit uns treffen? -Sprich mit uns auf HipChat @ https://www.hipchat.com/g3plnOKqa - -Ein anderer Weg uns zu erreichen ist über unser Forum. -Du kannst es finden @ http://discourse.codecombat.com/ - -Du kannst dich über neue Entwicklungen auf unserem Blog informieren. -Dieser kann unter @ http://blog.codecombat.com/ gefunden werden. - -Zu guter Letzt, du kannst das meiste unserer Dokumentation -und Informationen in unserer Wiki finden @ https://github.com/codecombat/codecombat/wiki - -Wir hoffen es gefällt dir genauso gut in unserer Community, wie es uns gefällt. - - - - Nick, George, Scott, Michael, Jeremy and Glen diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/readme-nl.coco b/scripts/windows/coco-dev-setup/batch/config/localized/readme-nl.coco deleted file mode 100755 index b714edf..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/readme-nl.coco +++ /dev/null @@ -1,30 +0,0 @@ - _____ _ _____ _ _ - / __ \ | | / __ \ | | | | - | / \/ ___ __| | ___ | / \/ ___ _ __ ___ | |__ __ _| |_ - | | / _ \ / _` |/ _ \ | | / _ \| '_ ` _ \| '_ \ / _` | __| - | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ - \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| - -============================================================================= - -Gefeliciteerd, je bent nu een deel van de CodeCombat gemeenschap. -Nu dat je ontwikkelingsomgeving volledig klaar is kun je beginnen met bijdragen -en ons helpen de wereld een betere plek te maken. - -Heb je enige vragen of wil je ons ontmoeten? -Praat met ons op hipchat @ https://www.hipchat.com/g3plnOKqa - -Je kunt ons ook bereiken via de forums. -Deze zijn te vinden @ http://discourse.codecombat.com/ - -De laatste ontwikkelingen kun je ook altijd volgen op onze blog. -Deze is te vinden @ http://blog.codecombat.com/ - -Tenslotte kun je de meeste documentatie en informatie vinden -op onze wiki @ https://github.com/codecombat/codecombat/wiki - -We hopen dat je het naar je zin zult hebben en net zoveel plezier zult beleven als wij. - - - - Nick, George, Scott, Michael, Jeremy and Glen - diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/readme-ru.coco b/scripts/windows/coco-dev-setup/batch/config/localized/readme-ru.coco deleted file mode 100644 index 93168de..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/readme-ru.coco +++ /dev/null @@ -1,29 +0,0 @@ - _____ _ _____ _ _ - / __ \ | | / __ \ | | | | - | / \/ ___ __| | ___ | / \/ ___ _ __ ___ | |__ __ _| |_ - | | / _ \ / _` |/ _ \ | | / _ \| '_ ` _ \| '_ \ / _` | __| - | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ - \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| - -============================================================================= - -ࠢ塞, ⥯ ᮮ⢠ CodeCombat. -, । ࠧࠡ稪 ⠭, ⮢ - ᤥ . - - ⥫ ? - hipchat @ https://www.hipchat.com/g3plnOKqa - - ᯮᮡ ⨦ ⮣ - 饭 襣 㬠. - @ http://discourse.codecombat.com/ - - ᫥ ⨦ 襬 . - @ http://blog.codecombat.com/ - - ᫥, 祭, - 㬥樨 - ଠ樨 襩 @ https://github.com/codecombat/codecombat/wiki - - , 㤥 ᫠ 襬 ᮮ⢥ ⠪ , . - - - - , द, , , ६ diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/readme.coco b/scripts/windows/coco-dev-setup/batch/config/localized/readme.coco deleted file mode 100755 index ccce0d3..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/readme.coco +++ /dev/null @@ -1,29 +0,0 @@ - _____ _ _____ _ _ - / __ \ | | / __ \ | | | | - | / \/ ___ __| | ___ | / \/ ___ _ __ ___ | |__ __ _| |_ - | | / _ \ / _` |/ _ \ | | / _ \| '_ ` _ \| '_ \ / _` | __| - | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ - \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| - -============================================================================= - -Congratulations, you are now part of the CodeCombat community. -Now that your Develop Environment has been setup, you are ready to start -contributing and help us make this world a better place. - -Do you have questions or would you like to meet us? -Talk with us on hipchat @ https://www.hipchat.com/g3plnOKqa - -Another way to reach is, is by visiting our forum. -You can find it @ http://discourse.codecombat.com/ - -You can read about the latest developments on our blog site. -This one can be found @ http://blog.codecombat.com/ - -Last but not least, you can find most of our documentation -and information on our wiki @ https://github.com/codecombat/codecombat/wiki - -We hope you'll enjoy yourself within our community, just as much as us. - - - - Nick, George, Scott, Michael, Jeremy and Glen diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/tips-de.coco b/scripts/windows/coco-dev-setup/batch/config/localized/tips-de.coco deleted file mode 100644 index a45708e..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/tips-de.coco +++ /dev/null @@ -1,7 +0,0 @@ - 1) Wenn eine Frage gestellt wird, lies sie dir genauso durch uns antworte korrekt - 2) Dieses Setup befindet sich noch im Beta-Stadium und enthält evtl. Fehler - 3) Du kannst Fehler melden @ 'https://github.com/codecombat/codecombat/issues' - 4) Hast du Fragen/Vorschläge? Sprcih mit uns im HipChat via CodeCombat.com - - Du kannst eine Schritt-für-Schritt-Anleitung in unserem Wiki finden. - github.com/codecombat/codecombat/wiki/Setup-on-Windows:-a-step-by-step-guide \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/tips-nl.coco b/scripts/windows/coco-dev-setup/batch/config/localized/tips-nl.coco deleted file mode 100755 index 9260ab6..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/tips-nl.coco +++ /dev/null @@ -1,8 +0,0 @@ - 1) Antwoord voorzichtig en juist, indien er een vraag gesteld wordt. - 2) Deze installatie is nog steeds in beta en kan bugs bevatten. - 3) Rapporteer bugs op 'https://github.com/codecombat/codecombat/issues' - 4) Heb je vragen of suggesties? Praat met ons op HipChat via CodeCombat.com - - Je kan een Engelstalige stappengids - voor deze installatie vinden op onze wiki: - github.com/codecombat/codecombat/wiki/Setup-on-Windows:-a-step-by-step-guide \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/tips-ru.coco b/scripts/windows/coco-dev-setup/batch/config/localized/tips-ru.coco deleted file mode 100644 index 9983cbd..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/tips-ru.coco +++ /dev/null @@ -1,7 +0,0 @@ - 1) , , ⢥砩 ⥫쭮 ࠢ쭮 - 2) ⠭騪 室 ⠤ ᮤঠ - 3) ᮮ @ 'https://github.com/codecombat/codecombat/issues' - 4) /।? HipChat १ CodeCombat.com - - 蠣 㪮⢮ ⠭騪 襩 . - github.com/codecombat/codecombat/wiki/Setup-on-Windows:-a-step-by-step-guide \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/localized/tips.coco b/scripts/windows/coco-dev-setup/batch/config/localized/tips.coco deleted file mode 100755 index d2473c1..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/localized/tips.coco +++ /dev/null @@ -1,7 +0,0 @@ - 1) When there is a question, please answer carefull and correct - 2) This setup is still in beta and may contain bugs - 3) You can report bugs @ 'https://github.com/codecombat/codecombat/issues' - 4) Having questions/suggestions? Talk with us on HipChat via CodeCombat.com - - You can find a step-by-step guide for this installation on our wiki. - github.com/codecombat/codecombat/wiki/Setup-on-Windows:-a-step-by-step-guide \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/npm_and_brunch_header.coco b/scripts/windows/coco-dev-setup/batch/config/npm_and_brunch_header.coco deleted file mode 100644 index 53a47af..0000000 --- a/scripts/windows/coco-dev-setup/batch/config/npm_and_brunch_header.coco +++ /dev/null @@ -1,7 +0,0 @@ - _ _ _________ ___ ____________ _ _ _ _ _____ _ _ - | \ | || ___ \ \/ | | ___ \ ___ \ | | | \ | / __ \| | | | - | \| || |_/ / . . | ______ | |_/ / |_/ / | | | \| | / \/| |_| | - | . ` || __/| |\/| | |______| | ___ \ /| | | | . ` | | | _ | - | |\ || | | | | | | |_/ / |\ \| |_| | |\ | \__/\| | | | - \_| \_/\_| \_| |_/ \____/\_| \_|\___/\_| \_/\____/\_| |_/ - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/configuration.exe b/scripts/windows/coco-dev-setup/batch/configuration.exe deleted file mode 100755 index 28177aeab963058357be2d7732b142cff0c07733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57856 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 Nw0Qv`Y5#lw{vR-k;0FKz diff --git a/scripts/windows/coco-dev-setup/batch/localization/de.coco b/scripts/windows/coco-dev-setup/batch/localization/de.coco deleted file mode 100644 index 4da2e9a..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/de.coco +++ /dev/null @@ -1,108 +0,0 @@ - - - - Deutsch - German - Bevor wir mit der Installation beginnen, hier ein paar Tipps: - Drücke eine beliebige Taste zum Beenden... - - - Du hast Deutsch als deine Sprache festgelegt. - Ab jetzt senden wir unser Feedback in Deutsch. - - - Um mit der Installation der Entwicklungsumgebung fortzuführen - musst du die folgende Lizenz lesen und aktzeptieren: - Hast du die Lizenz gelesen und aktzeptieren diese? - Dieses Setup kann ohne Ihre Zustimmung nicht fortgeführt werden. - Installation und Setup der CodeCombat Umgebung wurde abgebrochen. - - - - -Bit System erkannt. - Es wurde das Betriebssystem - erkannt. - Windows XP wird nicht unterstützt. Installation abgebrochen. - - - Sind die für CodeCombat benötigten Programme bereits installiert? - Wir empfehlen dir, mit „Nein“ zu antworten, falls du unsicher sind. - Überspringe Installation der Programme... - Ohne Software von Drittanbietern könnte CodeCombat nicht entwickelt werden. - Aus diesem Grund musst du diese Software installieren, - um sich in der Community zu engagieren. - Wenn du ein Programm bereits installiert hast, brich die Installation bitte ab. - Gehe sicher das die Option zum hinzufügen der Applikation zum Windows Path ausgewählt ist, sofern die Auswahl möglich ist. - Hast du bereits die aktuellste Version von - installiert? - wird heruntergeladen... - wird installiert... - wird entpackt... - wird aufgeräumt... - Bitte gebe den kompletten Pfad an, an dem MongoDB installiert werden soll - - - - - Wie Du bereits weißt, ist CodeCombat Open Source. - Unser Quellcode ist komplett auf Github. - Wenn Du möchtest, kannst du das komplette Git Repository selbst herunterladen und nach deinen wünschen einrichten. - Allerdings empfehlen wir, dass du den Prozess statt dessen uns überlässt. - - - Willst du das lokale Git Setup selbst vornehmen? - Bitte vergewissere dich, dass das Repository korrekt heruntergeladen wurde, bevor du fortfährst. - Bitte schließe dieses Fenster nicht. - Wenn du fertig bist, drücke eine beliebige Taste zum Fortfahren... - - - Gebe bitte den kompletten Pfad zu deinem CodeCombat Git Repository ein: - Bitte gib den kompletten Pfad ein, an dem du die CodeCombat Umgebung einrichten willst - Diese Installation benötigt die Git Bash. - Die Git Bash ist standardmäßig in 'C:\Program Files (x86)\Git' installiert. - Die Git Bash ist standardmäßig in 'C:\Program Files\Git' installiert. - Bitte gebe den kompletten Pfad zur Git Bash ein, oder drücke Enter, um den Standardpfad zu verwenden - Willst du das Repository via SSH auschecken? - - - Du solltest nun CodeCombat innerhalb deines GitHub-Kontos geforked haben... - Bitte gebe deine GitHub Informationen ein um die Konfiguration deines lokalen Repositorys vorzunehmen. - Benutzername: - Passwort: - Danke... Konfiguriere nun das lokale Repository... - - - - Die Installation deiner lokalen Umgebung war erfolgreich! - Du kannst nun dieses Setup schließen. - Danach öffnest du bitte das Konfigurations-Setup das dann automatisch deine Umgebung konfiguriert... - - - Installiere bower, brunch, nodemon und sendwithus... - Installiere bower Pakete... - Installiere sass... - Installiere npm... - Starte brunch.... - Richte die MongoDB Datenbank für dich ein... - Lade die aktuellste Version der CodeCombat Datenbank herunter... - - Nicht schließen! - - - Dieser Pfad existiert bereits. Willst du ihn wirklich überschreiben? - Dieser Pfad exisitert nicht. Bitte versuche es erneut... - - - Die CodeCombat Entwicklungsumgebung wurde erfoglreich installiert. - Vielen Dank für die Unterstützung und bis bald. - Willst du das README lesen, um weitere Informationen zu erhalten? - - - Von nun an kannst du die Entwicklungsumgebung starten unter - einmal mit der Maus klicken. - 1) Einfach Doppelklicken - und warten bis die Entwicklungsumgebung fertig geladen hat. - 2) Jetzt 'localhost:3000' in deinem bevorzugten Browser aufrufen. - Fertig. Du bist nun bereit, bei CodeCombat mitzuarbeiten! - - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/localization/en.coco b/scripts/windows/coco-dev-setup/batch/localization/en.coco deleted file mode 100755 index a9f72ed..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/en.coco +++ /dev/null @@ -1,108 +0,0 @@ - - - - English - English - Before we start the installation, here are some tips: - Press any key to exit... - - - You have choosen English as your language. - From now on we'll send our feedback in English. - - - In order to continue the installation of the developers environment - you will have to read and agree with the following license: - Have you read the license and do you agree with it? - This setup can't happen without an agreement. - Installation and Setup of the CodeCombat environment is cancelled. - - - - -bit computer detected. - The operating system - was detected. - We don't support Windows XP, installation cancelled. - - - Have you already installed all the software needed for CodeCombat? - We recommand that you reply negative in case you're not sure. - Skipping the installation of the software... - CodeCombat couldn't be developed without third-party software. - That's why you'll need to install this software, - in order to start contributing to our community. - Cancel the installation if you already have the application. - Make sure to select the option that adds the application to your Windows Path, if the option is available. - Do you already have the latest version of - installed? - is downloading... - is installing... - is unzipping... - is cleaning... - Please define the full path where mongodb should be installed - - - - - CodeCombat is opensource, like you already know. - All our sourcecode can be found online at Github. - You can choose to do the entire Git setup yourself. - However we recommend that you instead let us handle it instead. - - - Do you want to do the Local Git setup manually yourself? - Make sure you have correctly setup your repository before processing. - Do not close this window please. - When you're ready, press any key to continue... - - - Please give the full path of your CodeCombat git repository: - Please enter the full path where you want to install your CodeCombat environment - This installation requires Git Bash. - Git bash is by default installed at 'C:\Program Files (x86)\Git'. - Git bash is by default installed at 'C:\Program Files\Git'. - Please enter the full path where git bash is installed or just press enter if it's in the default location - Do you want to checkout the repository via ssh? - - - You should have forked CodeCombat to your own GitHub Account by now... - Please enter your github information, to configure your local repository. - Username: - Password: - Thank you... Configuring your local repistory right now... - - - - The installation of your local environment was succesfull! - You can now close this setup. - After that, you should open the configuration setup to automaticly configure your environment... - - - Installing bower, brunch, nodemon and sendwithus... - Installing bower packages... - Installing sass... - Installing npm... - Starting brunch.... - Setting up a MongoDB database for you... - Downloading the last version of the CodeCombat database... - - Don't close! - - - That path already exists, are you sure you want to overwrite it? - That path doesn't exist. Please try again... - - - The setup of the CodeCombat Dev. Environment was succesfull. - Thank you already for your contribution and see you soon. - Do you want to read the README for more information? - - - From now on you can start the dev. environment at - the touch of a single mouse click. - 1) Just double click - and let the environment start up. - 2) Now just open 'localhost:3000' in your prefered browser. - That's it, you're now ready to start working on CodeCombat! - - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/localization/languages.coco b/scripts/windows/coco-dev-setup/batch/localization/languages.coco deleted file mode 100755 index 784e567..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/languages.coco +++ /dev/null @@ -1,6 +0,0 @@ -en -ru -nl -de -zh-HANT -zh-HANS \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/localization/nl.coco b/scripts/windows/coco-dev-setup/batch/localization/nl.coco deleted file mode 100755 index a726a40..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/nl.coco +++ /dev/null @@ -1,108 +0,0 @@ - - - - Nederlands - Dutch - Voor we verder gaan met de installatie hier volgen enkele tips: - Druk een willekeurige toets in om af te sluiten... - - - Je hebt Nederlands gekozen als jouw taal naar keuze. - Vanaf nu geven we onze feedback in het Nederlands. - - - Om verder te gaan met de installatie van jouw CodeCombat omgeving - moet je de licentieovereenkomst lezen en ermee akkoord gaan. - Heb je de licentieovereenkomst gelezen en ga je ermee akkoord? - Deze installatie kan niet doorgaan zonder jouw akkoord. - De installatie van jouw Developers omgeving is nu geannulleerd. - - - - -bit computer gedetecteerd. - Het besturingssysteem - is gedetecteerd. - Wij ondersteunen Windows XP niet, installatie geannuleerd. - - - Heb je alle benodige software al genstalleerd? - We raden aan dat je negatief antwoord indien je niet zeker bent. - De installatie van software wordt geannuleerd... - CodeCombat kon niet worden ontwikkeld zonder third-party software. - Dat is waarom je deze software moet installeren, - zodat je kan beginnen met het bijdragen tot onze gemeenschap. - Annuleer de installatie als je de applicatie al hebt. - Zorg er zeker voor dat je de optie selecteert die de applicatie aan je Windows Path toevoegt, als deze optie beschikbaar is. - Heb je al de laatste versie van - genstalleerd? - is aan het downloaden... - is aan het installeren... - is aan het uitpakken... - is aan het opkuisen... - Geef het volledige pad op waar mongodb mag worden genstalleerd - - - - - CodeCombat is open-source, zoals je waarschijnlijk wel al weet. - Je kunt al onze source code vinden op Github. - Indien je wil, kan je de Git setup ook manueel doen. - Maar wij raden aan dat je ons dit automatisch laat afhandelen. - - - Wil je de lokale Git setup manueel doen? - Zorg er zeker voor dat jouw git repository correct is. - Sluit dit venster alsjeblieft niet. - Wanneer je klaar bent, druk dan op eender welke toets om verder te gaan... - - - Geef alsjeblieft het volledige pad in van je CodeCombat git repository: - Geef alsjeblieft het volledige pad in waar je de CodeCombat ontwikkelingsomgeving wilt installeren - Deze installatie maakt gebruik van Git Bash. - Git bash is normaal gezien genstalleerd in 'C:\Program Files (x86)\Git'. - Git bash is normaal gezien genstalleerd in 'C:\Program Files\Git'. - Geef alsjeblieft het volledige pad op van Git Bash of druk gewoon op enter indien je het pad niet gewijzigd hebt. - Wil je het git project downloaden via ssh? - - - Je zou nu al een eigen CodeCombat-fork moeten hebben gekoppeld aan jouw GitHub account... - Geef jou GitHub informatie alstublieft, zodat wij jou lokale repositorie kunnen configureren. - Gebruikersnaam: - Wachtwoord: - Dank u, jouw lokaal project wordt nu geconfigureerd... - - - - De installatie van jouw lokale omgeving was een succes! - Je kan nu deze setup sluiten. - Nadien, kan je de 'configuration' setup openen om jouw omgeving automatisch te configureren... - - - Bezig met het installeren van bower, brunch, nodemon en sendwithus... - Bower packages worden genstalleerd... - Sass wordt genstalleerd... - Npm wordt genstalleerd... - Brunch wordt gestart... - De MongoDB database wordt voor je klaargemaakt... - De laatste versie van de CodeCombat database wordt gedownload... - - Niet sluiten! - - - Dat pad bestaat al, ben je zeker dat je het wil overschrijven? - Dat pad bestaat niet, probeer alsjeblieft opnieuw... - - - De installatie van de CodeCombat ontwikkelingsomgeving was succesvol. - Alvast bedankt voor al je werk en tot binnenkort. - Wil je de LEESMIJ lezen voor meer informatie? - - - Vanaf nu kan je de ontwikkelingsomgeving opstarten - met het gemak van een enkele muisklik. - 1) Dubbelklik op - en laat de omgeving opstarten. - 2) Nu kan je 'localhost:3000' openen in je browser naar voorkeur. - Dat is het, je bent nu klaar om te starten met je werk aan CodeCombat. - - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/localization/ru.coco b/scripts/windows/coco-dev-setup/batch/localization/ru.coco deleted file mode 100644 index 903a06e..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/ru.coco +++ /dev/null @@ -1,108 +0,0 @@ - - - - русский - Russian - Перед тем, как мы начнём установку, вот несколько советов: - Нажмите Enter для выхода... - - - Вы выбрали русский в качестве вашего языка. - C данного момента мы будем общаться на русском. - - - Для того, чтобы продолжить установку среды разработчика - вы должны прочитать и согласиться со следующей лицензией: - Вы прочитали лицензию и согласны с ней? - Данная установка не начнётся без согласия. - Установка и настройка среды CodeCombat отменена. - - - - -битный компьютер обнаружен. - Обнаружена операционная система - . - Мы не поддерживаем Windows XP, установка отменена. - - - Вы уже установили всё программное обеспечение, необходимое для CodeCombat? - Мы рекумендуем ответить отрицательно, если вы не уверены. - Пропуск установки программного обеспечения... - CodeCombat не мог бы быть разработан без стороннего программного обеспечения. - Вот почему вы должны будете установить это программное обеспечение - для того, чтобы начать вносить вклад в наше сообщество. - Отмените установку, если у вас уже есть приложение. - Убедитесь в выборе опции, которая добавляет приложение в Windows PATH, если опция доступна. - У вас уже есть последняя версия - ? - загружается... - устанавливается... - распаковывается... - прибирается... - Пожалуйста, определите полный путь, куда должен быть установлен MongoDB - - - - - Исходный код CodeCombat открыт, как вы уже знаете. - Весь наш исходный код может быть найден онлайн в Github. - Вы можете выбрать целиком самостоятельную установку Git. - Однако мы рекомендуем, вместо этого, передать управление нам. - - - Вы хотите провести установку Local Git вручную самостоятельно? - Убедитесь, что вы правильно настроили репозиторий перед выполнением. - Не закрывайте это окно, пожалуйста. - Когда вы будете готовы, нажмите Enter для продолжения... - - - Пожалуйста, укажите полный путь до вашего CodeCombat репозитория git: - Пожалуйста, введите полный путь, куда вы хотите установить среду CodeCombat - Данная установка требует Git Bash. - Git bash по умолчанию установлен в 'C:\Program Files (x86)\Git'. - Git bash по умолчанию установлен в 'C:\Program Files\Git'. - Пожалуйста, введите полный путь, куда установлен git bash или просто нажмите Enter, если он находится в папке по умолчанию - Вы хотите проверять репозиторий через ssh? - - - Вы должны были сделать форк CodeCombat на вашем аккаунте GitHub... - Пожалуйста, введите ваши данные github, чтобы настроить локальный репозиторий. - Имя пользователя: - Пароль: - Спасибо... Идёт настройка вашего локального репозитория... - - - - Установка вашей локальной среды успешно завершена! - Теперь вы можете закрыть данный установщик. - После этого вы должны открыть установщик настроек для автоматической конфигурации вашей среды... - - - Установка bower, brunch, nodemon и sendwithus... - Установка пакетов bower... - Установка sass... - Установка npm... - Запуск brunch.... - Установка базы данных MongoDB... - Скачивание последней версии базы данных CodeCombat... - - Не закрывайте! - - - Этот путь уже существует, вы уверены, что хотите перезаписать его? - Этот путь не существует. Пожалуйста, попробуйте ещё раз... - - - Установка среды разработчика CodeCombat успешно завершена. - Заранее спасибо за ваш вклад и до скорой встречи. - Вы хотите прочитать README для получения дополнительной информации? - - - С этого момента вы можете запускать среду разработчика - с помощью щелчка мыши. - 1) Дважды щёлкните - и дайте среде запуститься. - 2) Теперь просто откройте 'localhost:3000' в вашем любимом браузере. - Вот и всё, теперь вы готовы приступить к работе над CodeCombat! - - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/localization/zh-HANS.coco b/scripts/windows/coco-dev-setup/batch/localization/zh-HANS.coco deleted file mode 100644 index 281dec4..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/zh-HANS.coco +++ /dev/null @@ -1,108 +0,0 @@ - - - - - Simplified Chinese - Before we start the installation, here are some tips: - Press any key to exit... - - - You have choosen as your language. - ĿǰֻӢĸ㷴 - - - In order to continue the installation of the developers environment - you will have to read and agree with the following license: - Have you read the license and do you agree with it? - This setup can't happen without an agreement. - Installation and Setup of the CodeCombat environment is cancelled. - - - - -λϵͳ. - ϵͳ - ⵽. - Dz֧ Windows XP, װȡ. - - - ǷѾװ CodeCombat ? - 㲻ȷĻش No. - İװ... - CodeCombat ޷ڲʹõ¿. - ΪʲôҪװЩ, - Ϊ˿ʼǵĿԴ. - ѾЩ ȡװ. - Make sure to select the option that adds the application to your Windows Path, if the option is available. - ǷѾװ°汾 - ? - ... - ڰװ... - ڽѹ... - ... - ϣװ mongodb ļеȫ· - - - - - CodeCombat ǿԴ. - ǵԴ붼 Github. - ѡԼֹװ Git. - ȻóԶ. - - - ǷԼֹװ Git װ? - ȷڿʼǰ, ȷúĿ. - 벻Ҫرմ˴. - ׼, 밴... - - - CodeCombat gitȫ·: - 밲װ CodeCombat ȫ· - װҪ Git Bash. - Git bash Ĭϰװ 'C:\Program Files (x86)\Git'. - Git bash Ĭϰװ 'C:\Program Files\Git'. - git bash İװȫ·, 㰲װĬ·, ôֱس - Ƿʹ ssh (checkout)(repository)? - - - You should have forked CodeCombat to your own GitHub Account by now... - Please enter your github information, to configure your local repository. - Username: - Password: - Thank you... Configuring your local repistory right now... - - - - The installation of your local environment was succesfull! - You can now close this setup. - After that, you should open the configuration setup to automaticly configure your environment... - - - ڰװ bower, brunch, nodemon sendwithus... - bower װ... - ڰװ sass... - ڰװ npm... - ڿ brunch.... - Ϊ MongoDB ݿ... - CodeCombat ݿ°汾... - - Don't close! - - - ·Ѿ, Ҫ? - ·, ٴγ... - - - CodeCombat Ĵѳɹ. - л~ ǻܿٴμ :) - ǷĶ README ļ˽Ϣ? - - - From now on you can start the dev. environment at - the touch of a single mouse click. - 1) ˫ļ - . - 2) 'localhost:3000' - ˣڿԿʼ CodeCombat ! - - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/localization/zh-HANT.coco b/scripts/windows/coco-dev-setup/batch/localization/zh-HANT.coco deleted file mode 100644 index ff0ec48..0000000 --- a/scripts/windows/coco-dev-setup/batch/localization/zh-HANT.coco +++ /dev/null @@ -1,108 +0,0 @@ - - - - 繁体中文 - Traditional Chinese - Before we start the installation, here are some tips: - Press any key to exit... - - - You have choosen 繁体中文 as your language. - From now on we'll send our feedback in 繁体中文. - - - In order to continue the installation of the developers environment - you will have to read and agree with the following license: - Have you read the license and do you agree with it? - This setup can't happen without an agreement. - Installation and Setup of the CodeCombat environment is cancelled. - - - - -bit computer detected. - The operating system - was detected. - We don't support Windows XP, installation cancelled. - - - Have you already installed all the software needed for CodeCombat? - We recommand that you reply negative in case you're not sure. - Skipping the installation of the software... - CodeCombat couldn't be developed without third-party software. - That's why you'll need to install this software, - in order to start contributing to our community. - Cancel the installation if you already have the application. - Make sure to select the option that adds the application to your Windows Path, if the option is available. - Do you already have the latest version of - installed? - is downloading... - is installing... - is unzipping... - is cleaning... - Please define the full path where mongodb should be installed - - - - - CodeCombat is opensource, like you already know. - All our sourcecode can be found online at Github. - You can choose to do the entire Git setup yourself. - However we recommend that you instead let us handle it instead. - - - Do you want to do the Local Git setup manually yourself? - Make sure you have correctly setup your repository before processing. - Do not close this window please. - When you're ready, press any key to continue... - - - Please give the full path of your CodeCombat git repository: - Please enter the full path where you want to install your CodeCombat environment - This installation requires Git Bash. - Git bash is by default installed at 'C:\Program Files (x86)\Git'. - Git bash is by default installed at 'C:\Program Files\Git'. - Please enter the full path where git bash is installed or just press enter if it's in the default location - Do you want to checkout the repository via ssh? - - - You should have forked CodeCombat to your own GitHub Account by now... - Please enter your github information, to configure your local repository. - Username: - Password: - Thank you... Configuring your local repistory right now... - - - - The installation of your local environment was succesfull! - You can now close this setup. - After that, you should open the configuration setup to automaticly configure your environment... - - - Installing bower, brunch, nodemon and sendwithus... - Installing bower packages... - Installing sass... - Installing npm... - Starting brunch.... - Setting up a MongoDB database for you... - Downloading the last version of the CodeCombat database... - - Don't close! - - - That path already exists, are you sure you want to overwrite it? - That path doesn't exist. Please try again... - - - The setup of the CodeCombat Dev. Environment was succesfull. - Thank you already for your contribution and see you soon. - Do you want to read the README for more information? - - - From now on you can start the dev. environment at - the touch of a single mouse click. - 1) Just double click - and let the environment start up. - 2) Now just open 'localhost:3000' in your prefered browser. - That's it, you're now ready to start working on CodeCombat! - - \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/ask_question.bat b/scripts/windows/coco-dev-setup/batch/scripts/ask_question.bat deleted file mode 100644 index 6633ba7..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/ask_question.bat +++ /dev/null @@ -1,5 +0,0 @@ -set /p res="%1 [Y/N]: " -set "result=unset" -if "%res%"=="Y" (set "result=true") -if "%res%"=="y" (set "result=true") -if "%result%"=="unset" (set "result=false") \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/configuration.bat b/scripts/windows/coco-dev-setup/batch/scripts/configuration.bat deleted file mode 100755 index d5cb2e1..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/configuration.bat +++ /dev/null @@ -1,47 +0,0 @@ -@echo off -setlocal EnableDelayedExpansion - -call read_cache - -call configuration_cmd - -call npm_and_brunch_setup - -call print_finished_header -call print_dashed_seperator - -call get_local_text end_succesfull end succesfull -call get_local_text end_thankyou end thankyou -echo %end_succesfull% -echo %end_thankyou% - -call print_dashed_seperator - -call get_local_text start_s1 start s1 -call get_local_text start_s2 start s2 -call get_local_text start_s3 start s3 -call get_local_text start_s4 start s4 -call get_local_text start_s5 start s5 -call get_local_text start_s6 start s6 - -echo !start_s1! -echo !start_s2! -echo. -echo !start_s3! '!repository_path!\coco\SCOCODE.bat' -echo !start_s4! -echo !start_s5! -echo. -echo !start_s6! - -call print_dashed_seperator - -call get_local_text end_readme end readme -call ask_question "!end_readme!" - -if "%result%"=="true" ( - call open_readme -) - -exit - -endlocal \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/configuration_cmd.bat b/scripts/windows/coco-dev-setup/batch/scripts/configuration_cmd.bat deleted file mode 100755 index 3c614e6..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/configuration_cmd.bat +++ /dev/null @@ -1,4 +0,0 @@ -Color 0A -mode con: cols=79 lines=55 - -TITLE CodeCombat.com - Development Environment Installation \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/download_and_install_app.bat b/scripts/windows/coco-dev-setup/batch/scripts/download_and_install_app.bat deleted file mode 100644 index 760b408..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/download_and_install_app.bat +++ /dev/null @@ -1,141 +0,0 @@ -<<<<<<< HEAD -set "temp_directory=c:\.coco\" -set "curl_app=..\utilities\curl.exe" -set "zu_app=..\utilities\7za.exe" - -if NOT exist "%temp_directory%" ( - md %temp_directory% -) - -call get_local_text install_process_prefix install process prefix -call get_local_text install_process_sufix install process sufix - -call ask_question "!install_process_prefix! %1 !install_process_sufix!" - -if "%result%"=="true" ( - goto:exit_installation -) - -call print_dashed_seperator - -call get_extension %2 download_extension -call get_local_text install_process_downloading install process downloading -echo %1 !install_process_downloading! -set "install_file=!temp_directory!%1.!download_extension!" -%curl_app% -k %2 -o !install_file! - -if "%download_extension%"=="zip" ( - set "package_path=!temp_directory!%1\" - - %zu_app% x !install_file! -o!package_path! -y - - for /f "delims=" %%a in ('dir !package_path! /on /ad /b') do @set mongodb_original_directory=%%a - - call print_dashed_seperator - goto:get_mongodb_path - - :get_mongodb_path - call get_local_text install_process_mongodbpath install process mongodbpath - set /p "mongodb_path=!install_process_mongodbpath!: " - if exist "%mongodb_path%" ( - call get_local_text error_path error path - call ask_question "!error_path!" - if "!result!"=="false" ( - call print_dashed_seperator - goto:get_mongodb_path - ) else ( - rmdir /s /q %mongodb_path% - ) - ) - md %mongodb_path% - - %systemroot%\System32\xcopy !package_path!!mongodb_original_directory! !mongodb_path! /r /h /s /e /y - goto:clean_up -) - -call get_local_text install_process_installing install process installing -echo %1 !install_process_installing! -echo. -start /WAIT !install_file! -goto:clean_up - -:clean_up - call get_local_text install_process_cleaning install process cleaning - echo %1 !install_process_cleaning! - rmdir /s /q "!temp_directory!" - goto:exit_installation - -:exit_installation -======= -set "temp_directory=c:\.coco\" -set "curl_app=..\utilities\curl.exe" -set "zu_app=..\utilities\7za.exe" - -if NOT exist "%temp_directory%" ( - md %temp_directory% -) - -call get_local_text install_process_prefix install process prefix -call get_local_text install_process_sufix install process sufix - -call ask_question "!install_process_prefix! %1 !install_process_sufix!" - -if "%result%"=="true" ( - goto:exit_installation -) - -call print_dashed_seperator - -call get_extension %2 download_extension -call get_local_text install_process_downloading install process downloading -echo %1 !install_process_downloading! -set "install_file=!temp_directory!%1.!download_extension!" -start /wait cmd.exe /c "TITLE %1 !install_process_downloading! && %curl_app% -k -m 10800 --retry 100 -o !install_file! %2" - -if "%download_extension%"=="zip" ( - set "package_path=!temp_directory!%1\" - - %zu_app% x !install_file! -o!package_path! -y - - for /f "delims=" %%a in ('dir !package_path! /on /ad /b') do @set mongodb_original_directory=%%a - - call print_dashed_seperator - goto:get_mongodb_path - - :get_mongodb_path - call get_local_text install_process_mongodbpath install process mongodbpath - set /p "mongodb_path=!install_process_mongodbpath!: " - if exist "%mongodb_path%" ( - call get_local_text error_path error path - call ask_question "!error_path!" - if "!result!"=="false" ( - call print_dashed_seperator - goto:get_mongodb_path - ) else ( - rmdir /s /q %mongodb_path% - ) - ) - md %mongodb_path% - - %systemroot%\System32\xcopy !package_path!!mongodb_original_directory! !mongodb_path! /r /h /s /e /y - - call set_environment_var "!mongodb_path!\bin" - - goto:clean_up -) - -call get_local_text install_process_installing install process installing -echo %1 !install_process_installing! -echo. -start /WAIT !install_file! -goto:clean_up - -:clean_up - call get_local_text install_process_cleaning install process cleaning - echo %1 !install_process_cleaning! - rmdir /s /q "!temp_directory!" - goto:exit_installation - -:exit_installation ->>>>>>> 072729acc34123c42250d361955438cfd8c210d7 - call print_dashed_seperator \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/download_and_install_applications.bat b/scripts/windows/coco-dev-setup/batch/scripts/download_and_install_applications.bat deleted file mode 100644 index f996808..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/download_and_install_applications.bat +++ /dev/null @@ -1,54 +0,0 @@ -call print_install_header -call print_dashed_seperator - -call get_local_text install_process_sks install process sks -echo !install_process_sks! - -call get_local_text install_process_skq install process skq -call ask_question "!install_process_skq!" - -call print_dashed_seperator - -if "%result%"=="true" ( - call get_local_text install_process_skc install process skc - echo !install_process_skc! - call print_dashed_seperator - goto:exit_setup -) - -call get_system_information -call print_dashed_seperator - -if %system_info_os% == XP ( - call get_local_text install_system_xp install system xp - echo !install_system_xp! - call print_exit -) - -call get_variables ..\\config\\downloads.coco downloads download_names downloads_count 0 general general -call get_variables ..\\config\\downloads.coco downloads download_names downloads_count 2 %system_info_os% b%system_info_bit% -call get_variables ..\\config\\downloads.coco downloads download_names downloads_count 3 general b%system_info_bit% - -call get_local_text install_process_s1 install process s1 -call get_local_text install_process_s2 install process s2 -call get_local_text install_process_s3 install process s3 -call get_local_text install_process_s4 install process s4 -call get_local_text install_process_winpath install process winpath - -echo !install_process_s1! -echo !install_process_s2! -echo !install_process_s3! -echo. -echo !install_process_s4! -echo. -echo !install_process_winpath! - -call print_dashed_seperator - -for /l %%i in (1, 1, !downloads_count!) do ( - call download_and_install_app !download_names[%%i]! !downloads[%%i]! -) - -goto:exit_setup - -:exit_setup \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_array.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_array.bat deleted file mode 100644 index a11f237..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_array.bat +++ /dev/null @@ -1,6 +0,0 @@ -set "file=%1" -set /a %3=0 -for /F "usebackq delims=" %%a in ("%file%") do ( - set /A %3+=1 - call set %2[%%%3%%]=%%a -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_cache_var.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_cache_var.bat deleted file mode 100755 index 7f3aeb0..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_cache_var.bat +++ /dev/null @@ -1,3 +0,0 @@ -for /F "delims=" %%F in ('call run_script .\\get_var.ps1 ..\\config\\cache.coco %1') do ( - set "%1=%%F" -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_category.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_category.bat deleted file mode 100755 index 790001b..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_category.bat +++ /dev/null @@ -1,3 +0,0 @@ -for /f "delims=" %%a in ('..\\utilities\\get_category.exe %*') do ( - %%a -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_config.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_config.bat deleted file mode 100644 index c335263..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_config.bat +++ /dev/null @@ -1,3 +0,0 @@ -for /F "delims=" %%F in ('call run_script .\\get_var.ps1 ..\\config\\config.coco %1') do ( - set "%1=%%F" -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_download.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_download.bat deleted file mode 100644 index 1b81e6a..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_download.bat +++ /dev/null @@ -1,3 +0,0 @@ -for /F "delims=" %%F in ('call run_script .\\get_var.ps1 ..\\config\\downloads.coco %2 %3 %4 %5') do ( - set "%1=%%F" -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_extension.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_extension.bat deleted file mode 100644 index 71b381e..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_extension.bat +++ /dev/null @@ -1,3 +0,0 @@ -for /F "delims=" %%F in ('call run_script .\\get_extension.ps1 %1') do ( - set "%2=%%F" -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_extension.ps1 b/scripts/windows/coco-dev-setup/batch/scripts/get_extension.ps1 deleted file mode 100644 index 631132f..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_extension.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -$url = ($args[0].ToLower()) - -if($url.Contains("zip")) -{ - Write-Host "zip" -} -elseif($url.Contains("exe")) -{ - Write-Host "exe" -} -elseif($url.Contains("msi")) -{ - Write-Host "msi" -} -elseif($url.Contains("tar.gz")) -{ - Write-Host "tar.gz" -} \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_language.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_language.bat deleted file mode 100644 index 04f859d..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_language.bat +++ /dev/null @@ -1,39 +0,0 @@ -echo Some feedback is sent in your system's language -echo but most feedback is sent and localised by us. -echo Here is a list of languages: -call print_dashed_seperator - -call get_array ..\\localization\\languages.coco languages language_count -for /l %%i in (1,1,%language_count%) do ( - call get_text !languages[%%i]! global_description global description - echo [%%i] !global_description! -) - -goto:get_localization_id - -:get_localization_id - call print_dashed_seperator - set /p "localization_id=Enter the language ID of your preference and press : " - goto:validation_check - -:validation_check - set "localization_is_false=" - set /a local_id = %localization_id% - if !local_id! EQU 0 set localization_is_false=1 - if !local_id! LSS 1 set localization_is_false=1 - if !local_id! GTR !language_count! set localization_is_false=1 - if defined localization_is_false ( - echo The id you entered is invalid, please try again... - goto:get_localization_id - ) else ( - set language_id=!languages[%local_id%]! - call print_dashed_seperator - - call get_local_text language_choosen language choosen - echo !language_choosen! - - call get_local_text language_feedback language feedback - echo !language_feedback! - - call print_seperator - ) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_local_text.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_local_text.bat deleted file mode 100644 index aae9bf1..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_local_text.bat +++ /dev/null @@ -1 +0,0 @@ -call get_text %language_id% %1 %2 %3 %4 %5 \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_path_safe.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_path_safe.bat deleted file mode 100644 index c767076..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_path_safe.bat +++ /dev/null @@ -1,10 +0,0 @@ -goto:get_safe_path - -:get_safe_path - set /p "tmp_safe_path=%1" - if not exist "%tmp_safe_path%" ( - call get_local_text error-exist - echo !error_exist! - call print_dashed_seperator - goto:get_safe_path - ) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_system_information.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_system_information.bat deleted file mode 100644 index 04c66c1..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_system_information.bat +++ /dev/null @@ -1,29 +0,0 @@ -if exist "%PROGRAMFILES(X86)%" ( - call:set_bit 64 -) else ( - call:set_bit 32 -) - -for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j -if "%version%" == "5.2" ( call:set_os XP ) -if "%version%" == "6.0" ( call:set_os Vista ) -if "%version%" == "6.1" ( call:set_os Win7 ) -if "%version%" == "6.2" ( call:set_os Win8 ) -if "%version%" == "6.3" ( call:set_os Win8 ) - -goto:end - -:set_bit - call get_local_text install_system_bit install system bit - set system_info_bit=%~1 - echo %system_info_bit%%install_system_bit% -goto:eof - -:set_os - set system_info_os=%~1 - call get_local_text install_system_prefix install system prefix - call get_local_text install_system_sufix install system sufix - echo %install_system_prefix% %system_info_os% %install_system_sufix% -goto:eof - -:end diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_text.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_text.bat deleted file mode 100644 index 617d5b0..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_text.bat +++ /dev/null @@ -1,3 +0,0 @@ -for /F "delims=" %%F in ('call run_script .\\get_var.ps1 ..\\localization\\%1.coco %3 %4 %5 %6') do ( - set "%2=%%F" -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_var.ps1 b/scripts/windows/coco-dev-setup/batch/scripts/get_var.ps1 deleted file mode 100644 index 5e63443..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_var.ps1 +++ /dev/null @@ -1,27 +0,0 @@ -$xml_file = [xml](get-content $args[0]) -if($args.count -eq 2) -{ - $var_output = ($xml_file.variables.($args[1])) -} -elseif($args.count -eq 3) -{ - $var_output = ($xml_file.variables.($args[1]).($args[2])) -} -elseif($args.count -eq 4) -{ - $var_output = ($xml_file.variables.($args[1]).($args[2]).($args[3])) -} -elseif($args.count -eq 5) -{ - $var_output = ($xml_file.variables.($args[1]).($args[2]).($args[3]).($args[4])) -} -elseif($args.count -eq 6) -{ - $var_output = ($xml_file.variables.($args[1]).($args[2]).($args[3]).($args[4]).($args[5])) -} -elseif($args.count -eq 7) -{ - $var_output = ($xml_file.variables.($args[1]).($args[2]).($args[3]).($args[4]).($args[5]).($args[6])) -} - -Write-Host "$var_output" \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_variables.bat b/scripts/windows/coco-dev-setup/batch/scripts/get_variables.bat deleted file mode 100644 index f46c187..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_variables.bat +++ /dev/null @@ -1,4 +0,0 @@ -set count=0 -for /F "delims=" %%F in ('call run_script.bat .\\get_variables.ps1 %*') do ( - %%F -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/get_variables.ps1 b/scripts/windows/coco-dev-setup/batch/scripts/get_variables.ps1 deleted file mode 100644 index 38fa11b..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/get_variables.ps1 +++ /dev/null @@ -1,33 +0,0 @@ -$xml_file = [xml](get-content $args[0]) -$arr_value = $args[1] -$arr_name = $args[2] -$arr_counter = $args[3] -$counter = $args[4] - -if($args.count -eq 6) -{ - $root = $xml_file.variables.($args[5]) -} -elseif($args.count -eq 7) -{ - $root = $xml_file.variables.($args[5]).($args[6]) -} -elseif($args.count -eq 8) -{ - $root = $xml_file.variables.($args[5]).($args[6]).($args[7]) -} -elseif($args.count -eq 9) -{ - $nodes = $xml_file.variables.($args[5]).($args[6]).($args[7]).($args[8]) -} - -foreach ($node in $root.ChildNodes) -{ - $counter += 1 - $value = $node.InnerText - $name = $node.Name - Write-Host set "$arr_value[$counter]=$value" - Write-Host set "$arr_name[$counter]=$name" -} - -Write-Host set "$arr_counter=$counter" \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/github_setup.bat b/scripts/windows/coco-dev-setup/batch/scripts/github_setup.bat deleted file mode 100644 index 38234f5..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/github_setup.bat +++ /dev/null @@ -1,149 +0,0 @@ -call print_github_header -call print_dashed_seperator - -call get_local_text github_intro_opensource github intro opensource -call get_local_text github_intro_online github intro online -call get_local_text github_intro_manual github intro manual -call get_local_text github_intro_norec github intro norec - -echo !github_intro_opensource! -echo !github_intro_online! -echo !github_intro_manual! -echo !github_intro_norec! - -call print_dashed_seperator - -call get_local_text github_skip_question github skip question -call ask_question "!github_skip_question!" -call print_dashed_seperator - -if "%result%"=="true" ( - call get_local_text github_skip_consequence github skip consequence - echo !github_skip_consequence! - - call get_local_text github_skip_donotclose github skip donotclose - echo !github_skip_donotclose! - - call get_local_text github_skip_wait github skip wait - set /p "github_skip_wait=!github_skip_wait!" - - call print_dashed_seperator - - call get_local_text github_process_path github process path - call get_path_safe "!github_process_path!" - set "repository_path=!tmp_safe_path!" - - goto:exit_git_setup -) - -goto:get_bash_path - -:get_bash_path - call get_local_text github_process_bashi github process bashi - echo !github_process_bashi! - - if not defined install_system_bit ( - call print_dashed_seperator - call get_system_information - call print_dashed_seperator - ) - - if "%system_info_bit%"=="64" ( - call get_local_text github_process_bashp64 github process bashp64 - echo !github_process_bashp64! - ) else ( - call get_local_text github_process_bashp32 github process bashp32 - echo !github_process_bashp32! - ) - - call get_local_text github_process_bashq github process bashq - set /p "git_bash_path=!github_process_bashq!: " - - if not defined git_bash_path ( - if "%system_info_bit%"=="64" ( - set "git_bash_path=C:\Program Files (x86)\Git" - ) else ( - set "git_bash_path=C:\Program Files\Git" - ) - goto:get_git_path - ) - - if not exist "%git_bash_path%" ( - call get_local_text error_exist error exist - echo !error_exist! - call print_dashed_seperator - goto:get_bash_path - ) else ( - goto:get_git_path - ) -goto:eof - -:get_git_path - call print_dashed_seperator - call get_local_text github_process_checkout github process checkout - set /p "repository_path=!github_process_checkout!: " - if exist !repository_path! ( - call get_local_text error_path error path - call ask_question "!error_path!" - if "!result!"=="false" ( - call print_dashed_seperator - goto:get_git_path - ) else ( - rmdir /s /q %repository_path% - goto:git_checkout - ) - ) else ( - goto:git_checkout - ) -goto:eof - -:git_checkout - md "%repository_path%" - set "repository_path=%repository_path%" - - call print_dashed_seperator - set "git_app_path=%git_bash_path%\bin\git.exe" - - call get_config github_url - "%git_app_path%" clone "!github_url!" "%repository_path%\coco" - - goto:git_configuration -goto:eof - -:git_configuration - call print_dashed_seperator - - call get_local_text github_config_intro github config intro - echo !github_config_intro! - - call get_local_text github_config_info github config info - echo !github_config_info! - - call print_dashed_seperator - - call get_local_text github_config_username github config username - set /p "git_username=!github_config_username!" - - call get_local_text github_config_password github config password - - set /p "git_password=!github_config_password!" - - call print_dashed_seperator - - call get_local_text github_config_process github config process - echo !github_config_process! - - set cur_dir=%CD% - cd !repository_path!\coco - - "%git_app_path%" remote rm origin - "%git_app_path%" remote add origin https://!git_username!:!git_password!@github.com/!git_username!/codecombat.git - - cd !cur_dir! - - goto:exit_git_setup -goto:eof - -:exit_git_setup - call print_dashed_seperator -goto:eof \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/nab_automatic_script.bat b/scripts/windows/coco-dev-setup/batch/scripts/nab_automatic_script.bat deleted file mode 100755 index 98e550d..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/nab_automatic_script.bat +++ /dev/null @@ -1,7 +0,0 @@ -call print_dashed_seperator -call get_local_text npm_script npm script -echo %npm_script% - -echo start cmd.exe cmd /c "TITLE CodeCombat.com - mongodb database & mongod --setParameter textSearchEnabled=true --dbpath %~2">%~1\SCOCODE.bat -echo start cmd.exe cmd /c "TITLE CodeCombat.com - nodemon server & nodemon index.js">>%~1\SCOCODE.bat -echo start cmd.exe cmd /c "TITLE CodeCombat.com - brunch - live compiler & brunch w">>%~1\SCOCODE.bat \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_bower.bat b/scripts/windows/coco-dev-setup/batch/scripts/nab_install_bower.bat deleted file mode 100755 index ea7676b..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_bower.bat +++ /dev/null @@ -1,7 +0,0 @@ -call print_dashed_seperator -call get_local_text npm_binstall npm binstall -echo %npm_binstall% - -cd /D %~1 -start /wait cmd /c "echo %npm_binstall% & bower cache clean & bower install" -cd /D %work_directory% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_mongodb.bat b/scripts/windows/coco-dev-setup/batch/scripts/nab_install_mongodb.bat deleted file mode 100755 index f75b057..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_mongodb.bat +++ /dev/null @@ -1,37 +0,0 @@ -call print_dashed_seperator -call get_local_text npm_mongodb npm mongodb -echo %npm_mongodb% - -if exist %~1 ( - rmdir /s /q %~1 -) - -md %~1 - -call print_dashed_seperator -call get_local_text npm_db npm db -echo %npm_db% - -call get_config database_backup - -call get_local_text npm_close npm close - -cd /D %~1 - -start cmd /c "TITLE MongoDB - %npm_close% & mongod --setParameter textSearchEnabled=true --dbpath %~1" - -start /wait cmd.exe /c "TITLE downloading database backup... && %work_directory%\%curl_app% -k -m 10800 --retry 100 -o dump.tar.gz %database_backup%" - -start /wait cmd /c "%work_directory%\%zu_app% e dump.tar.gz && del dump.tar.gz && %work_directory%\%zu_app% x dump.tar && del dump.tar" - -start /wait cmd /c "mongorestore dump" - -rmdir /s /q dump - -call %work_directory%\print_dashed_seperator - -taskkill /F /fi "IMAGENAME eq mongod.exe" - -del /F %~1\mongod.lock - -cd /D %work_directory% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm.bat b/scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm.bat deleted file mode 100755 index 872f2c7..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm.bat +++ /dev/null @@ -1,6 +0,0 @@ -call get_local_text npm_install npm install -echo %npm_install% - -cd /D %~1 -start /wait cmd /c "echo %npm_install% & npm install -g bower brunch nodemon sendwithus" -cd /D %work_directory% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm_all.bat b/scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm_all.bat deleted file mode 100755 index 66e8834..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_npm_all.bat +++ /dev/null @@ -1,7 +0,0 @@ -call print_dashed_seperator -call get_local_text npm_npm npm npm -echo %npm_npm% - -cd /D %~1 -start /wait cmd /c "echo %npm_npm% & npm install" -cd /D %work_directory% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_sass.bat b/scripts/windows/coco-dev-setup/batch/scripts/nab_install_sass.bat deleted file mode 100755 index 792dbe2..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/nab_install_sass.bat +++ /dev/null @@ -1,7 +0,0 @@ -call print_dashed_seperator -call get_local_text npm_sass npm sass -echo %npm_sass% - -cd /D %~1 -start /wait cmd /c "echo %npm_sass% & gem install sass" -cd /D %work_directory% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/npm_and_brunch_setup.bat b/scripts/windows/coco-dev-setup/batch/scripts/npm_and_brunch_setup.bat deleted file mode 100644 index 4f6a796..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/npm_and_brunch_setup.bat +++ /dev/null @@ -1,24 +0,0 @@ -call print_npm_and_brunch_header -call print_dashed_seperator - -set work_directory=%CD% - -set "curl_app=..\utilities\curl.exe" -set "zu_app=..\utilities\7za.exe" - -set coco_root=%repository_path%\coco -set coco_db=%repository_path%\cocodb - -call nab_install_npm %coco_root% - -call nab_install_bower %coco_root% - -call nab_install_sass %coco_root% - -call nab_install_npm_all %coco_root% - -call nab_install_mongodb %coco_db% - -call nab_automatic_script.bat %coco_root% %coco_db% - -call print_dashed_seperator diff --git a/scripts/windows/coco-dev-setup/batch/scripts/open_localized_text_file.bat b/scripts/windows/coco-dev-setup/batch/scripts/open_localized_text_file.bat deleted file mode 100755 index 48ecef8..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/open_localized_text_file.bat +++ /dev/null @@ -1,6 +0,0 @@ -set "LFTP=%1-%language_id%.coco" -if not exist "%LFTP%" ( - call open_text_file %1.coco -) else ( - call open_text_file %LFTP% -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/open_readme.bat b/scripts/windows/coco-dev-setup/batch/scripts/open_readme.bat deleted file mode 100644 index 730a3f5..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/open_readme.bat +++ /dev/null @@ -1 +0,0 @@ -call open_localized_text_file ..\\config\\localized\\readme \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/open_text_file.bat b/scripts/windows/coco-dev-setup/batch/scripts/open_text_file.bat deleted file mode 100644 index 6271391..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/open_text_file.bat +++ /dev/null @@ -1 +0,0 @@ -start notepad.exe %1 \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_dashed_seperator.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_dashed_seperator.bat deleted file mode 100644 index cf1c60a..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_dashed_seperator.bat +++ /dev/null @@ -1,3 +0,0 @@ -echo. -echo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -echo. \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_exit.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_exit.bat deleted file mode 100644 index 107790d..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_exit.bat +++ /dev/null @@ -1,3 +0,0 @@ -call get_local_text global_exit global exit -set /p res="%global_exit%" -exit \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_file.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_file.bat deleted file mode 100644 index de46b68..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_file.bat +++ /dev/null @@ -1,4 +0,0 @@ -set "file=%1" -for /f "usebackq tokens=* delims=;" %%a in ("%file%") do ( - echo.%%a -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_finished_header.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_finished_header.bat deleted file mode 100644 index d7b5572..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_finished_header.bat +++ /dev/null @@ -1 +0,0 @@ -call print_file ..\\config\\finished_header.coco \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_github_header.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_github_header.bat deleted file mode 100644 index d5cbe3e..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_github_header.bat +++ /dev/null @@ -1 +0,0 @@ -call print_file ..\\config\\github_header.coco \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_header.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_header.bat deleted file mode 100644 index 328405e..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_header.bat +++ /dev/null @@ -1 +0,0 @@ -call print_file ..\\config\\header.coco \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_info.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_info.bat deleted file mode 100644 index 7af7314..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_info.bat +++ /dev/null @@ -1 +0,0 @@ -print_file ..\\config\\info.coco \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_install_header.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_install_header.bat deleted file mode 100644 index 0d430ad..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_install_header.bat +++ /dev/null @@ -1 +0,0 @@ -call print_file ..\\config\\install_header.coco \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_license.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_license.bat deleted file mode 100644 index 3acee4b..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_license.bat +++ /dev/null @@ -1 +0,0 @@ -call print_localized_file ..\\config\\localized\\license \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_localized_file.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_localized_file.bat deleted file mode 100755 index 6cf33b4..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_localized_file.bat +++ /dev/null @@ -1,6 +0,0 @@ -set "LFTP=%1-%language_id%.coco" -if not exist "%LFTP%" ( - call print_file %1.coco -) else ( - call print_file %LFTP% -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_npm_and_brunch_header.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_npm_and_brunch_header.bat deleted file mode 100644 index 9f9ea21..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_npm_and_brunch_header.bat +++ /dev/null @@ -1 +0,0 @@ -call print_file ..\\config\\npm_and_brunch_header.coco \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_seperator.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_seperator.bat deleted file mode 100644 index 50f484b..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_seperator.bat +++ /dev/null @@ -1,3 +0,0 @@ -echo. -echo ------------------------------------------------------------------------------- -echo. \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/print_tips.bat b/scripts/windows/coco-dev-setup/batch/scripts/print_tips.bat deleted file mode 100644 index 0a2e303..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/print_tips.bat +++ /dev/null @@ -1 +0,0 @@ -call print_localized_file ..\\config\\localized\\tips \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/read_cache.bat b/scripts/windows/coco-dev-setup/batch/scripts/read_cache.bat deleted file mode 100755 index a920e2d..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/read_cache.bat +++ /dev/null @@ -1,2 +0,0 @@ -call get_cache_var language_id -call get_cache_var repository_path \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/run_script.bat b/scripts/windows/coco-dev-setup/batch/scripts/run_script.bat deleted file mode 100644 index c18af72..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/run_script.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& "%*" \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/set_environment_var.bat b/scripts/windows/coco-dev-setup/batch/scripts/set_environment_var.bat deleted file mode 100755 index 05d5362..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/set_environment_var.bat +++ /dev/null @@ -1 +0,0 @@ -setx path ";%~1" \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/setup.bat b/scripts/windows/coco-dev-setup/batch/scripts/setup.bat deleted file mode 100644 index fe24e68..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/setup.bat +++ /dev/null @@ -1,29 +0,0 @@ -@echo off -setlocal EnableDelayedExpansion - -call configuration_cmd - -call print_header -call print_dashed_seperator - -call get_config.bat version -call get_config.bat author -call get_config.bat copyright -echo Welcome to the automated Installation of the CodeCombat Dev. Environment! -echo v%version% authored by %author% and published by %copyright%. -call print_seperator - -call get_language - -call get_local_text global_tips global tips -echo !global_tips! -call print_tips -call print_seperator - -call sign_license - -call download_and_install_applications - -start cmd /c "setup_p2.bat" - -endlocal \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/setup_p2.bat b/scripts/windows/coco-dev-setup/batch/scripts/setup_p2.bat deleted file mode 100755 index f6e0d3b..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/setup_p2.bat +++ /dev/null @@ -1,20 +0,0 @@ -@echo off -setlocal EnableDelayedExpansion - -call configuration_cmd - -call github_setup - -call write_cache - -call get_local_text switch_install switch install -call get_local_text switch_close switch close -call get_local_text switch_open switch open - -echo %switch_install% -echo %switch_close% -echo. - -set /p "dummy=%switch_open%" - -endlocal \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/sign_license.bat b/scripts/windows/coco-dev-setup/batch/scripts/sign_license.bat deleted file mode 100644 index a3d3a3f..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/sign_license.bat +++ /dev/null @@ -1,27 +0,0 @@ -call get_local_text license_s1 license s1 -echo !license_s1! - -call get_local_text license_s2 license s2 -echo !license_s2! - -call print_dashed_seperator - -call print_license -call print_dashed_seperator - -call get_local_text license_q1 license q1 -call ask_question "%license_q1%" - -call print_dashed_seperator - -if "%result%"=="false" ( - call get_local_text license_a1 license a1 - echo !license_a1! - - call get_local_text license_a2 license a2 - echo !license_a2! - - echo. - - call print_exit -) \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/scripts/write_cache.bat b/scripts/windows/coco-dev-setup/batch/scripts/write_cache.bat deleted file mode 100755 index 78f2a6c..0000000 --- a/scripts/windows/coco-dev-setup/batch/scripts/write_cache.bat +++ /dev/null @@ -1,10 +0,0 @@ -set "cache=..\\config\\cache.coco" - -echo ^>%cache% - -echo ^>>%cache% - -echo ^%language_id%^>>%cache% -echo ^%repository_path%^>>%cache% - -echo ^>>%cache% \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/setup.bat b/scripts/windows/coco-dev-setup/batch/setup.bat deleted file mode 100644 index 1246a77..0000000 --- a/scripts/windows/coco-dev-setup/batch/setup.bat +++ /dev/null @@ -1,2 +0,0 @@ -cd scripts -setup.bat \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/setup.exe b/scripts/windows/coco-dev-setup/batch/setup.exe deleted file mode 100755 index f36e70dfa64d57a5e5e223f8b28d4a24e18d33a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57856 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

c8vG<6q&=<`^9V2196MB+OW{0#@xRf%vi6NPiU= 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 OGi_c#NZSA2zyAkON8hOc diff --git a/scripts/windows/coco-dev-setup/dev-setup-packer.bat b/scripts/windows/coco-dev-setup/dev-setup-packer.bat deleted file mode 100755 index 437e105..0000000 --- a/scripts/windows/coco-dev-setup/dev-setup-packer.bat +++ /dev/null @@ -1,16 +0,0 @@ -@echo off -setlocal EnableDelayedExpansion - -:: ================= GLOBAL VARIABLES =================== -set "ZU-app=batch\utilities\7za.exe" -set "title=coco-dev-win-setup" - -cd batch\\scripts\\ -call get_config version -cd ..\\..\\ - -%ZU-app% a "%title%-%version%.zip" .\batch\* - -:: =================== EOF ============================= - -endlocal \ No newline at end of file diff --git a/scripts/windows/install-mongodb.ps1 b/scripts/windows/install-mongodb.ps1 deleted file mode 100755 index 503872e..0000000 --- a/scripts/windows/install-mongodb.ps1 +++ /dev/null @@ -1,39 +0,0 @@ -Set-ExecutionPolicy RemoteSigned - -$mongoDbPath = "C:\MongoDB" -$mongoDbConfigPath = "$mongoDbPath\mongod.cfg" -$url = "http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.4.9.zip" -$zipFile = "$mongoDbPath\mongo.zip" -$unzippedFolderContent ="$mongoDbPath\mongodb-win32-x86_64-2008plus-2.4.9" - -if ((Test-Path -path $mongoDbPath) -eq $True) -{ - write-host "Seems you already installed MongoDB" - exit -} - -md $mongoDbPath -md "$mongoDbPath\log" -md "$mongoDbPath\data" -md "$mongoDbPath\data\db" - -[System.IO.File]::AppendAllText("$mongoDbConfigPath", "dbpath=C:\MongoDB\data\db`r`n") -[System.IO.File]::AppendAllText("$mongoDbConfigPath", "logpath=C:\MongoDB\log\mongo.log`r`n") -[System.IO.File]::AppendAllText("$mongoDbConfigPath", "smallfiles=true`r`n") -[System.IO.File]::AppendAllText("$mongoDbConfigPath", "noprealloc=true`r`n") - -$webClient = New-Object System.Net.WebClient -$webClient.DownloadFile($url,$zipFile) - -$shellApp = New-Object -com shell.application -$destination = $shellApp.namespace($mongoDbPath) -$destination.Copyhere($shellApp.namespace($zipFile).items()) - -Copy-Item "$unzippedFolderContent\*" $mongoDbPath -recurse - -Remove-Item $unzippedFolderContent -recurse -force -Remove-Item $zipFile -recurse -force - -& $mongoDBPath\bin\mongod.exe --config $mongoDbConfigPath --install - -& net start mongodb \ No newline at end of file diff --git a/server/server-test.coffee b/server/server-test.coffee index 858a9df..c7f1e4e 100644 --- a/server/server-test.coffee +++ b/server/server-test.coffee @@ -67,7 +67,9 @@ module.exports.runServerTests = (req, res) -> # TODO: Try to put this into an async.waterfall or something like it. Avoid callback hell! response = { rootDir: rootDir } jasmineNode.on 'exit', (exitCode) -> - if consoleError = consoleError.join('') + consoleError = consoleError.join('') + # seems to be a bug with node 0.12: http://stackoverflow.com/questions/28651028/cannot-find-module-build-release-bson-code-module-not-found-js-bson + if consoleError isnt "Failed to load c++ bson extension, using pure JS version\n" response.consoleError = consoleError return respond.ok(res, response) files = fs.readdirSync(reportDir) diff --git a/vendor/scripts/difflib.js b/vendor/scripts/difflib.js deleted file mode 100644 index 191fe45..0000000 --- a/vendor/scripts/difflib.js +++ /dev/null @@ -1,413 +0,0 @@ -/*** -This is part of jsdifflib v1.0. - -Copyright (c) 2007, Snowtide Informatics Systems, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Snowtide Informatics Systems nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. -***/ -/* Author: Chas Emerick */ -var __whitespace = {" ":true, "\t":true, "\n":true, "\f":true, "\r":true}; - -var difflib = { - defaultJunkFunction: function (c) { - return __whitespace.hasOwnProperty(c); - }, - - stripLinebreaks: function (str) { return str.replace(/^[\n\r]*|[\n\r]*$/g, ""); }, - - stringAsLines: function (str) { - var lfpos = str.indexOf("\n"); - var crpos = str.indexOf("\r"); - var linebreak = ((lfpos > -1 && crpos > -1) || crpos < 0) ? "\n" : "\r"; - - var lines = str.split(linebreak); - for (var i = 0; i < lines.length; i++) { - lines[i] = difflib.stripLinebreaks(lines[i]); - } - - return lines; - }, - - // iteration-based reduce implementation - __reduce: function (func, list, initial) { - if (initial != null) { - var value = initial; - var idx = 0; - } else if (list) { - var value = list[0]; - var idx = 1; - } else { - return null; - } - - for (; idx < list.length; idx++) { - value = func(value, list[idx]); - } - - return value; - }, - - // comparison function for sorting lists of numeric tuples - __ntuplecomp: function (a, b) { - var mlen = Math.max(a.length, b.length); - for (var i = 0; i < mlen; i++) { - if (a[i] < b[i]) return -1; - if (a[i] > b[i]) return 1; - } - - return a.length == b.length ? 0 : (a.length < b.length ? -1 : 1); - }, - - __calculate_ratio: function (matches, length) { - return length ? 2.0 * matches / length : 1.0; - }, - - // returns a function that returns true if a key passed to the returned function - // is in the dict (js object) provided to this function; replaces being able to - // carry around dict.has_key in python... - __isindict: function (dict) { - return function (key) { return dict.hasOwnProperty(key); }; - }, - - // replacement for python's dict.get function -- need easy default values - __dictget: function (dict, key, defaultValue) { - return dict.hasOwnProperty(key) ? dict[key] : defaultValue; - }, - - SequenceMatcher: function (a, b, isjunk) { - this.set_seqs = function (a, b) { - this.set_seq1(a); - this.set_seq2(b); - } - - this.set_seq1 = function (a) { - if (a == this.a) return; - this.a = a; - this.matching_blocks = this.opcodes = null; - } - - this.set_seq2 = function (b) { - if (b == this.b) return; - this.b = b; - this.matching_blocks = this.opcodes = this.fullbcount = null; - this.__chain_b(); - } - - this.__chain_b = function () { - var b = this.b; - var n = b.length; - var b2j = this.b2j = {}; - var populardict = {}; - for (var i = 0; i < b.length; i++) { - var elt = b[i]; - if (b2j.hasOwnProperty(elt)) { - var indices = b2j[elt]; - if (n >= 200 && indices.length * 100 > n) { - populardict[elt] = 1; - delete b2j[elt]; - } else { - indices.push(i); - } - } else { - b2j[elt] = [i]; - } - } - - for (var elt in populardict) { - if (populardict.hasOwnProperty(elt)) { - delete b2j[elt]; - } - } - - var isjunk = this.isjunk; - var junkdict = {}; - if (isjunk) { - for (var elt in populardict) { - if (populardict.hasOwnProperty(elt) && isjunk(elt)) { - junkdict[elt] = 1; - delete populardict[elt]; - } - } - for (var elt in b2j) { - if (b2j.hasOwnProperty(elt) && isjunk(elt)) { - junkdict[elt] = 1; - delete b2j[elt]; - } - } - } - - this.isbjunk = difflib.__isindict(junkdict); - this.isbpopular = difflib.__isindict(populardict); - } - - this.find_longest_match = function (alo, ahi, blo, bhi) { - var a = this.a; - var b = this.b; - var b2j = this.b2j; - var isbjunk = this.isbjunk; - var besti = alo; - var bestj = blo; - var bestsize = 0; - var j = null; - var k; - - var j2len = {}; - var nothing = []; - for (var i = alo; i < ahi; i++) { - var newj2len = {}; - var jdict = difflib.__dictget(b2j, a[i], nothing); - for (var jkey in jdict) { - if (jdict.hasOwnProperty(jkey)) { - j = jdict[jkey]; - if (j < blo) continue; - if (j >= bhi) break; - newj2len[j] = k = difflib.__dictget(j2len, j - 1, 0) + 1; - if (k > bestsize) { - besti = i - k + 1; - bestj = j - k + 1; - bestsize = k; - } - } - } - j2len = newj2len; - } - - while (besti > alo && bestj > blo && !isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) { - besti--; - bestj--; - bestsize++; - } - - while (besti + bestsize < ahi && bestj + bestsize < bhi && - !isbjunk(b[bestj + bestsize]) && - a[besti + bestsize] == b[bestj + bestsize]) { - bestsize++; - } - - while (besti > alo && bestj > blo && isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) { - besti--; - bestj--; - bestsize++; - } - - while (besti + bestsize < ahi && bestj + bestsize < bhi && isbjunk(b[bestj + bestsize]) && - a[besti + bestsize] == b[bestj + bestsize]) { - bestsize++; - } - - return [besti, bestj, bestsize]; - } - - this.get_matching_blocks = function () { - if (this.matching_blocks != null) return this.matching_blocks; - var la = this.a.length; - var lb = this.b.length; - - var queue = [[0, la, 0, lb]]; - var matching_blocks = []; - var alo, ahi, blo, bhi, qi, i, j, k, x; - while (queue.length) { - qi = queue.pop(); - alo = qi[0]; - ahi = qi[1]; - blo = qi[2]; - bhi = qi[3]; - x = this.find_longest_match(alo, ahi, blo, bhi); - i = x[0]; - j = x[1]; - k = x[2]; - - if (k) { - matching_blocks.push(x); - if (alo < i && blo < j) - queue.push([alo, i, blo, j]); - if (i+k < ahi && j+k < bhi) - queue.push([i + k, ahi, j + k, bhi]); - } - } - - matching_blocks.sort(difflib.__ntuplecomp); - - var i1 = 0, j1 = 0, k1 = 0, block = 0; - var i2, j2, k2; - var non_adjacent = []; - for (var idx in matching_blocks) { - if (matching_blocks.hasOwnProperty(idx)) { - block = matching_blocks[idx]; - i2 = block[0]; - j2 = block[1]; - k2 = block[2]; - if (i1 + k1 == i2 && j1 + k1 == j2) { - k1 += k2; - } else { - if (k1) non_adjacent.push([i1, j1, k1]); - i1 = i2; - j1 = j2; - k1 = k2; - } - } - } - - if (k1) non_adjacent.push([i1, j1, k1]); - - non_adjacent.push([la, lb, 0]); - this.matching_blocks = non_adjacent; - return this.matching_blocks; - } - - this.get_opcodes = function () { - if (this.opcodes != null) return this.opcodes; - var i = 0; - var j = 0; - var answer = []; - this.opcodes = answer; - var block, ai, bj, size, tag; - var blocks = this.get_matching_blocks(); - for (var idx in blocks) { - if (blocks.hasOwnProperty(idx)) { - block = blocks[idx]; - ai = block[0]; - bj = block[1]; - size = block[2]; - tag = ''; - if (i < ai && j < bj) { - tag = 'replace'; - } else if (i < ai) { - tag = 'delete'; - } else if (j < bj) { - tag = 'insert'; - } - if (tag) answer.push([tag, i, ai, j, bj]); - i = ai + size; - j = bj + size; - - if (size) answer.push(['equal', ai, i, bj, j]); - } - } - - return answer; - } - - // this is a generator function in the python lib, which of course is not supported in javascript - // the reimplementation builds up the grouped opcodes into a list in their entirety and returns that. - this.get_grouped_opcodes = function (n) { - if (!n) n = 3; - var codes = this.get_opcodes(); - if (!codes) codes = [["equal", 0, 1, 0, 1]]; - var code, tag, i1, i2, j1, j2; - if (codes[0][0] == 'equal') { - code = codes[0]; - tag = code[0]; - i1 = code[1]; - i2 = code[2]; - j1 = code[3]; - j2 = code[4]; - codes[0] = [tag, Math.max(i1, i2 - n), i2, Math.max(j1, j2 - n), j2]; - } - if (codes[codes.length - 1][0] == 'equal') { - code = codes[codes.length - 1]; - tag = code[0]; - i1 = code[1]; - i2 = code[2]; - j1 = code[3]; - j2 = code[4]; - codes[codes.length - 1] = [tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]; - } - - var nn = n + n; - var group = []; - var groups = []; - for (var idx in codes) { - if (codes.hasOwnProperty(idx)) { - code = codes[idx]; - tag = code[0]; - i1 = code[1]; - i2 = code[2]; - j1 = code[3]; - j2 = code[4]; - if (tag == 'equal' && i2 - i1 > nn) { - group.push([tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]); - groups.push(group); - group = []; - i1 = Math.max(i1, i2-n); - j1 = Math.max(j1, j2-n); - } - - group.push([tag, i1, i2, j1, j2]); - } - } - - if (group && !(group.length == 1 && group[0][0] == 'equal')) groups.push(group) - - return groups; - } - - this.ratio = function () { - matches = difflib.__reduce( - function (sum, triple) { return sum + triple[triple.length - 1]; }, - this.get_matching_blocks(), 0); - return difflib.__calculate_ratio(matches, this.a.length + this.b.length); - } - - this.quick_ratio = function () { - var fullbcount, elt; - if (this.fullbcount == null) { - this.fullbcount = fullbcount = {}; - for (var i = 0; i < this.b.length; i++) { - elt = this.b[i]; - fullbcount[elt] = difflib.__dictget(fullbcount, elt, 0) + 1; - } - } - fullbcount = this.fullbcount; - - var avail = {}; - var availhas = difflib.__isindict(avail); - var matches = numb = 0; - for (var i = 0; i < this.a.length; i++) { - elt = this.a[i]; - if (availhas(elt)) { - numb = avail[elt]; - } else { - numb = difflib.__dictget(fullbcount, elt, 0); - } - avail[elt] = numb - 1; - if (numb > 0) matches++; - } - - return difflib.__calculate_ratio(matches, this.a.length + this.b.length); - } - - this.real_quick_ratio = function () { - var la = this.a.length; - var lb = this.b.length; - return _calculate_ratio(Math.min(la, lb), la + lb); - } - - this.isjunk = isjunk ? isjunk : difflib.defaultJunkFunction; - this.a = this.b = null; - this.set_seqs(a, b); - } -}; - diff --git a/vendor/scripts/diffview.js b/vendor/scripts/diffview.js deleted file mode 100644 index 372753d..0000000 --- a/vendor/scripts/diffview.js +++ /dev/null @@ -1,198 +0,0 @@ -/* -This is part of jsdifflib v1.0. - -Copyright 2007 - 2011 Chas Emerick . All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those of the -authors and should not be interpreted as representing official policies, either expressed -or implied, of Chas Emerick. -*/ -diffview = { - /** - * Builds and returns a visual diff view. The single parameter, `params', should contain - * the following values: - * - * - baseTextLines: the array of strings that was used as the base text input to SequenceMatcher - * - newTextLines: the array of strings that was used as the new text input to SequenceMatcher - * - opcodes: the array of arrays returned by SequenceMatcher.get_opcodes() - * - baseTextName: the title to be displayed above the base text listing in the diff view; defaults - * to "Base Text" - * - newTextName: the title to be displayed above the new text listing in the diff view; defaults - * to "New Text" - * - contextSize: the number of lines of context to show around differences; by default, all lines - * are shown - * - viewType: if 0, a side-by-side diff view is generated (default); if 1, an inline diff view is - * generated - */ - buildView: function (params) { - var baseTextLines = params.baseTextLines; - var newTextLines = params.newTextLines; - var opcodes = params.opcodes; - var baseTextName = params.baseTextName ? params.baseTextName : "Base Text"; - var newTextName = params.newTextName ? params.newTextName : "New Text"; - var contextSize = params.contextSize; - var inline = (params.viewType == 0 || params.viewType == 1) ? params.viewType : 0; - - if (baseTextLines == null) - throw "Cannot build diff view; baseTextLines is not defined."; - if (newTextLines == null) - throw "Cannot build diff view; newTextLines is not defined."; - if (!opcodes) - throw "Canno build diff view; opcodes is not defined."; - - function celt (name, clazz) { - var e = document.createElement(name); - e.className = clazz; - return e; - } - - function telt (name, text) { - var e = document.createElement(name); - e.appendChild(document.createTextNode(text)); - return e; - } - - function ctelt (name, clazz, text) { - var e = document.createElement(name); - e.className = clazz; - e.appendChild(document.createTextNode(text)); - return e; - } - - var tdata = document.createElement("thead"); - var node = document.createElement("tr"); - tdata.appendChild(node); - if (inline) { - node.appendChild(document.createElement("th")); - node.appendChild(document.createElement("th")); - node.appendChild(ctelt("th", "texttitle", baseTextName + " vs. " + newTextName)); - } else { - node.appendChild(document.createElement("th")); - node.appendChild(ctelt("th", "texttitle", baseTextName)); - node.appendChild(document.createElement("th")); - node.appendChild(ctelt("th", "texttitle", newTextName)); - } - tdata = [tdata]; - - var rows = []; - var node2; - - /** - * Adds two cells to the given row; if the given row corresponds to a real - * line number (based on the line index tidx and the endpoint of the - * range in question tend), then the cells will contain the line number - * and the line of text from textLines at position tidx (with the class of - * the second cell set to the name of the change represented), and tidx + 1 will - * be returned. Otherwise, tidx is returned, and two empty cells are added - * to the given row. - */ - function addCells (row, tidx, tend, textLines, change) { - if (tidx < tend) { - row.appendChild(telt("th", (tidx + 1).toString())); - row.appendChild(ctelt("td", change, textLines[tidx].replace(/\t/g, "\u00a0\u00a0\u00a0\u00a0"))); - return tidx + 1; - } else { - row.appendChild(document.createElement("th")); - row.appendChild(celt("td", "empty")); - return tidx; - } - } - - function addCellsInline (row, tidx, tidx2, textLines, change) { - row.appendChild(telt("th", tidx == null ? "" : (tidx + 1).toString())); - row.appendChild(telt("th", tidx2 == null ? "" : (tidx2 + 1).toString())); - row.appendChild(ctelt("td", change, textLines[tidx != null ? tidx : tidx2].replace(/\t/g, "\u00a0\u00a0\u00a0\u00a0"))); - } - - for (var idx = 0; idx < opcodes.length; idx++) { - code = opcodes[idx]; - change = code[0]; - var b = code[1]; - var be = code[2]; - var n = code[3]; - var ne = code[4]; - var rowcnt = Math.max(be - b, ne - n); - var toprows = []; - var botrows = []; - for (var i = 0; i < rowcnt; i++) { - // jump ahead if we've alredy provided leading context or if this is the first range - if (contextSize && opcodes.length > 1 && ((idx > 0 && i == contextSize) || (idx == 0 && i == 0)) && change=="equal") { - var jump = rowcnt - ((idx == 0 ? 1 : 2) * contextSize); - if (jump > 1) { - toprows.push(node = document.createElement("tr")); - - b += jump; - n += jump; - i += jump - 1; - node.appendChild(telt("th", "...")); - if (!inline) node.appendChild(ctelt("td", "skip", "")); - node.appendChild(telt("th", "...")); - node.appendChild(ctelt("td", "skip", "")); - - // skip last lines if they're all equal - if (idx + 1 == opcodes.length) { - break; - } else { - continue; - } - } - } - - toprows.push(node = document.createElement("tr")); - if (inline) { - if (change == "insert") { - addCellsInline(node, null, n++, newTextLines, change); - } else if (change == "replace") { - botrows.push(node2 = document.createElement("tr")); - if (b < be) addCellsInline(node, b++, null, baseTextLines, "delete"); - if (n < ne) addCellsInline(node2, null, n++, newTextLines, "insert"); - } else if (change == "delete") { - addCellsInline(node, b++, null, baseTextLines, change); - } else { - // equal - addCellsInline(node, b++, n++, baseTextLines, change); - } - } else { - b = addCells(node, b, be, baseTextLines, change); - n = addCells(node, n, ne, newTextLines, change); - } - } - - for (var i = 0; i < toprows.length; i++) rows.push(toprows[i]); - for (var i = 0; i < botrows.length; i++) rows.push(botrows[i]); - } - - rows.push(node = ctelt("th", "author", "diff view generated by ")); - node.setAttribute("colspan", inline ? 3 : 4); - node.appendChild(node2 = telt("a", "jsdifflib")); - node2.setAttribute("href", "http://github.com/cemerick/jsdifflib"); - - tdata.push(node = document.createElement("tbody")); - for (var idx in rows) rows.hasOwnProperty(idx) && node.appendChild(rows[idx]); - - node = celt("table", "diff" + (inline ? " inlinediff" : "")); - for (var idx in tdata) tdata.hasOwnProperty(idx) && node.appendChild(tdata[idx]); - return node; - } -}; - diff --git a/vendor/styles/diffview.css b/vendor/styles/diffview.css deleted file mode 100644 index 811a593..0000000 --- a/vendor/styles/diffview.css +++ /dev/null @@ -1,83 +0,0 @@ -/* -This is part of jsdifflib v1.0. - -Copyright 2007 - 2011 Chas Emerick . All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY Chas Emerick ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Chas Emerick OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those of the -authors and should not be interpreted as representing official policies, either expressed -or implied, of Chas Emerick. -*/ -table.diff { - border-collapse:collapse; - border:1px solid darkgray; - white-space:pre-wrap -} -table.diff tbody { - font-family:Courier, monospace -} -table.diff tbody th { - font-family:verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif; - background:#EED; - font-size:11px; - font-weight:normal; - border:1px solid #BBC; - color:#886; - padding:.3em .5em .1em 2em; - text-align:right; - vertical-align:top -} -table.diff thead { - border-bottom:1px solid #BBC; - background:#EFEFEF; - font-family:Verdana -} -table.diff thead th.texttitle { - text-align:left -} -table.diff tbody td { - padding:0px .4em; - padding-top:.4em; - vertical-align:top; -} -table.diff .empty { - background-color:#DDD; -} -table.diff .replace { - background-color:#FD8 -} -table.diff .delete { - background-color:#E99; -} -table.diff .skip { - background-color:#EFEFEF; - border:1px solid #AAA; - border-right:1px solid #BBC; -} -table.diff .insert { - background-color:#9E9 -} -table.diff th.author { - text-align:right; - border-top:1px solid #BBC; - background:#EFEFEF -} \ No newline at end of file