diff --git a/makefile b/makefile index 382389f..a58ab0f 100644 --- a/makefile +++ b/makefile @@ -17,10 +17,10 @@ all: deps #git submodule update mkdir -p $(build_dir_path) cd $(build_dir_path) - gmake -f $(mkfile_dir_path)/dps/lists/makefile BUILD=$(build_dir_path) + gmake -f $(mkfile_dir_path)/dps/lists/Makefile BUILD=$(build_dir_path) gmake -f $(mkfile_dir_path)/dps/Internet/makefile BUILD=$(build_dir_path) - gmake -f $(mkfile_dir_path)/dps/time/makefile BUILD=$(build_dir_path) - gmake -f $(mkfile_dir_path)/dps/opts/makefile BUILD=$(build_dir_path) + gmake -f $(mkfile_dir_path)/dps/time/Makefile BUILD=$(build_dir_path) + gmake -f $(mkfile_dir_path)/dps/opts/Makefile BUILD=$(build_dir_path) cd $(build_dir_path) && \ $(VOC) -s \ ../src/vpkSettings.Mod \ diff --git a/src/unix/vpkGit.Mod b/src/unix/vpkGit.Mod index f3937f7..59be997 100644 --- a/src/unix/vpkGit.Mod +++ b/src/unix/vpkGit.Mod @@ -1,7 +1,7 @@ MODULE vpkGit; IMPORT Out, Strings, Platform, vpkEnv; -PROCEDURE pull*(url : ARRAY OF CHAR; dst : ARRAY OF CHAR); +PROCEDURE pull*(url : ARRAY OF CHAR; dst : ARRAY OF CHAR; branch: ARRAY OF CHAR); VAR i : INTEGER; cmd : ARRAY 2048 OF CHAR; BEGIN @@ -13,20 +13,22 @@ BEGIN Strings.Append(dst, cmd); Strings.Append(" pull ", cmd); Strings.Append(url, cmd); + Strings.Append(" ", cmd); + Strings.Append(branch, cmd); i := Platform.System(cmd); END pull; -PROCEDURE syncTree*(url: ARRAY OF CHAR); +PROCEDURE syncTree*(url, branch: ARRAY OF CHAR); VAR tmp: ARRAY 256 OF CHAR; BEGIN vpkEnv.getTreeDir(tmp); - pull(url, tmp); + pull(url, tmp, branch); END syncTree; -PROCEDURE fetchRepo*(url: ARRAY OF CHAR; dst: ARRAY OF CHAR); +PROCEDURE fetchRepo*(url: ARRAY OF CHAR; dst, branch: ARRAY OF CHAR); BEGIN - pull(url, dst); + pull(url, dst, branch); END fetchRepo; END vpkGit. diff --git a/src/vpkConf.Mod b/src/vpkConf.Mod index 9f4566a..26d7014 100644 --- a/src/vpkConf.Mod +++ b/src/vpkConf.Mod @@ -53,6 +53,7 @@ VAR jsonRecord : vpkJsonParser.JsonTypePointer; b: BOOLEAN; treeTyp: ARRAY 8 OF CHAR; + branch: ARRAY 128 OF CHAR; BEGIN f := vpkEnv.getConfFile(); Files.Set(r, f, 0); @@ -66,6 +67,8 @@ BEGIN IF ~b THEN Out.String("unable to read "); Out.String (vpkSettings.rmtTypKey); Out.String(" from json"); Out.Ln; HALT(1); END; IF treeTyp = vpkSettings.rmtTypGitVal THEN tree.typ := vpkSettings.git; + b := vpkJsonParser.GetTerminal(jsonRecord, vpkSettings.rmtTreeBranchKey, branch); + IF ~b THEN COPY("", tree.branch) ELSE COPY(branch, tree.branch) END; ELSIF treeTyp = vpkSettings.rmtTypHttpVal THEN tree.typ := vpkSettings.http ELSE diff --git a/src/vpkInstaller.Mod b/src/vpkInstaller.Mod index 0c29d3f..85bc492 100644 --- a/src/vpkInstaller.Mod +++ b/src/vpkInstaller.Mod @@ -44,7 +44,7 @@ VAR depTree: vpkdepTree.TdepTree; dep: vpkdepTree.Tdep; i: LONGINT; - URI: ARRAY 128 OF CHAR; + URI, branch: ARRAY 128 OF CHAR; typ: ARRAY 16 OF CHAR; BEGIN depTree := resolve(package); @@ -52,8 +52,8 @@ BEGIN i := 0; REPEAT dep := vpkdepTree.Get(depTree, i); - vpkJsonDepRetriever.getURIandType(dep, URI, typ); - vpkSyncer.fetch(dep.name^, URI, typ, prefix); + vpkJsonDepRetriever.getURIandType(dep, URI, typ, branch); + vpkSyncer.fetch(dep.name^, URI, typ, prefix, branch); INC(i) UNTIL i = depTree.Count; END fetch; @@ -63,7 +63,7 @@ VAR depTree: vpkdepTree.TdepTree; dep: vpkdepTree.Tdep; i, j: LONGINT; - URI: ARRAY 128 OF CHAR; + URI, branch: ARRAY 128 OF CHAR; typ: ARRAY 16 OF CHAR; keys, values: StringList.TStringList; k, v: StringList.pstring; @@ -81,8 +81,8 @@ BEGIN i := 0; REPEAT dep := vpkdepTree.Get(depTree, i); - vpkJsonDepRetriever.getURIandType(dep, URI, typ); - vpkSyncer.fetch(dep.name^, URI, typ, prefix); + vpkJsonDepRetriever.getURIandType(dep, URI, typ, branch); + vpkSyncer.fetch(dep.name^, URI, typ, prefix, branch); b := FALSE; b := vpkJsonDepRetriever.getBuildInfo(dep, keys, values); IF b THEN diff --git a/src/vpkJsonDepRetriever.Mod b/src/vpkJsonDepRetriever.Mod index c3699fc..6570926 100644 --- a/src/vpkJsonDepRetriever.Mod +++ b/src/vpkJsonDepRetriever.Mod @@ -28,7 +28,7 @@ BEGIN END; END getBuildInfo; -PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR); +PROCEDURE getURIandType*(VAR d: vpkdepTree.Tdep; VAR URI: ARRAY OF CHAR; VAR type: ARRAY OF CHAR; VAR branch: ARRAY OF CHAR); VAR jsonRecord, remote: vpkJsonParser.JsonTypePointer; p: strutils.pstring; @@ -51,6 +51,7 @@ BEGIN v := values.GetString(values, i); IF k^ = vpkSettings.rmtTypKey THEN COPY(v^, type) END; IF k^ = vpkSettings.rmtTreeKey THEN COPY(v^, URI) END; + IF k^ = vpkSettings.rmtTreeBranchKey THEN COPY(v^, branch) END; INC(i); UNTIL i = keys.Count - 1; ELSE diff --git a/src/vpkSettings.Mod b/src/vpkSettings.Mod index 1bce707..9042616 100644 --- a/src/vpkSettings.Mod +++ b/src/vpkSettings.Mod @@ -10,18 +10,19 @@ CONST graphName* = "deps.dot"; - rmtType* = "Remote"; - rmtTypKey* = "type"; - rmtTypGitVal* = "git"; - rmtTypHttpVal* = "http"; - rmtTypHttpsVal* = "https"; - rmtTypGemiVal* = "gemini"; - rmtTreeKey* = "path"; - bldType* = "Build"; - (*defTreeVal* = "https://github.com/vishaps/vipackTree";*) - defTreeVal* = "git@github.com:vishaps/vipackTree"; - confTreeVal* = defTreeVal; - defTypVal* = rmtTypGitVal; + rmtType* = "Remote"; + rmtTypKey* = "type"; + rmtTypGitVal* = "git"; + rmtTypHttpVal* = "http"; + rmtTypHttpsVal* = "https"; + rmtTypGemiVal* = "gemini"; + rmtTreeKey* = "path"; + rmtTreeBranchKey* = "branch"; + bldType* = "Build"; + (*defTreeVal* = "https://github.com/vishaps/vipackTree";*) + defTreeVal* = "git@github.com:vishaps/vipackTree"; + confTreeVal* = defTreeVal; + defTypVal* = rmtTypGitVal; pkgTypKey* = "Package"; depTypKey* = "Dependencies"; @@ -38,7 +39,8 @@ CONST TYPE tree* = RECORD url* : ARRAY 128 OF CHAR; - typ* : SHORTINT + typ* : SHORTINT; + branch*: ARRAY 128 OF CHAR; END; diff --git a/src/vpkSyncer.Mod b/src/vpkSyncer.Mod index 4949c6e..f975d83 100644 --- a/src/vpkSyncer.Mod +++ b/src/vpkSyncer.Mod @@ -16,13 +16,13 @@ BEGIN (* Syncing *) vpkConf.getConfigTreeVal(tree); IF tree.typ = vpkSettings.git THEN - vpkGit.syncTree(tree.url) + vpkGit.syncTree(tree.url, tree.branch) ELSE Out.String("TODO: not a git url"); Out.Ln END; END sync; -PROCEDURE fetch*(name, url, typ, dst: ARRAY OF CHAR); +PROCEDURE fetch*(name, url, typ, dst, branch: ARRAY OF CHAR); BEGIN IF dst = "" THEN vpkEnv.mkdefPkgDirPath(name, dst); @@ -31,7 +31,7 @@ BEGIN END; IF typ = vpkSettings.rmtTypGitVal THEN - vpkGit.fetchRepo(url, dst); + vpkGit.fetchRepo(url, dst, branch); ELSE Out.String("TODO: not a git url"); Out.Ln END