-a / --ask option.

This commit is contained in:
Norayr Chilingarian 2022-01-19 23:08:53 +04:00
parent 6a44334d7a
commit 208f1d777b
3 changed files with 35 additions and 6 deletions

View file

@ -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.

View file

@ -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)

View file

@ -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);