diff --git a/package.json b/package.json index 372aa5870..09228cb4a 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,8 @@ "xss-clean": "^0.1.1", "qs": "^6.5.2", "child_process": "^1.0.2", - "os": "^0.1.1" + "os": "^0.1.1", + "semver": "^5.6.0" }, "devDependencies": { "automatic-release": "^1.1.1", diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 58d051a50..8a74c5f02 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -11,14 +11,15 @@ * */ - const os = require('os'); const execSync = require('child_process').execSync; const fs = require('fs'); +const semver = require('semver'); +const currentVersion = require('../package').version; const rootDir = `${__dirname}/../`; -let installation_variables_file_name = 'iofogcontroller_install_variables'; -let installation_variables_file; +let installationVariablesFileName = 'iofogcontroller_install_variables'; +let installationVariablesFile; let tempDir; if (os.type() === 'Linux') { @@ -31,17 +32,45 @@ if (os.type() === 'Linux') { throw new Error("Unsupported OS found: " + os.type()); } -installation_variables_file = tempDir + installation_variables_file_name; - +installationVariablesFile = tempDir + installationVariablesFileName; const devDbBackup = `${tempDir}dev_database.sqlite`; +const devDb = `${rootDir}/src/sequelize/dev_database.sqlite`; if (fs.existsSync(devDbBackup)) { - fs.renameSync(devDbBackup, `${rootDir}/src/sequelize/dev_database.sqlite`) + fs.renameSync(devDbBackup, devDb); } const prodDbBackup = `${tempDir}prod_database.sqlite`; +const prodDb = `${rootDir}/src/sequelize/prod_database.sqlite`; if (fs.existsSync(prodDbBackup)) { - fs.renameSync(prodDbBackup, `${rootDir}/src/sequelize/prod_database.sqlite`) + fs.renameSync(prodDbBackup, prodDb); } -//TODO: add version migrations +try { + const instalationVarsStr = fs.readFileSync(installationVariablesFile); + const instalationVars = JSON.parse(instalationVarsStr); + const prevVersion = instalationVars.prevVer; + + console.log(`previous version - ${prevVersion}`); + console.log(`new version - ${currentVersion}`); + + if (semver.satisfies(prevVersion, '<=1.0.0')) { + console.log('upgrading from version <=1.0.0 :'); + console.log(' inserting seeds meta info in db'); + const options = { + env: { + "PATH": process.env.PATH + }, + stdio: [process.stdin, process.stdout, process.stderr] + }; + + execSync(`sqlite3 ${prodDb} "insert into SequelizeMeta (name) values ('20180928110125-insert-registry.js');"`, options); + execSync(`sqlite3 ${prodDb} "insert into SequelizeMeta (name) values ('20180928111532-insert-catalog-item.js');"`, options); + execSync(`sqlite3 ${prodDb} "insert into SequelizeMeta (name) values ('20180928112152-insert-iofog-type.js');"`, options); + execSync(`sqlite3 ${prodDb} "insert into SequelizeMeta (name) values ('20180928121334-insert-catalog-item-image.js');"`, options); + } + + fs.unlinkSync(installationVariablesFile); +} catch (e) { + console.log('no previous version') +} \ No newline at end of file diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh deleted file mode 100644 index c0d4e8555..000000000 --- a/scripts/postinstall.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -##TODO: remove after js scripts finished - -vercomp () { - if [[ $1 == $2 ]] - then - echo '=' - return - fi - local IFS=. - local i ver1=($1) ver2=($2) - # fill empty fields in ver1 with zeros - for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) - do - ver1[i]=0 - done - for ((i=0; i<${#ver1[@]}; i++)) - do - if [[ -z ${ver2[i]} ]] - then - # fill empty fields in ver2 with zeros - ver2[i]=0 - fi - if ((10#${ver1[i]} > 10#${ver2[i]})) - then - echo '>' - return - fi - if ((10#${ver1[i]} < 10#${ver2[i]})) - then - echo '<' - return - fi - done - echo '=' - return -} - -#START -#restore db -IOFOG_CONTROLLER_NODE_MODULES=$(npm root -g iofog-controller) -IOFOG_CONTROLLER_SEQUELIZE_DIR=$IOFOG_CONTROLLER_NODE_MODULES'/iofogcontroller/src/sequelize' - -DEV_DB_FILE=$IOFOG_CONTROLLER_SEQUELIZE_DIR'/dev_database.sqlite' -DEV_DB_FILE_BACKUP='/tmp/dev_database.sqlite' -if [ -f $DEV_DB_FILE_BACKUP ]; then - mv $DEV_DB_FILE_BACKUP $DEV_DB_FILE -fi - -PROD_DB_FILE=$IOFOG_CONTROLLER_SEQUELIZE_DIR'/prod_database.sqlite' -PROD_DB_FILE_BACKUP='/tmp/prod_database.sqlite' -if [ -f $PROD_DB_FILE_BACKUP ]; then - mv $PROD_DB_FILE_BACKUP $PROD_DB_FILE -fi - -#prev versions migrations -if [ -f /tmp/iofogcontroller_install_variables ]; then - PREV_IOFOG_CONTROLLER_VER=$(grep prev_ver /tmp/iofogcontroller_install_variables | awk '{print $2}') -fi - -if [[ -z "${PREV_IOFOG_CONTROLLER_VER// }" ]] -then - echo "No previous version" -else - echo "Previous version: "${PREV_IOFOG_CONTROLLER_VER} - if [[ $(vercomp $PREV_IOFOG_CONTROLLER_VER 1.0.0) = '<' ]] || [[ $(vercomp $PREV_IOFOG_CONTROLLER_VER 1.0.0) = '=' ]] - then - echo "Upgrading from version 1.0.0" - sqlite3 src/sequelize/prod_database.sqlite "insert into SequelizeMeta (name) values ('20180928110125-insert-registry.js');" - sqlite3 src/sequelize/prod_database.sqlite "insert into SequelizeMeta (name) values ('20180928111532-insert-catalog-item.js');" - sqlite3 src/sequelize/prod_database.sqlite "insert into SequelizeMeta (name) values ('20180928112152-insert-iofog-type.js');" - sqlite3 src/sequelize/prod_database.sqlite "insert into SequelizeMeta (name) values ('20180928121334-insert-catalog-item-image.js');" - fi -fi - -rm -rf /tmp/iofogcontroller_install_variables \ No newline at end of file diff --git a/scripts/preuninstall.js b/scripts/preuninstall.js index 0cec350a3..da1fbcea5 100644 --- a/scripts/preuninstall.js +++ b/scripts/preuninstall.js @@ -17,8 +17,8 @@ const fs = require('fs'); const version = require('../package').version; const rootDir = `${__dirname}/../`; -let installation_variables_file_name = 'iofogcontroller_install_variables'; -let installation_variables_file; +let installationVariablesFileName = 'iofogcontroller_install_variables'; +let installationVariablesFile; let tempDir; if (os.type() === 'Linux') { @@ -31,9 +31,13 @@ if (os.type() === 'Linux') { throw new Error("Unsupported OS found: " + os.type()); } -installation_variables_file = tempDir + installation_variables_file_name; +installationVariablesFile = tempDir + installationVariablesFileName; -fs.writeFileSync(installation_variables_file, `prev_ver: ${version}`); +const instalationVars = { + prevVer: version +}; + +fs.writeFileSync(installationVariablesFile, JSON.stringify(instalationVars)); const devDb = `${rootDir}/src/sequelize/dev_database.sqlite`; if (fs.existsSync(devDb)) {