diff --git a/.gitignore b/.gitignore index 2b4f54f21d9cf186ece79748c5ccf45d6620dc45..993b9c8b2112ae1fd38f410d6e1e1d5cd504da02 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,7 @@ _build /dev/fc-time /dev/fc-memuse /bin/ocamldep_transitive_closure +/bin/ivette #share /share/Makefile.config diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b3f95777cc993fbea6088cf52928c941a60c56c..1373161286b2f6e7f26e5439ad9953a82e0e09cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -122,7 +122,7 @@ ivette: - node --version - npm --version - yarn --version - - make -C ivette + - make -C ivette lint dome-app tags: - docker diff --git a/Makefile b/Makefile index 9d94325ae423e998f608e5d2d06ac95347178f4e..cccd90e1305ba9f8cdc448f87a2fee4122d37c47 100644 --- a/Makefile +++ b/Makefile @@ -73,6 +73,18 @@ endif dune clean rm -rf _build .merlin +############################################################################## +# IVETTE +################################ + +.PHONY: ivette ivette-dev + +ivette: + @$(MAKE) -C ivette + +ivette-dev: + @$(MAKE) -C ivette dev + ############################################################################## # HELP ################################ diff --git a/ivette/.gitignore b/ivette/.gitignore index 5137465dd358ebe9aa0f203fc100c0b4cae255b5..08b3cc95e60a655d4d140fb6f410ec9dbedb4ebc 100644 --- a/ivette/.gitignore +++ b/ivette/.gitignore @@ -9,7 +9,6 @@ .eslint-cache node_modules yarn-error.log -/bin /dist /doc/html /src/renderer/loader.ts diff --git a/ivette/Makefile b/ivette/Makefile index 84dc2b6ad5acadfdc84b34dcd8cd4d92a1f949b9..137f743ac2696b9cd67ca6a2343e85c840a77ef7 100644 --- a/ivette/Makefile +++ b/ivette/Makefile @@ -23,9 +23,9 @@ # -------------------------------------------------------------------------- APP=Ivette DOME=./src/dome -DOME_ARGS=--command $$(dirname $$0)/../../bin/frama-c +DOME_ARGS=--command $$(dirname $$0)/frama-c DOME_DEV=-server-debug 1 -DOME_CLI=./bin/ivette +DOME_CLI=../bin/ivette DOME_API=./src/frama-c DOME_CUSTOM_ENTRIES= yes COPYRIGHT=CEA LIST / LSL @@ -39,8 +39,8 @@ COPYRIGHT=CEA LIST / LSL all: pkg lint app -app: dome-app -dev: dome-dev +app: api dome-app +dev: api dome-dev lint: dome-pkg dome-templ checkcase @echo "[Ivette] running typechecker & linter" diff --git a/ivette/ivette-bootstrap.sh b/ivette/ivette-bootstrap.sh index 5ce9ba70657d986e5fcfde39fca87290fa614b23..7ab111cffcb3cb46eefcd2b8a65c5b04648bc2ad 100755 --- a/ivette/ivette-bootstrap.sh +++ b/ivette/ivette-bootstrap.sh @@ -87,15 +87,15 @@ fi echo "[2/3] Compiling Ivette" # -------------------------------------------------------------------------- -TMPDIR=`mktemp -d` -cd $TMPDIR +IVETTE_TMP_DIR=`mktemp -d` +cd $IVETTE_TMP_DIR tar zxf $PREFIX/lib/frama-c/ivette.tgz cd ivette make dist if [ "$?" != "0" ] then echo "Compilation Failed" - rm -fr $TMPDIR + rm -fr $IVETTE_TMP_DIR exit 2 fi @@ -107,11 +107,11 @@ make PREFIX=$PREFIX install if [ "$?" != "0" ] then echo "Installation Failed" - rm -fr $TMPDIR + rm -fr $IVETTE_TMP_DIR exit 3 fi cd $USERCWD -rm -fr $TMPDIR +rm -fr $IVETTE_TMP_DIR rm -f $PREFIX/lib/frama-c/ivette.tgz # -------------------------------------------------------------------------- diff --git a/ivette/src/dome/main/dome.ts b/ivette/src/dome/main/dome.ts index d32c37a3f9c3c371a5705628c5dd8acb56865dab..bec195e27ee9085cccef96609a09e8126e80988f 100644 --- a/ivette/src/dome/main/dome.ts +++ b/ivette/src/dome/main/dome.ts @@ -501,8 +501,13 @@ function createBrowserWindow( // --- Application Window(s) & Command Line // -------------------------------------------------------------------------- -function stripElectronArgv(argv: string[]): string[] { - return argv.slice(DEVEL ? 3 : (LOCAL ? 2 : 1)).filter((p) => !!p); +interface Cmd { wdir: string; argv: string[] } + +function stripElectronArgv(cmd: Cmd): Cmd +{ + const wdir = DEVEL ? cmd.argv[3] : cmd.wdir ; + const argv = cmd.argv.slice(DEVEL ? 4 : (LOCAL ? 2 : 1)).filter((p) => !!p); + return { wdir, argv }; } function createPrimaryWindow(): void { @@ -516,14 +521,14 @@ function createPrimaryWindow(): void { }); const cwd = process.cwd(); const wdir = cwd === '/' ? app.getPath('home') : cwd; - const argv = stripElectronArgv(process.argv); + const cmd = stripElectronArgv({ wdir, argv: process.argv }); // Initialize Theme const globals = obtainGlobalSettings(); applyThemeSettings(globals); // Create Window - createBrowserWindow(true, { title: appName }, argv, wdir); + createBrowserWindow(true, { title: appName }, cmd.argv, cmd.wdir); } let appCount = 1; @@ -538,9 +543,9 @@ function createSecondaryWindow( if (argString) { argString = argString.substring(argStart.length); const electronArgv = JSON.parse(argString); - const argv = stripElectronArgv(electronArgv); + const cmd = stripElectronArgv({ wdir, argv: electronArgv }); const title = `${appName} #${++appCount}`; - createBrowserWindow(false, { title }, argv, wdir); + createBrowserWindow(false, { title }, cmd.argv, cmd.wdir); } } diff --git a/ivette/src/dome/misc/system.ts b/ivette/src/dome/misc/system.ts index f97d6e7760df5f02ba7cc2a1860290ec7b03bcea..0896e7712106c082ab1ad4a2db4d1da4354e55fa 100644 --- a/ivette/src/dome/misc/system.ts +++ b/ivette/src/dome/misc/system.ts @@ -144,6 +144,7 @@ let COMMAND_WDIR = '.'; let COMMAND_ARGV: string[] = []; function setCommandLine(argv: string[], wdir: string): void { + process.chdir(wdir); COMMAND_ARGV = argv; COMMAND_WDIR = wdir; } diff --git a/ivette/src/dome/template/makefile b/ivette/src/dome/template/makefile index b79a6e427570a59875966f7b19825a5aa5039b02..1f8033fcaf03d3ec165d86b7e415fb9407dad4ce 100644 --- a/ivette/src/dome/template/makefile +++ b/ivette/src/dome/template/makefile @@ -25,6 +25,7 @@ # -------------------------------------------------------------------------- # DOMEMK_ reserved for makefile derived variables +# CURDIR is a Makefile builtin variable APP?=$(shell basename $(CURDIR)) COPYRIGHT?=CEA Tech @@ -220,10 +221,11 @@ dome-dev: dome-pkg dome-templ @echo "#!/bin/sh" >> $(DOME_CLI) @echo "export DOME='$(DOME)'" >> $(DOME_CLI) @echo "export DOME_ENV='dev'" >> $(DOME_CLI) - @echo 'exec $(DOME_MK_BIN)/electron-webpack dev $(DOME_ARGS) $(DOME_DEV) "$$@"' >> $(DOME_CLI) + @echo 'WDIR=$$PWD' >> $(DOME_CLI) + @echo 'ARGV="$(DOME_ARGS) $(DOME_DEV) $$@"' >> $(DOME_CLI) + @echo "cd $(CURDIR)" >> $(DOME_CLI) + @echo 'exec $(DOME_MK_BIN)/electron-webpack dev $$WDIR $$ARGV' >> $(DOME_CLI) @chmod 555 $(DOME_CLI) - @echo "[Dome] running application (development)" - @$(DOME_CLI) # -------------------------------------------------------------------------- # --- Application Building