From 208f1d777b49511b82da4da56237bcc07855ea18 Mon Sep 17 00:00:00 2001 From: Norayr Chilingarian Date: Wed, 19 Jan 2022 23:08:53 +0400 Subject: [PATCH] -a / --ask option. --- readme.md | 2 ++ src/vipack.Mod | 22 +++++++++++++++++++--- src/vpkInstaller.Mod | 17 ++++++++++++++--- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/readme.md b/readme.md index c7f4c40..e7f2a5d 100644 --- a/readme.md +++ b/readme.md @@ -24,6 +24,8 @@ some examples: `vipack -p irc_bot` — will build the package and dependencies in the default prefix: `~/vpkLocal` +`vipack -a -p irc_bot` — ask for confirmation before building the package and dependencies in the default prefix: `~/vpkLocal` + `vipack -p irc_bot -P /tmp/coolprefix` — will do the same in the custom prefix. `vipack -p irc_bot -P /tmp/coolprefix -t /tmp/myothertree` — the same, but the dependency resolution will be conducted by using custom package description tree. diff --git a/src/vipack.Mod b/src/vipack.Mod index 4596d75..3b46d6f 100644 --- a/src/vipack.Mod +++ b/src/vipack.Mod @@ -28,6 +28,9 @@ BEGIN opts.setOptRequired(opt, FALSE); options.add(options, opt); + opts.setOptRequired(opt, FALSE); + options.add(options, opt); + opt := opts.createOpt(); opts.setOptName(opt, "-s"); opts.setOptLName(opt, "--sync"); @@ -89,7 +92,7 @@ END msgnopkg; PROCEDURE main; VAR - deps, sync, fetch: BOOLEAN; + deps, sync, fetch, ask: BOOLEAN; package, prefix, pkgTree: ARRAY 128 OF CHAR; options: opts.Options; @@ -125,6 +128,14 @@ BEGIN opts.setOptRequired(opt, FALSE); options.add(options, opt); + opt := opts.createOpt(); + opts.setOptName(opt, "-a"); + opts.setOptLName(opt, "--ask"); + opts.setOptHasVal(opt, FALSE); + opts.setOptDesc(opt, "only resolve and fetch, do not build"); + opts.setOptRequired(opt, FALSE); + options.add(options, opt); + opt := opts.createOpt(); opts.setOptName(opt, "-s"); opts.setOptLName(opt, "--sync"); @@ -166,6 +177,11 @@ BEGIN fopt := opts.findOpt("-d", foptions); IF fopt # NIL THEN deps := TRUE END; + fopt := opts.createOpt(); + fopt := opts.findOpt("-a", foptions); + IF fopt # NIL THEN ask := TRUE END; + + fopt := opts.createOpt(); fopt := opts.findOpt("-f", foptions); IF fopt # NIL THEN fetch := TRUE END; @@ -186,9 +202,9 @@ BEGIN IF deps THEN depTree := vpkInstaller.resolve(package) ELSIF fetch THEN - vpkInstaller.fetch(package, prefix, pkgTree) + vpkInstaller.fetch(package, prefix, pkgTree, ask) ELSE - vpkInstaller.build(package, prefix, pkgTree) + vpkInstaller.build(package, prefix, pkgTree, ask) END ELSE msgnopkg(options) diff --git a/src/vpkInstaller.Mod b/src/vpkInstaller.Mod index b9552d3..0093d49 100644 --- a/src/vpkInstaller.Mod +++ b/src/vpkInstaller.Mod @@ -1,5 +1,5 @@ MODULE vpkInstaller; -IMPORT Out, StringList, vpkResolver, vpkdepTree, vpkDot, vpkEnv, vpkJsonDepRetriever, vpkSyncer, Platform; +IMPORT In, Out, StringList, vpkResolver, vpkdepTree, vpkDot, vpkEnv, vpkJsonDepRetriever, vpkSyncer, Platform; PROCEDURE resolve*(VAR unit: ARRAY OF CHAR): vpkdepTree.TdepTree; VAR @@ -30,7 +30,16 @@ BEGIN RETURN tree END resolve; -PROCEDURE fetch*(VAR package, prefix, pkgTree: ARRAY OF CHAR); +PROCEDURE ask(); +VAR + ch: CHAR; +BEGIN + Out.String("would you like to merge these packages? (y/n) "); + In.Char(ch); + IF ch # 'y' THEN Out.Ln; Out.String('quitting'); Out.Ln; HALT(0); END +END ask; + +PROCEDURE fetch*(VAR package, prefix, pkgTree: ARRAY OF CHAR; a: BOOLEAN); VAR depTree: vpkdepTree.TdepTree; dep: vpkdepTree.Tdep; @@ -39,6 +48,7 @@ VAR typ: ARRAY 16 OF CHAR; BEGIN depTree := resolve(package); + IF a THEN ask END; i := 0; REPEAT dep := vpkdepTree.Get(depTree, i); @@ -48,7 +58,7 @@ BEGIN UNTIL i = depTree.Count; END fetch; -PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR); +PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR; a : BOOLEAN); VAR depTree: vpkdepTree.TdepTree; dep: vpkdepTree.Tdep; @@ -63,6 +73,7 @@ VAR BEGIN builddir := vpkEnv.mkBldDir(prefix); depTree := resolve(package); + IF a THEN ask END; i := 0; REPEAT dep := vpkdepTree.Get(depTree, i);