mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
vpkTools module, using fields of Tdep insteod of passing vars around,
vpkSyncer.fetch doesn't get anymore prefix by reference.
This commit is contained in:
parent
1a4b4bd988
commit
c7105d95fa
9 changed files with 159 additions and 106 deletions
|
|
@ -18,6 +18,7 @@ endif
|
||||||
all: get_deps build_deps buildThis
|
all: get_deps build_deps buildThis
|
||||||
|
|
||||||
get_deps:
|
get_deps:
|
||||||
|
@echo "getting deps"
|
||||||
@for i in $(DEPEND); do \
|
@for i in $(DEPEND); do \
|
||||||
if [ -d "$(DPS)/$${i}" ]; then \
|
if [ -d "$(DPS)/$${i}" ]; then \
|
||||||
cd "$(DPS)/$${i}"; \
|
cd "$(DPS)/$${i}"; \
|
||||||
|
|
@ -31,8 +32,10 @@ get_deps:
|
||||||
cd - ; \
|
cd - ; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
@echo "________________________________________"
|
||||||
|
|
||||||
build_deps:
|
build_deps:
|
||||||
|
@echo "building deps"
|
||||||
mkdir -p $(BLD)
|
mkdir -p $(BLD)
|
||||||
cd $(BLD); \
|
cd $(BLD); \
|
||||||
for i in $(DEPEND); do \
|
for i in $(DEPEND); do \
|
||||||
|
|
@ -42,8 +45,11 @@ build_deps:
|
||||||
make -f "$(DPS)/$${i}/Makefile" BUILD=$(BLD); \
|
make -f "$(DPS)/$${i}/Makefile" BUILD=$(BLD); \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
@echo "________________________________________"
|
||||||
|
|
||||||
buildThis:
|
buildThis:
|
||||||
|
@echo "building vipack"
|
||||||
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkTools.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSettings.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSettings.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkLinuxFiles.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkLinuxFiles.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkTime.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkTime.Mod
|
||||||
|
|
@ -52,13 +58,14 @@ buildThis:
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkGit.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkGit.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkStorage.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkStorage.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkConf.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkConf.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSyncer.Mod
|
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkdepTree.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkdepTree.Mod
|
||||||
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSyncer.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkDot.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkDot.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkResolver.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkResolver.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkJsonDepRetriever.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkJsonDepRetriever.Mod
|
||||||
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkInstaller.Mod
|
cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkInstaller.Mod
|
||||||
cd $(BUILD) && $(VOC) $(mkfile_dir_path)/src/vipack.Mod -m
|
cd $(BUILD) && $(VOC) $(mkfile_dir_path)/src/vipack.Mod -m
|
||||||
|
@echo "________________________________________"
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
#cd $(BUILD) && $(VOC) $(mkfile_dir_path)/test/testList.Mod -m
|
#cd $(BUILD) && $(VOC) $(mkfile_dir_path)/test/testList.Mod -m
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ BEGIN
|
||||||
Strings.Append(vpkSettings.vpkConfDir, path);
|
Strings.Append(vpkSettings.vpkConfDir, path);
|
||||||
END mkConfDirPath;
|
END mkConfDirPath;
|
||||||
|
|
||||||
PROCEDURE mkBldDir*(VAR prefix: ARRAY OF CHAR): strTypes.pstring;
|
PROCEDURE mkBldDir*(prefix: ARRAY OF CHAR): strTypes.pstring;
|
||||||
VAR
|
VAR
|
||||||
builddir: strTypes.pstring;
|
builddir: strTypes.pstring;
|
||||||
ln : INTEGER;
|
ln : INTEGER;
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ BEGIN
|
||||||
HALT(3);
|
HALT(3);
|
||||||
END;
|
END;
|
||||||
Out.Ln;
|
Out.Ln;
|
||||||
|
|
||||||
COPY("", package); COPY("", prefix); COPY("", tree);
|
COPY("", package); COPY("", prefix); COPY("", tree);
|
||||||
deps := FALSE; sync := FALSE;
|
deps := FALSE; sync := FALSE;
|
||||||
|
|
||||||
|
|
@ -76,7 +76,7 @@ BEGIN
|
||||||
fopt := opts.findOpt("-s", foptions);
|
fopt := opts.findOpt("-s", foptions);
|
||||||
IF fopt # NIL THEN sync := TRUE END;
|
IF fopt # NIL THEN sync := TRUE END;
|
||||||
|
|
||||||
|
|
||||||
opts.valOfOpt("-p", foptions, package);
|
opts.valOfOpt("-p", foptions, package);
|
||||||
opts.valOfOpt("-P", foptions, prefix);
|
opts.valOfOpt("-P", foptions, prefix);
|
||||||
opts.valOfOpt("-t", foptions, tree);
|
opts.valOfOpt("-t", foptions, tree);
|
||||||
|
|
@ -94,7 +94,7 @@ PROCEDURE main;
|
||||||
VAR
|
VAR
|
||||||
deps, sync, fetch, ask: 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;
|
||||||
foptions: opts.Options;
|
foptions: opts.Options;
|
||||||
opt, fopt: opts.Option;
|
opt, fopt: opts.Option;
|
||||||
|
|
@ -171,7 +171,7 @@ BEGIN
|
||||||
HALT(3);
|
HALT(3);
|
||||||
END;
|
END;
|
||||||
Out.Ln;
|
Out.Ln;
|
||||||
|
|
||||||
COPY("", package); COPY("", prefix); COPY("", pkgTree);
|
COPY("", package); COPY("", prefix); COPY("", pkgTree);
|
||||||
deps := FALSE; sync := FALSE;
|
deps := FALSE; sync := FALSE;
|
||||||
|
|
||||||
|
|
@ -192,7 +192,7 @@ BEGIN
|
||||||
fopt := opts.findOpt("-s", foptions);
|
fopt := opts.findOpt("-s", foptions);
|
||||||
IF fopt # NIL THEN sync := TRUE END;
|
IF fopt # NIL THEN sync := TRUE END;
|
||||||
|
|
||||||
|
|
||||||
opts.valOfOpt("-p", foptions, package);
|
opts.valOfOpt("-p", foptions, package);
|
||||||
opts.valOfOpt("-P", foptions, prefix);
|
opts.valOfOpt("-P", foptions, prefix);
|
||||||
IF prefix = "" THEN
|
IF prefix = "" THEN
|
||||||
|
|
@ -226,20 +226,20 @@ END main;
|
||||||
(*
|
(*
|
||||||
PROCEDURE help();
|
PROCEDURE help();
|
||||||
BEGIN
|
BEGIN
|
||||||
vpkLogger.Log("HelpText");
|
vpkLogger.Log("HelpText");
|
||||||
Out.String("Vipack sync - syncing git tree and local tree"); Out.Ln;
|
Out.String("Vipack sync - syncing git tree and local tree"); Out.Ln;
|
||||||
Out.String("vipackConf.json path -> $HOME/.vipack/vipackConf.json"); Out.Ln;
|
Out.String("vipackConf.json path -> $HOME/.vipack/vipackConf.json"); Out.Ln;
|
||||||
Out.String("vipackTree path -> $HOME/.vipack/vipackTree")
|
Out.String("vipackTree path -> $HOME/.vipack/vipackTree")
|
||||||
END help;
|
END help;
|
||||||
|
|
||||||
PROCEDURE main();
|
PROCEDURE main();
|
||||||
VAR
|
VAR
|
||||||
S: Texts.Scanner;
|
S: Texts.Scanner;
|
||||||
unit, command: ARRAY 64 OF CHAR; (* because Texts.Scanner.s is 64 bytes long*)
|
unit, command: ARRAY 64 OF CHAR; (* because Texts.Scanner.s is 64 bytes long*)
|
||||||
BEGIN
|
BEGIN
|
||||||
(* this could go to vpkConf init section,
|
(* this could go to vpkConf init section,
|
||||||
but here it is more visible. though may be it doesn't have to be *)
|
but here it is more visible. though may be it doesn't have to be *)
|
||||||
IF ~vpkConf.configured() THEN vpkConf.mkDefConfig END;
|
IF ~vpkConf.configured() THEN vpkConf.mkDefConfig END;
|
||||||
|
|
||||||
(* Getting 1 argument and outputting it *)
|
(* Getting 1 argument and outputting it *)
|
||||||
Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos);
|
Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos);
|
||||||
|
|
@ -248,18 +248,18 @@ BEGIN
|
||||||
command := S.s;
|
command := S.s;
|
||||||
|
|
||||||
IF Strings.Match(command, "") OR Strings.Match(command, "help")THEN
|
IF Strings.Match(command, "") OR Strings.Match(command, "help")THEN
|
||||||
help;
|
help;
|
||||||
ELSE
|
ELSE
|
||||||
|
|
||||||
IF command = "sync" THEN
|
IF command = "sync" THEN
|
||||||
vpkSyncer.sync;
|
vpkSyncer.sync;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
IF command = "install" THEN
|
IF command = "install" THEN
|
||||||
Texts.Scan(S);
|
Texts.Scan(S);
|
||||||
unit := S.s;
|
unit := S.s;
|
||||||
vpkInstaller.install(unit);
|
vpkInstaller.install(unit);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
END;
|
END;
|
||||||
END main;
|
END main;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
MODULE vpkInstaller;
|
MODULE vpkInstaller;
|
||||||
IMPORT In, Out, StringList, vpkResolver, vpkdepTree, vpkDot, vpkEnv, vpkJsonDepRetriever, vpkSyncer, Platform;
|
IMPORT In, Out, Platform,
|
||||||
|
StringList,
|
||||||
|
vpkResolver, vpkdepTree, vpkDot, vpkEnv, vpkJsonDepRetriever,vpkSyncer,
|
||||||
|
vpkTools, vpkSettings;
|
||||||
|
|
||||||
PROCEDURE resolve*(VAR unit: ARRAY OF CHAR): vpkdepTree.TdepTree;
|
PROCEDURE resolve*(VAR unit: ARRAY OF CHAR): vpkdepTree.TdepTree;
|
||||||
VAR
|
VAR
|
||||||
|
|
@ -39,70 +42,45 @@ BEGIN
|
||||||
IF ch # 'y' THEN Out.Ln; Out.String('quitting'); Out.Ln; HALT(0); END
|
IF ch # 'y' THEN Out.Ln; Out.String('quitting'); Out.Ln; HALT(0); END
|
||||||
END ask;
|
END ask;
|
||||||
|
|
||||||
PROCEDURE extractDomainFromUrl(VAR url: ARRAY OF CHAR; VAR domain: ARRAY OF CHAR);
|
PROCEDURE fetch*(VAR package:ARRAY OF CHAR; prefix: ARRAY OF CHAR; VAR pkgTree: ARRAY OF CHAR; a: BOOLEAN);
|
||||||
VAR
|
|
||||||
start, i, j: INTEGER;
|
|
||||||
BEGIN
|
|
||||||
start := 0;
|
|
||||||
(* Skip protocol to find the start of the domain *)
|
|
||||||
WHILE (start < LEN(url) - 1) & (url[start] # 0X) & ((url[start] # ':') OR (url[start+1] # '/')) DO
|
|
||||||
INC(start);
|
|
||||||
END;
|
|
||||||
|
|
||||||
(* Skip the "://" part to actually reach the start of the domain *)
|
|
||||||
INC(start, 3); (* Assuming we stopped at ':', so we skip "://" *)
|
|
||||||
|
|
||||||
i := start;
|
|
||||||
(* Now 'start' is at the beginning of the domain, find the end of the domain *)
|
|
||||||
WHILE (i < LEN(url)) & (url[i] # 0X) & (url[i] # '/') DO
|
|
||||||
INC(i);
|
|
||||||
END;
|
|
||||||
|
|
||||||
(* Copy domain from url *)
|
|
||||||
j := 0;
|
|
||||||
WHILE (start < i) & (j < LEN(domain) - 1) DO
|
|
||||||
domain[j] := url[start];
|
|
||||||
INC(j); INC(start);
|
|
||||||
END;
|
|
||||||
domain[j] := 0X; (* Ensure the domain string is null-terminated *)
|
|
||||||
END extractDomainFromUrl;
|
|
||||||
|
|
||||||
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;
|
||||||
i: LONGINT;
|
i: LONGINT;
|
||||||
URI, branch, domain: ARRAY 128 OF CHAR;
|
|
||||||
typ: ARRAY 16 OF CHAR;
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
Out.String("entered vpkInstaller.fetch, prefix="); Out.String(prefix); Out.Ln;
|
||||||
depTree := resolve(package);
|
depTree := resolve(package);
|
||||||
IF a THEN ask END;
|
IF a THEN ask END;
|
||||||
i := 0;
|
i := 0;
|
||||||
REPEAT
|
REPEAT
|
||||||
dep := vpkdepTree.Get(depTree, i);
|
dep := vpkdepTree.Get(depTree, i);
|
||||||
vpkJsonDepRetriever.getURIandType(dep, URI, typ, branch);
|
vpkJsonDepRetriever.getURIandType(dep);
|
||||||
extractDomainFromUrl(URI, domain);
|
Out.String("vpkInstaller.fetch, repeat bfr vpkSyncer.fetch, prefix=");
|
||||||
vpkSyncer.fetch(dep.name^, URI, domain, typ, prefix, branch);
|
Out.String(prefix); Out.Ln;
|
||||||
|
vpkSyncer.fetch(dep, prefix);
|
||||||
|
Out.String("vpkInstaller.fetch, repeat aftr vpkSyncer.fetch, prefix=");
|
||||||
|
Out.String(prefix); Out.Ln;
|
||||||
INC(i)
|
INC(i)
|
||||||
UNTIL i = depTree.Count;
|
UNTIL i = depTree.Count;
|
||||||
END fetch;
|
END fetch;
|
||||||
|
|
||||||
PROCEDURE build*(VAR package, prefix, tree: ARRAY OF CHAR; a : BOOLEAN);
|
PROCEDURE build*(VAR package: ARRAY OF CHAR; prefix: ARRAY OF CHAR; VAR tree: ARRAY OF CHAR; a : BOOLEAN);
|
||||||
VAR
|
VAR
|
||||||
depTree: vpkdepTree.TdepTree;
|
depTree: vpkdepTree.TdepTree;
|
||||||
dep: vpkdepTree.Tdep;
|
dep: vpkdepTree.Tdep;
|
||||||
i, j: LONGINT;
|
i, j: LONGINT;
|
||||||
URI, branch, domain: ARRAY 128 OF CHAR;
|
|
||||||
typ: ARRAY 16 OF CHAR;
|
|
||||||
keys, values: StringList.TStringList;
|
keys, values: StringList.TStringList;
|
||||||
k, v: StringList.pstring;
|
k, v: StringList.pstring;
|
||||||
b: BOOLEAN;
|
b: BOOLEAN;
|
||||||
builddir, cmd, srcPath: StringList.pstring;
|
builddir, cmd, srcPath: StringList.pstring;
|
||||||
res: INTEGER;
|
res: INTEGER;
|
||||||
|
domain: ARRAY 256 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
Out.String("entered vpkInstaller.build, prefix="); Out.String(prefix); Out.Ln;
|
||||||
IF prefix # "" THEN
|
IF prefix # "" THEN
|
||||||
builddir := vpkEnv.mkBldDir(prefix)
|
builddir := vpkEnv.mkBldDir(prefix)
|
||||||
ELSE
|
ELSE
|
||||||
|
Out.String("calling vpkEnv.mkdefBldDir"); Out.Ln;
|
||||||
builddir := vpkEnv.mkdefBldDir();
|
builddir := vpkEnv.mkdefBldDir();
|
||||||
END;
|
END;
|
||||||
depTree := resolve(package);
|
depTree := resolve(package);
|
||||||
|
|
@ -110,16 +88,22 @@ BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
REPEAT
|
REPEAT
|
||||||
dep := vpkdepTree.Get(depTree, i);
|
dep := vpkdepTree.Get(depTree, i);
|
||||||
vpkJsonDepRetriever.getURIandType(dep, URI, typ, branch);
|
vpkJsonDepRetriever.getURIandType(dep);
|
||||||
Out.String("aftergetURIandType"); Out.Ln;
|
Out.String("aftergetURIandType"); Out.Ln;
|
||||||
Out.String("got uri: "); Out.String(URI); Out.Ln;
|
Out.String("got uri: "); Out.String(dep^.rmt^.URI); Out.Ln;
|
||||||
Out.String("got type: "); Out.String(typ); Out.Ln;
|
Out.String("got type: ");
|
||||||
extractDomainFromUrl(URI, domain);
|
IF dep^.Type = vpkSettings.git THEN Out.String("git");
|
||||||
Out.String("extracted domain; "); Out.String(domain); Out.Ln;
|
ELSIF dep^.Type = vpkSettings.https THEN Out.String("https") END;
|
||||||
vpkSyncer.fetch(dep.name^, URI, domain, typ, prefix, branch);
|
Out.Ln;
|
||||||
|
Out.String("vpkInstaller.build, repeat bfr vpkSyncer.fetch, prefix=");
|
||||||
|
Out.String(prefix); Out.Ln;
|
||||||
|
vpkSyncer.fetch(dep, prefix);
|
||||||
|
Out.String("vpkInstaller.build, repeat bfr vpkSyncer.fetch, prefix=");
|
||||||
|
Out.String(prefix); Out.Ln;
|
||||||
b := FALSE;
|
b := FALSE;
|
||||||
b := vpkJsonDepRetriever.getBuildInfo(dep, keys, values);
|
b := vpkJsonDepRetriever.getBuildInfo(dep, keys, values);
|
||||||
IF b THEN
|
IF b THEN
|
||||||
|
vpkTools.extractDomainFromUrl(dep^.rmt.URI, domain);
|
||||||
j := 0;
|
j := 0;
|
||||||
REPEAT
|
REPEAT
|
||||||
k := keys.GetString(keys, j);
|
k := keys.GetString(keys, j);
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ BEGIN
|
||||||
RETURN b;
|
RETURN b;
|
||||||
END getBuildInfo;
|
END getBuildInfo;
|
||||||
|
|
||||||
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR);
|
PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep);
|
||||||
VAR
|
VAR
|
||||||
jsonstr, errstr: strUtils.pstring;
|
jsonstr, errstr: strUtils.pstring;
|
||||||
tree, singleValue, remoteValue: Json.Value;
|
tree, singleValue, remoteValue: Json.Value;
|
||||||
|
|
@ -83,10 +83,8 @@ VAR
|
||||||
url, urlStr, authType, authTypeStr,
|
url, urlStr, authType, authTypeStr,
|
||||||
md5, md5Str, authCr, authCrStr,
|
md5, md5Str, authCr, authCrStr,
|
||||||
user, userStr, password, passwordStr: Json.jString;
|
user, userStr, password, passwordStr: Json.jString;
|
||||||
|
httpsRemote: vpkdepTree.RemoteHttps; gitRemote: vpkdepTree.RemoteGit;
|
||||||
BEGIN
|
BEGIN
|
||||||
strUtils.zeroStr(URI);
|
|
||||||
strUtils.zeroStr(type);
|
|
||||||
strUtils.zeroStr(branch);
|
|
||||||
jsonstr := NIL;
|
jsonstr := NIL;
|
||||||
vpkStorage.json2pstring(d.name^, jsonstr);
|
vpkStorage.json2pstring(d.name^, jsonstr);
|
||||||
IF jsonstr # NIL THEN
|
IF jsonstr # NIL THEN
|
||||||
|
|
@ -122,10 +120,9 @@ BEGIN
|
||||||
IF someObj.value IS Json.Str THEN
|
IF someObj.value IS Json.Str THEN
|
||||||
val := someObj.value(Json.Str).str;
|
val := someObj.value(Json.Str).str;
|
||||||
IF key^ = vpkSettings.rmtTypKey THEN (* type *)
|
IF key^ = vpkSettings.rmtTypKey THEN (* type *)
|
||||||
COPY(val^, type);
|
|
||||||
Out.String("type found: "); Out.String(type); Out.Ln;
|
|
||||||
IF val^ = vpkSettings.rmtTypHttpsVal THEN
|
IF val^ = vpkSettings.rmtTypHttpsVal THEN
|
||||||
|
NEW(httpsRemote); d^.rmt := httpsRemote;
|
||||||
|
d^.Type := vpkSettings.https;
|
||||||
WHILE singleValue # NIL DO
|
WHILE singleValue # NIL DO
|
||||||
someObj := singleValue(Json.Obj);
|
someObj := singleValue(Json.Obj);
|
||||||
|
|
||||||
|
|
@ -199,16 +196,20 @@ BEGIN
|
||||||
|
|
||||||
|
|
||||||
ELSIF val^ = vpkSettings.rmtTypGitVal THEN
|
ELSIF val^ = vpkSettings.rmtTypGitVal THEN
|
||||||
|
NEW(gitRemote); d^.rmt := gitRemote;
|
||||||
|
d^.Type := vpkSettings.git;
|
||||||
WHILE singleValue # NIL DO
|
WHILE singleValue # NIL DO
|
||||||
IF singleValue IS Json.Obj THEN
|
IF singleValue IS Json.Obj THEN
|
||||||
someObj := singleValue(Json.Obj);
|
someObj := singleValue(Json.Obj);
|
||||||
key := someObj.name;
|
key := someObj.name;
|
||||||
Out.String("git key: "); Out.String(key^); Out.Ln;
|
Out.String("git key: "); Out.String(key^); Out.Ln;
|
||||||
val := someObj.value(Json.Str).str;
|
val := someObj.value(Json.Str).str;
|
||||||
IF key^ = vpkSettings.rmtTreeBranchKey THEN COPY(val^, branch) END;
|
IF key^ = vpkSettings.rmtTreeBranchKey THEN
|
||||||
|
COPY(val^, d^.rmt(vpkdepTree.RemoteGit)^.branch);
|
||||||
|
END;
|
||||||
IF key^ = vpkSettings.rmtTreeKey THEN
|
IF key^ = vpkSettings.rmtTreeKey THEN
|
||||||
COPY(val^, URI);
|
COPY(val^, d^.rmt^.URI);
|
||||||
Out.String("uri found: "); Out.String(URI); Out.Ln;
|
Out.String("uri found: "); Out.String(d^.rmt^.URI); Out.Ln;
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
singleValue := someObj.next;
|
singleValue := someObj.next;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
MODULE vpkSettings;
|
MODULE vpkSettings;
|
||||||
IMPORT Platform, Out;
|
IMPORT Platform, Out;
|
||||||
CONST
|
CONST
|
||||||
http* = 0;
|
(* remotes *)
|
||||||
https* = 1;
|
http* = 0; httpWithAuth* = 1;
|
||||||
gemini* = 2;
|
https* = 2; httpsWithAuth* = 3;
|
||||||
git* = 3;
|
gemini* = 4;
|
||||||
|
git* = 5;
|
||||||
unkn* = -1;
|
unkn* = -1;
|
||||||
|
|
||||||
VAR
|
VAR
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
MODULE vpkSyncer;
|
MODULE vpkSyncer;
|
||||||
IMPORT Strings, Out,
|
IMPORT Strings, Out,
|
||||||
strUtils,
|
strUtils,
|
||||||
vpkSettings, vpkEnv, vpkConf, vpkGit;
|
vpkSettings, vpkEnv, vpkConf, vpkGit, vpkdepTree, vpkTools;
|
||||||
|
|
||||||
PROCEDURE mkTreePath(VAR path: ARRAY OF CHAR);
|
PROCEDURE mkTreePath(VAR path: ARRAY OF CHAR);
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
@ -23,19 +23,30 @@ BEGIN
|
||||||
END;
|
END;
|
||||||
END sync;
|
END sync;
|
||||||
|
|
||||||
PROCEDURE fetch*(name, url, dmn, typ, dst, branch: ARRAY OF CHAR);
|
PROCEDURE fetch*(VAR dep: vpkdepTree.Tdep; dst: ARRAY OF CHAR);
|
||||||
|
VAR domain: ARRAY 64 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
vpkTools.extractDomainFromUrl(dep^.rmt^.URI, domain);
|
||||||
|
Out.String("vpkSyncer.fetch, dst="); Out.String(dst); Out.Ln;
|
||||||
IF dst = "" THEN
|
IF dst = "" THEN
|
||||||
vpkEnv.mkdefPkgDirPath(dmn, name, dst);
|
vpkEnv.mkdefPkgDirPath(domain, dep^.name^, dst);
|
||||||
ELSE
|
ELSE
|
||||||
vpkEnv.mkPkgDirPath(dmn, name, dst);
|
vpkEnv.mkPkgDirPath(domain, dep^.name^, dst);
|
||||||
END;
|
END;
|
||||||
|
Out.String("now vpkSyncer.fetch, dst="); Out.String(dst); Out.Ln;
|
||||||
(* dst is changed by mkdefPkgDirPath and mkPkgdirPath *)
|
(* dst is changed by mkdefPkgDirPath and mkPkgdirPath *)
|
||||||
IF typ = vpkSettings.rmtTypGitVal THEN
|
(*IF dep^.Type = vpkSettings.git THEN*)
|
||||||
vpkGit.fetchRepo(url, dst, branch);
|
IF dep^.rmt # NIL THEN
|
||||||
|
IF dep^.rmt IS vpkdepTree.RemoteGit THEN
|
||||||
|
Out.String("in vkpSyncer.fetch uri is "); Out.String(dep^.rmt^.URI); Out.Ln;
|
||||||
|
vpkGit.fetchRepo(dep^.rmt^.URI, dst, dep^.rmt(vpkdepTree.RemoteGit).branch);
|
||||||
|
ELSE
|
||||||
|
Out.String("TODO: not a git url"); Out.Ln
|
||||||
|
END
|
||||||
ELSE
|
ELSE
|
||||||
Out.String("TODO: not a git url"); Out.Ln
|
Out.String("deps remote is not set, this should not happen"); Out.Ln;
|
||||||
END
|
HALT(5);
|
||||||
|
END;
|
||||||
END fetch;
|
END fetch;
|
||||||
|
|
||||||
END vpkSyncer.
|
END vpkSyncer.
|
||||||
|
|
|
||||||
32
src/vpkTools.Mod
Normal file
32
src/vpkTools.Mod
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
MODULE vpkTools;
|
||||||
|
|
||||||
|
PROCEDURE extractDomainFromUrl*(VAR url: ARRAY OF CHAR; VAR domain: ARRAY OF CHAR);
|
||||||
|
VAR
|
||||||
|
start, i, j: INTEGER;
|
||||||
|
BEGIN
|
||||||
|
start := 0;
|
||||||
|
(* Skip protocol to find the start of the domain *)
|
||||||
|
WHILE (start < LEN(url) - 1) & (url[start] # 0X) & ((url[start] # ':') OR (url[start+1] # '/')) DO
|
||||||
|
INC(start);
|
||||||
|
END;
|
||||||
|
|
||||||
|
(* Skip the "://" part to actually reach the start of the domain *)
|
||||||
|
INC(start, 3); (* Assuming we stopped at ':', so we skip "://" *)
|
||||||
|
|
||||||
|
i := start;
|
||||||
|
(* Now 'start' is at the beginning of the domain, find the end of the domain *)
|
||||||
|
WHILE (i < LEN(url)) & (url[i] # 0X) & (url[i] # '/') DO
|
||||||
|
INC(i);
|
||||||
|
END;
|
||||||
|
|
||||||
|
(* Copy domain from url *)
|
||||||
|
j := 0;
|
||||||
|
WHILE (start < i) & (j < LEN(domain) - 1) DO
|
||||||
|
domain[j] := url[start];
|
||||||
|
INC(j); INC(start);
|
||||||
|
END;
|
||||||
|
domain[j] := 0X; (* Ensure the domain string is null-terminated *)
|
||||||
|
END extractDomainFromUrl;
|
||||||
|
|
||||||
|
|
||||||
|
END vpkTools.
|
||||||
|
|
@ -2,6 +2,9 @@ MODULE vpkdepTree;
|
||||||
IMPORT Out, Strings,
|
IMPORT Out, Strings,
|
||||||
strUtils, List, StringList,
|
strUtils, List, StringList,
|
||||||
vpkSettings;
|
vpkSettings;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TYPE
|
TYPE
|
||||||
|
|
||||||
pstring = strUtils.pstring;
|
pstring = strUtils.pstring;
|
||||||
|
|
@ -27,19 +30,36 @@ TYPE
|
||||||
|
|
||||||
retriever- = PROCEDURE (VAR d: Tdep; VAR strlist: StringList.TStringList): LONGINT;
|
retriever- = PROCEDURE (VAR d: Tdep; VAR strlist: StringList.TStringList): LONGINT;
|
||||||
|
|
||||||
(* to be added to Tdep?
|
Remote* = POINTER TO RemoteDesc;
|
||||||
bldSeq* = POINTER TO bldSeqDesc;
|
RemoteDesc* = RECORD
|
||||||
bldSeqDesc* = RECORD
|
URI* : ARRAY 512 OF CHAR;
|
||||||
cmd*, file*: StringList.TStringList;
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
file* = POINTER to fileDesc;
|
RemoteGit* = POINTER TO RemoteGitDesc;
|
||||||
fileDesc* = RECORD
|
RemoteGitDesc* = RECORD(RemoteDesc)
|
||||||
url*, authType*, MD5*: ARRAY 512 OF CHAR;
|
hash* : ARRAY 64 OF CHAR;
|
||||||
authUsr*, authPwd*: ARRAY 64 OF CHAR;
|
branch* : ARRAY 32 OF CHAR;
|
||||||
|
tag* : ARRAY 16 OF CHAR;
|
||||||
END;
|
END;
|
||||||
files* = List.TList;
|
|
||||||
*)
|
RemoteHttp* = POINTER TO RemoteHttpDesc;
|
||||||
|
RemoteHttpDesc* = RECORD(RemoteDesc)
|
||||||
|
HttpAuth* : BOOLEAN;
|
||||||
|
files* : StringList.TStringList;
|
||||||
|
usernames* : StringList.TStringList;
|
||||||
|
passwords* : StringList.TStringList;
|
||||||
|
hashes* : StringList.TStringList;
|
||||||
|
END;
|
||||||
|
|
||||||
|
RemoteHttps* = POINTER TO RemoteHttpDesc;
|
||||||
|
RemoteHttpsDesc* = RECORD(RemoteDesc)
|
||||||
|
HttpAuth* : BOOLEAN;
|
||||||
|
files* : StringList.TStringList;
|
||||||
|
usernames* : StringList.TStringList;
|
||||||
|
passwords* : StringList.TStringList;
|
||||||
|
hashes* : StringList.TStringList;
|
||||||
|
END;
|
||||||
|
|
||||||
TdepDesc* = RECORD
|
TdepDesc* = RECORD
|
||||||
prev-, next-: Tdep;
|
prev-, next-: Tdep;
|
||||||
name- : pstring;
|
name- : pstring;
|
||||||
|
|
@ -49,12 +69,8 @@ TYPE
|
||||||
RetrieveDeps- : retriever;
|
RetrieveDeps- : retriever;
|
||||||
InstallRetriever*: PROCEDURE(VAR d: Tdep; r: retriever);
|
InstallRetriever*: PROCEDURE(VAR d: Tdep; r: retriever);
|
||||||
|
|
||||||
Type* : LONGINT; (* from vpkSettings http=0, https=1, gemini=2, git=3 *)
|
Type* : LONGINT; (* from vpkSettings: http, https, gemini, git... *)
|
||||||
(*
|
rmt* : Remote;
|
||||||
gitPath* : ARRAY 256 OF CHAR;
|
|
||||||
gitTag* : ARRAY 64 OF CHAR;
|
|
||||||
bldSequence*: bldSeq;:
|
|
||||||
*)
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE AssignDeps*(VAR d: Tdep; VAR deps: Tdeps);
|
PROCEDURE AssignDeps*(VAR d: Tdep; VAR deps: Tdeps);
|
||||||
|
|
@ -77,6 +93,7 @@ BEGIN
|
||||||
dep.AssignDeps := AssignDeps;
|
dep.AssignDeps := AssignDeps;
|
||||||
dep.InstallRetriever := InstallRetriever;
|
dep.InstallRetriever := InstallRetriever;
|
||||||
dep.RetrieveDeps := NIL;
|
dep.RetrieveDeps := NIL;
|
||||||
|
dep.rmt := NIL;
|
||||||
RETURN dep
|
RETURN dep
|
||||||
END CreateDep;
|
END CreateDep;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue