| @@ -1,32 +1,128 @@ | |||
| sudo apt update | |||
| # Install prerequisites for dev environment | |||
| # PB : TODO -- Prompt if not passed in. | |||
| REPOSERVER=http://git.bbh | |||
| DEFAULTREPOOWNER=chess | |||
| REPOOWNER=$DEFAULTREPOOWNER | |||
| INSTANCENAME=elixir | |||
| INSTANCETYPE=dev | |||
| GITUSER=pb | |||
| GITEMAIL=pradeep@bbh.org.in | |||
| sudo apt install python2 | |||
| sudo apt install build-essential | |||
| sudo apt install -y make | |||
| sudo apt install nodejs | |||
| sudo apt install npm | |||
| sudo apt install git | |||
| -- | |||
| git clone http://git.bbh.org.in/chess/elxr.git | |||
| cd elxr | |||
| elxr use elixir | |||
| cd .. | |||
| elxr i | |||
| # Install mysql | |||
| sudo apt install mysql-server -y | |||
| systemctl is-active mysql | |||
| sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mysql#minA1';" | |||
| sudo mysql_secure_installation | |||
| sudo mysql -e "FLUSH PRIVILEGES;" -u root -pmysql#minA1 | |||
| systemctl status mysql.service | |||
| #OPTIONS | |||
| SKIPPREREQS=true | |||
| SKIPDEVPREREQS=true | |||
| # Init DB schema and Load Data | |||
| mysql -u root -pmysql#minA1 < cihsr-data/cihsr-dev-schema.sql | |||
| if [ "$SKIPPREREQS" = "true" ]; then | |||
| echo "skipping prereqs for firstrun" | |||
| else | |||
| sudo groupadd chessprod | |||
| echo "$USER" | |||
| sudo usermod -a -G chessprod $USER | |||
| sudo apt update | |||
| # Install prerequisites for dev environment | |||
| sudo apt install git | |||
| git config --global user.name "$GITUSER" | |||
| git config --global credential.helper store | |||
| #git config --global credential.helper 'store --file ~/.git-credentials' | |||
| #echo "Enter git username: " | |||
| #read gitUser | |||
| #git config --global user.name '${gitUser}' | |||
| #echo "username=$gitUser" >> ~/.git-credentials | |||
| #echo "Enter git password: " | |||
| #read gitPassword | |||
| #git config --global user.password '${gitPassword}' | |||
| #echo "password=$gitPassword" >> ~/.git-credentials | |||
| #chmod 0600 ~/.git-credentials | |||
| sudo apt install python2 | |||
| sudo apt install build-essential | |||
| sudo apt install -y make | |||
| #INSTALLING NODE JS | |||
| cd ~ | |||
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | |||
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash | |||
| sleep 2 | |||
| touch ~/.bashrc | |||
| source ~/.bashrc | |||
| export NVM_DIR="$HOME/.nvm" | |||
| [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm | |||
| [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion | |||
| sleep 2 | |||
| nvm list-remote | |||
| sleep 2 | |||
| nvm install v16.19.1 | |||
| sleep 2 | |||
| node --version | |||
| npm --version | |||
| # OLD version... | |||
| #sudo apt install nodejs | |||
| #sudo apt install npm | |||
| # For production we create a npm global per user. | |||
| # npm prefix is not compatible with nvm!!! | |||
| # mkdir -p ~/.user_global_node_modules/ | |||
| # npm config set prefix '~/.user_global_node_modules' | |||
| # sudo mkdir /usr/local/lib/node_modules/ | |||
| # sudo chown -R root:chessprod /usr/local/lib/node_modules/ | |||
| # sudo chmod g+w /usr/local/lib/node_modules/ | |||
| # grep -qxF 'export PATH=~/.user_global_node_modules/bin:$PATH' ~/.profile || echo 'export PATH=~/.user_global_node_modules/bin:$PATH' >> ~/.profile | |||
| if [ "$SKIPPREREQS" = "true" ]; then | |||
| echo "skipping dev prereqs for firstrun" | |||
| else | |||
| #install code | |||
| sudo apt-get install wget gpg | |||
| wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg | |||
| sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg | |||
| sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' | |||
| rm -f packages.microsoft.gpg | |||
| sudo apt install apt-transport-https | |||
| sudo apt update | |||
| sudo apt install code | |||
| install code | |||
| sudo apt-get install wget gpg | |||
| wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg | |||
| sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg | |||
| sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' | |||
| rm -f packages.microsoft.gpg | |||
| sudo apt install apt-transport-https | |||
| sudo apt update | |||
| sudo apt install code | |||
| fi | |||
| sudo mkdir -p /var/chess | |||
| sudo chown $USER:$USER /var/chess | |||
| ROOT=/var/chess/$INSTANCENAME/$INSTANCETYPE | |||
| echo $ROOT | |||
| sudo mkdir -p $ROOT | |||
| cd $ROOT | |||
| git clone $REPOSERVER/$REPOOWNER/elxr.git | |||
| cd elxr | |||
| npm i | |||
| npm link | |||
| cd .. | |||
| # Install mysql | |||
| #sudo apt install mysql-server -y | |||
| systemctl is-active mysql | |||
| #sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mysql#minA1';" | |||
| #sudo mysql_secure_installation | |||
| #sudo mysql -e "FLUSH PRIVILEGES;" -u root -pmysql#minA1 | |||
| #systemctl status mysql.service | |||
| # Init DB schema and Load Data | |||
| #mysql -u root -pmysql#minA1 < cihsr-data/cihsr-dev-schema.sql | |||
| fi | |||
| echo module.exports = { instanceName : "'$INSTANCENAME'", reposerver: "'$REPOSERVER'", gitUser: "'$GITUSER'", gitEmail:"'$GITEMAIL'" } > installchoices.js | |||
| elxr use elixir | |||
| elxr i | |||
| @@ -566,7 +566,7 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| // PB : TODO -- pick up remote definitions per repository... | |||
| var reposmanfiest = utils.assign_core( { keycase : true, arraymergetype : utils.assign_core.DISTINCT_UNION } | |||
| , {}, selectedinstance, loadmanifest( selectedinstance.root + '/' + repo | |||
| , { utils, username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , { username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , node_env : selectedinstance.node_env, reposerver : selectedinstance.reposerver } | |||
| )) | |||
| @@ -861,7 +861,7 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| try { | |||
| // PB : TODO -- pick up remote definitions per repository... | |||
| return utils.assign_core( { keycase : true, arraymergetype : utils.assign_core.DISTINCT_UNION } | |||
| , {}, require(path.normalize( mpath + '/repo-manifest'))( null, moverrides )) | |||
| , {}, require(path.normalize( mpath + '/repo-manifest'))( {utils}, null, moverrides )) | |||
| } | |||
| catch(e){ | |||
| @@ -1231,7 +1231,7 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| // Also attepmt to load preconfig specially for new chessinstances from ../chess-config/... | |||
| var __repo_manifest_elxr = loadmanifest( instance.root + '/elxr' | |||
| , { utils, username : instance.username /** ??? TODO */ , instanceName : instance.instanceName /** ??? TODO */ | |||
| , { username : instance.username /** ??? TODO */ , instanceName : instance.instanceName /** ??? TODO */ | |||
| , node_env : clioverrides.node_env, reposerver : instance.reposerver /** ??? TODO */ } // options | |||
| ) | |||
| @@ -1244,10 +1244,10 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| if(instance_specific_config_manifest.error) console.log(instance_specific_config_manifest.e.message) | |||
| delete __repo_manifest_elxr.error | |||
| delete __repo_manifest_elxr.e | |||
| delete __repo_manifest_elxr.utils | |||
| // delete __repo_manifest_elxr.utils | |||
| delete instance_specific_config_manifest.error | |||
| delete instance_specific_config_manifest.e | |||
| delete instance_specific_config_manifest.utils | |||
| // delete instance_specific_config_manifest.utils | |||
| // selectedinstance is not complete until we load in the following order of priority... | |||
| // 1) inline defaults | |||
| @@ -1833,7 +1833,7 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| // PB : TODO -- pick up remote definitions per repository... | |||
| var reposmanfiest = utils.assign_core( { keycase : true, arraymergetype : utils.assign_core.DISTINCT_UNION } | |||
| , {}, selectedinstance, loadmanifest( selectedinstance.root + '/' + repo | |||
| , { utils, username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , { username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , node_env : selectedinstance.node_env, reposerver : selectedinstance.reposerver } | |||
| )) | |||
| @@ -4315,7 +4315,7 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| statuslog.statuslog(e, e) | |||
| var manifestpath = path.normalize(selected.root + '/' + selected.instanceName + '-config-' + selected.node_env + '/repo-manifest'); | |||
| utils.assign_core( { keycase : true, arraymergetype : utils.assign_core.DISTINCT_UNION } | |||
| , selectedinstance, require(manifestpath)( null, { utils, username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , selectedinstance, require(manifestpath)( {utils}, null, { username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , node_env : selectedinstance.node_env, reposerver : 'https://git.bbh.org.in' } )) | |||
| console.dir(selectedinstance.repos) | |||
| // Config from server always override merges into selection except for the current selection. | |||
| @@ -4549,7 +4549,7 @@ shell_verse.acquireElevationState().then((isElevated) => { | |||
| var manifestpath = path.normalize(selected.root + '/' + selected.instanceName + '-config-' + selected.node_env + '/repo-manifest'); | |||
| utils.assign_core( { keycase : true, arraymergetype : utils.assign_core.DISTINCT_UNION } | |||
| , selectedinstance, require(manifestpath)( null, { utils, username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , selectedinstance, require(manifestpath)( {utils}, null, { username : selectedinstance.username, instanceName : selectedinstance.instanceName | |||
| , node_env : selectedinstance.node_env, reposerver : selectedinstance.reposerver })) | |||
| console.dir(selectedinstance.repos) | |||
| // Config from server always override merges into selection except for the current selection. | |||
| @@ -94,6 +94,9 @@ var shell_verse = { | |||
| , runElevatedBatch( batchToRun ){ | |||
| // In windows we don't need to run each task. We hand over to another shell which in elevated state rebuilds the whole batch and runs. | |||
| // Irrespective of the batch we just call runElevated once. | |||
| batchToRun.forEach(element => { | |||
| element.processedArgs = batchToRun[0].processedArgs | |||
| }); | |||
| return any(batchToRun.map(shell_verse.runElevated)) | |||
| } | |||
| @@ -1,7 +1,9 @@ | |||
| module.exports = ((name, options)=>{ | |||
| module.exports = ((meta, options)=>{ | |||
| var name = meta.name | |||
| const utils = meta.utils | |||
| options = options || { username : `guest`, reposerver : `https://git.bbh.org.in`, password : `noneforguest` } | |||
| utils = options.utils | |||
| // Default set of users in main repos. | |||
| var users = [ | |||