diff --git a/.gitmodules b/.gitmodules index e052d2e..85951ea 100755 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,12 @@ [submodule "modules/qmining/qmining-page"] - path = submodules/qmining-page + path = submodules/qmining-page url = git@gitlab.com:MrFry/qmining-page.git update = merge [submodule "modules/dataEditor/qmining-data-editor"] - path = submodules/qmining-data-editor + path = submodules/qmining-data-editor url = git@gitlab.com:MrFry/qmining-data-editor.git update = merge [submodule "qminingPublic/moodle-test-userscript"] - path = submodules/moodle-test-userscript + path = submodules/moodle-test-userscript url = git@gitlab.com:MrFry/moodle-test-userscript.git update = merge diff --git a/.gitmodules.https b/.gitmodules.https new file mode 100755 index 0000000..6e49cfa --- /dev/null +++ b/.gitmodules.https @@ -0,0 +1,12 @@ +[submodule "modules/qmining/qmining-page"] + path = submodules/qmining-page + url = https://gitlab.com/MrFry/qmining-page + update = merge +[submodule "modules/dataEditor/qmining-data-editor"] + path = submodules/qmining-data-editor + url = https://gitlab.com/MrFry/qmining-data-editor + update = merge +[submodule "qminingPublic/moodle-test-userscript"] + path = submodules/moodle-test-userscript + url = https://gitlab.com/MrFry/moodle-test-userscript + update = merge diff --git a/.gitmodules.ssh b/.gitmodules.ssh new file mode 100755 index 0000000..85951ea --- /dev/null +++ b/.gitmodules.ssh @@ -0,0 +1,12 @@ +[submodule "modules/qmining/qmining-page"] + path = submodules/qmining-page + url = git@gitlab.com:MrFry/qmining-page.git + update = merge +[submodule "modules/dataEditor/qmining-data-editor"] + path = submodules/qmining-data-editor + url = git@gitlab.com:MrFry/qmining-data-editor.git + update = merge +[submodule "qminingPublic/moodle-test-userscript"] + path = submodules/moodle-test-userscript + url = git@gitlab.com:MrFry/moodle-test-userscript.git + update = merge diff --git a/README.md b/README.md index 06eb18c..8bfd120 100755 --- a/README.md +++ b/README.md @@ -38,13 +38,17 @@ threads, and serve more requests at once. The used cores can be limited with env Run `./scripts/setup.sh`, then `npm run dev` for development, or `npm run start` for prod. +**Gitlab specific notes**: You need a gitlab account with SSH keys set up in order to be able to use +SSH for cloning this (and any) project. This includes git modules of this project. See +`CLONE_WITH_HTTPS` in environment variables below. + On the first run there will be a number of errors, that some files weren't found. Please create them according to the messages, these are necessary for the server to function. There will be also a lot of information about files and other necessary things being created. **Please read them very carefully, you should know about what was created!** -The setup script can be also used to update and rebuild all git submodules. +The setup script can be also used to update and rebuild all git modules. ## Web server paths @@ -91,7 +95,7 @@ The server doesn't require that much maintenance, but you are advised to: * Check and moderate the forum(s) of the page * Sync the server with other peers (this can be automated) * Check `./data/p2p/thirdPartyPeers.json` file for new peers, and decide if you should use them - * Regularly check if there is an update to this server and git submodules, and update them + * Regularly check if there is an update to this server and git modules, and update them * Watch out for directories that can get big: * `./stats`: server statistics and logs * `./data/dbs/backup`: backup of databases @@ -138,6 +142,8 @@ result can be found in the directory it was ran. ## Environment variables +### For the server + | Name | Type | Description | | --- | --- | --- | | PORT | number | The port the http server should run on | @@ -148,6 +154,13 @@ result can be found in the directory it was ran. | NS_NOLOG | boolean | If logging should be skipped | | NS_SQL_DEBUG_LOG | boolean | If the SQL queries should be logged | +### For the setup script + + | Name | Type | Description | + | --- | --- | --- | + | CLONE_WITH_HTTPS | boolean | By default git clones with ssh, which can cause troubles. Set this + to use https for git modules | + ## npm scripts | Name | Description | @@ -159,9 +172,9 @@ result can be found in the directory it was ran. | npm run test | Runs jest tests | | npm run test-debug | Runs jest tests in watch mode with debugger attached | -## Git submodules +## Git modules -Details about the specific git submodule should be found in its directory. +Details about the specific git module should be found in its directory. # qmining-page @@ -234,7 +247,7 @@ https://gitlab.com/MrFry/moodle-test-userscript │ ├── ustats website accesses count per user │ ├── uvstats website accesses count per day per user │ └── vstats website accessed paths per day -├── submodules git submodules +├── submodules git modules │ ├── moodle-test-userscript userscript │ ├── qmining-data-editor data editor frontend │ └── qmining-page qmining frontend diff --git a/scripts/setup.sh b/scripts/setup.sh index 7d284e9..431be56 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -7,9 +7,11 @@ hr() { [ -t 0 ] && printf '\033[0;32m%*s\033[0m\n' "$(tput cols)" '' | tr ' ' '= log() { hr; echo -e "\033[0;34m${1}\033[0m"; hr; } +error() { echo -e "\033[0;41m${1}\033[0m"; } + checkFile() { if [ ! -f "${1}" ]; then - echo -e "\033[0;41m${1} does not exist!\033[0m" + error "${1} does not exist!" exit 1 fi } @@ -37,7 +39,7 @@ checkFile "$PWD/src/server.ts" checkFile "$PWD/package.json" checkFile "$PWD/package-lock.json" if [ ! -f "${domainPath}" ]; then - echo -e "\033[0;41m${domainPath} does not exist!\033[0m" + error "${domainPath} does not exist!" echo "Please create it, and re-run this script." echo "Expected content: domain, ex.:'frylabs.net' (without http:// and /)" exit 1 @@ -62,6 +64,10 @@ cp -vrn ./defaultPublicFiles/* ./publicDirs/qminingPublic/ # ------------------------------------------------------------------------------------ # Git submodules # ------------------------------------------------------------------------------------ +if [ ! -z "$CLONE_WITH_HTTPS" ]; then + ./scripts/switchGitProtocol.sh "https" +fi + log 'Updating / Cloning project' git pull || exit 1 git submodule update --init --recursive --remote || exit 1 diff --git a/scripts/switchGitProtocol.sh b/scripts/switchGitProtocol.sh new file mode 100755 index 0000000..c8646e9 --- /dev/null +++ b/scripts/switchGitProtocol.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +gitDir=".git" +gitmoduleFile=".gitmodules" +sshGitmodulesFile=".gitmodules.ssh" +httpsGitmodulesFile=".gitmodules.https" + +function error() { echo -e "\033[0;41m${1}\033[0m"; exit 1; } + +if [ ! -d "${gitDir}" ]; then + error "${gitDir} does not exist! Maybe you ran this script in the wrong directory" +fi + +if [ "$1" != "ssh" ] && [ "$1" != "https" ]; then + error "Invalid param! Valid params are: 'ssh', 'https'" +fi + +if [ "$1" == "ssh" ]; then + cp -v "$sshGitmodulesFile" "$gitmoduleFile" +elif [ "$1" == "https" ]; then + cp -v "$httpsGitmodulesFile" "$gitmoduleFile" +fi