-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 -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` — 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. `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); opts.setOptRequired(opt, FALSE);
options.add(options, opt); options.add(options, opt);
opts.setOptRequired(opt, FALSE);
options.add(options, opt);
opt := opts.createOpt(); opt := opts.createOpt();
opts.setOptName(opt, "-s"); opts.setOptName(opt, "-s");
opts.setOptLName(opt, "--sync"); opts.setOptLName(opt, "--sync");
@ -89,7 +92,7 @@ END msgnopkg;
PROCEDURE main; PROCEDURE main;
VAR VAR
deps, sync, fetch: BOOLEAN; deps, sync, fetch, ask: BOOLEAN;
package, prefix, pkgTree: ARRAY 128 OF CHAR; package, prefix, pkgTree: ARRAY 128 OF CHAR;
options: opts.Options; options: opts.Options;
@ -125,6 +128,14 @@ BEGIN
opts.setOptRequired(opt, FALSE); opts.setOptRequired(opt, FALSE);
options.add(options, opt); 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(); opt := opts.createOpt();
opts.setOptName(opt, "-s"); opts.setOptName(opt, "-s");
opts.setOptLName(opt, "--sync"); opts.setOptLName(opt, "--sync");
@ -166,6 +177,11 @@ BEGIN
fopt := opts.findOpt("-d", foptions); fopt := opts.findOpt("-d", foptions);
IF fopt # NIL THEN deps := TRUE END; 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.createOpt();
fopt := opts.findOpt("-f", foptions); fopt := opts.findOpt("-f", foptions);
IF fopt # NIL THEN fetch := TRUE END; IF fopt # NIL THEN fetch := TRUE END;
@ -186,9 +202,9 @@ BEGIN
IF deps THEN IF deps THEN
depTree := vpkInstaller.resolve(package) depTree := vpkInstaller.resolve(package)
ELSIF fetch THEN ELSIF fetch THEN
vpkInstaller.fetch(package, prefix, pkgTree) vpkInstaller.fetch(package, prefix, pkgTree, ask)
ELSE ELSE
vpkInstaller.build(package, prefix, pkgTree) vpkInstaller.build(package, prefix, pkgTree, ask)
END END
ELSE ELSE
msgnopkg(options) msgnopkg(options)

View file

@ -1,5 +1,5 @@
MODULE vpkInstaller; 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; PROCEDURE resolve*(VAR unit: ARRAY OF CHAR): vpkdepTree.TdepTree;
VAR VAR
@ -30,7 +30,16 @@ BEGIN
RETURN tree RETURN tree
END resolve; 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 VAR
depTree: vpkdepTree.TdepTree; depTree: vpkdepTree.TdepTree;
dep: vpkdepTree.Tdep; dep: vpkdepTree.Tdep;
@ -39,6 +48,7 @@ VAR
typ: ARRAY 16 OF CHAR; typ: ARRAY 16 OF CHAR;
BEGIN BEGIN
depTree := resolve(package); depTree := resolve(package);
IF a THEN ask END;
i := 0; i := 0;
REPEAT REPEAT
dep := vpkdepTree.Get(depTree, i); dep := vpkdepTree.Get(depTree, i);
@ -48,7 +58,7 @@ BEGIN
UNTIL i = depTree.Count; UNTIL i = depTree.Count;
END fetch; END fetch;
PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR); PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR; a : BOOLEAN);
VAR VAR
depTree: vpkdepTree.TdepTree; depTree: vpkdepTree.TdepTree;
dep: vpkdepTree.Tdep; dep: vpkdepTree.Tdep;
@ -63,6 +73,7 @@ VAR
BEGIN BEGIN
builddir := vpkEnv.mkBldDir(prefix); builddir := vpkEnv.mkBldDir(prefix);
depTree := resolve(package); depTree := resolve(package);
IF a THEN ask END;
i := 0; i := 0;
REPEAT REPEAT
dep := vpkdepTree.Get(depTree, i); dep := vpkdepTree.Get(depTree, i);