Files moved to vpkConf

This commit is contained in:
mane 2020-05-05 22:38:06 +04:00
parent bea2422ac1
commit 2be7d9497e
2 changed files with 89 additions and 74 deletions

View file

@ -1,10 +1,10 @@
MODULE Vipack; MODULE Vipack;
IMPORT vpkFileManager,vpkJsonParser,vpkGit, vpkConf, vpkLogger, vpkPackageFileParser, Texts, Strings, In, Platform, Oberon, Out, Files, vpkUserDetails; IMPORT vpkFileManager,vpkJsonParser,vpkGit, vpkConf, vpkLogger, vpkPackageFileParser, Texts, Strings, In, Platform, Oberon, Out, vpkUserDetails;
PROCEDURE main(); PROCEDURE main();
CONST confFileName = "vipackConf.json"; CONST confFileName = "vipackConf.json";
CONST syncDirName = "vipackTree/"; CONST syncDirName = "vipackTree";
CONST quote = '"'; CONST quote = '"';
CONST startBracket = "{"; CONST startBracket = "{";
CONST endBracket = "}"; CONST endBracket = "}";
@ -12,17 +12,18 @@ CONST endBracket = "}";
VAR user, str: ARRAY 32 OF CHAR; VAR user, str: ARRAY 32 OF CHAR;
vpkDirPath, treePath, confPath, jsonString : ARRAY 120 OF CHAR; vpkDirPath, treePath, confPath, jsonString : ARRAY 120 OF CHAR;
i : INTEGER; i : INTEGER;
f : Files.File;
r : Files.Rider;
ch : CHAR; ch : CHAR;
S: Texts.Scanner; S: Texts.Scanner;
jsonData,string,defaultUrl,gitUrl,project,command, jsonPathLine : ARRAY 500 OF CHAR; jsonData,string,defaultUrl,gitUrl,project,command, jsonPathLine : ARRAY 500 OF CHAR;
success: BOOLEAN; success: BOOLEAN;
jsonRecord: vpkJsonParser.JsonTypePointer; jsonRecord: vpkJsonParser.JsonTypePointer;
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("vipackConf.json path -> $HOME/.vipack/vipackConf.son"); Out.Ln;
Out.String("vipackTree path -> $HOME/.vipack/vipackTree")
END help; END help;
@ -36,84 +37,83 @@ defaultUrl := "https://github.com/vishaps/vipackTree";
command := S.s; command := S.s;
IF ~(Platform.getEnv("HOME", vpkDirPath)) THEN IF Strings.Match(command, "") OR Strings.Match(command, "help")THEN
Out.String("HOME variable is not found"); Out.Ln;
END;
(*HELP*)
IF Strings.Match(command, "") OR Strings.Match(command, "--help")THEN
help; help;
END;
Strings.Append("/.vipack/",vpkDirPath);
confPath := vpkDirPath;
treePath := vpkDirPath;
(* Checking if ~/.vipack directory already exists *)
IF vpkConf.makeDir(vpkDirPath) THEN
Out.String("Creating directory "); Out.String(vpkDirPath);Out.Ln;
ELSE Out.String(vpkDirPath); Out.String(" already exists or path is wrong");Out.Ln;
END;
(* Checking if vipack.conf already exists *)
Strings.Append(confFileName,confPath);
IF ~(vpkConf.confExists(confPath)) THEN
Out.String("Creating the configuration file "); Out.String(confPath);Out.Ln;
vpkConf.makeConf(confPath,f);
Files.Set(r, f, 0);
Strings.Append(startBracket, jsonPathLine);
Strings.Append('"path" : ', jsonPathLine);
Strings.Append(quote, jsonPathLine);
Strings.Append(defaultUrl,jsonPathLine);
Strings.Append(quote, jsonPathLine);
Strings.Append(endBracket,jsonPathLine);
Files.WriteString(r,jsonPathLine);
Files.Close(f);
ELSE ELSE
Out.String("File already exists");Out.Ln;
END;
IF ~(vpkConf.varCheck("HOME", vpkDirPath)) THEN
Out.String("HOME variable is not found"); Out.Ln;
END;
IF command = "sync" THEN Strings.Append("/.vipack/",vpkDirPath);
confPath := vpkDirPath;
treePath := vpkDirPath; treePath := vpkDirPath;
Strings.Append(syncDirName, treePath);
Out.String("*****************************************"); Out.Ln;
Out.String("TreePath = "); Out.String(vpkDirPath);
(* Check tree directory if doesn't exist create*) (* Checking if ~/.vipack directory already exists *)
IF vpkConf.makeDir(treePath) THEN IF vpkConf.makeDir(vpkDirPath) THEN
Out.String("Creating "); Out.String(treePath); Out.String("for syncing");Out.Ln; Out.String("Creating directory "); Out.String(vpkDirPath);Out.Ln;
ELSE Out.String("Some error occured or directory already exist"); ELSE Out.String(vpkDirPath); Out.String(" already exists or path is wrong");Out.Ln;
END; END;
(* Syncing *)
success := vpkFileManager.Read(confPath,jsonData); (* Checking if vipack.conf already exists *)
jsonRecord := vpkJsonParser.Create(jsonData); Strings.Append(confFileName,confPath);
success := vpkJsonParser.GetTerminal(jsonRecord,"path", jsonString);
Out.String("URL = "); IF ~(vpkConf.confExists(confPath)) THEN
Out.String(jsonString);Out.Ln; Out.String("Creating the configuration file "); Out.String(confPath);Out.Ln;
gitUrl := jsonString; jsonPathLine := "";
string := gitUrl; vpkConf.makeFile(confPath);
Strings.Delete(string,19,Strings.Length(string)-17); Strings.Append(startBracket, jsonPathLine);
Out.String(string);Out.Ln; Strings.Append('"path" : ', jsonPathLine);
(* Checking the URL of vipackConf.json path key *) Strings.Append(quote, jsonPathLine);
IF Strings.Match(string,"https://github.com/") OR Strings.Match(string,"git://github.com/") THEN Strings.Append(defaultUrl,jsonPathLine);
Out.String("YES"); Out.Ln; Strings.Append(quote, jsonPathLine);
vpkGit.pull(gitUrl,treePath); Strings.Append(endBracket,jsonPathLine);
vpkConf.writeInFile(confPath,jsonPathLine,0);
ELSE
Out.String("File already exists");Out.Ln;
END;
IF command = "sync" THEN
treePath := vpkDirPath;
Strings.Append(syncDirName, treePath);
Strings.Append("/",treePath);
Out.String("*****************************************"); Out.Ln;
Out.String("TreePath = "); Out.String(treePath);
(* Check tree directory if doesn't exist create*)
IF vpkConf.makeDir(treePath) THEN
Out.String("Creating "); Out.String(treePath); Out.String("for syncing");Out.Ln;
ELSE Out.String("Some error occured or directory already exist");
END;
(* Syncing *)
success := vpkFileManager.Read(confPath,jsonData);
jsonRecord := vpkJsonParser.Create(jsonData);
success := vpkJsonParser.GetTerminal(jsonRecord,"path", jsonString);
Out.String("URL = ");
Out.String(jsonString);Out.Ln;
gitUrl := jsonString;
string := gitUrl;
Strings.Delete(string,19,Strings.Length(string)-17);
Out.String(string);Out.Ln;
(* Checking the URL of vipackConf.json path key *)
IF Strings.Match(string,"https://github.com/") OR Strings.Match(string,"git://github.com/") THEN
Out.String("YES"); Out.Ln;
vpkGit.pull(gitUrl,treePath);
END;
END; END;
END;
IF command = "install" THEN IF command = "install" THEN
Texts.Scan(S); Texts.Scan(S);
project := S.s; project := S.s;
Out.String(project);Out.Ln; Out.String(project);Out.Ln;
vpkPackageFileParser.install(); vpkPackageFileParser.install();
END;
END; END;
END main; END main;

View file

@ -1,5 +1,5 @@
MODULE vpkConf; MODULE vpkConf;
IMPORT Files, vpkFsHelper; IMPORT Out,Files, vpkFsHelper, Platform;
PROCEDURE confExists*(VAR confFile: ARRAY OF CHAR ):BOOLEAN; PROCEDURE confExists*(VAR confFile: ARRAY OF CHAR ):BOOLEAN;
BEGIN BEGIN
@ -9,19 +9,34 @@ BEGIN
END confExists; END confExists;
PROCEDURE makeConf*(VAR confFilePath: ARRAY OF CHAR;VAR f:Files.File); PROCEDURE makeFile*(VAR confFilePath: ARRAY OF CHAR);
VAR f : Files.File;
BEGIN BEGIN
f := Files.New(confFilePath); f := Files.New(confFilePath);
Files.Register(f); Files.Register(f);
END makeConf; END makeFile;
PROCEDURE makeDir*(VAR confDirPath: ARRAY OF CHAR):BOOLEAN; PROCEDURE makeDir*(VAR confDirPath: ARRAY OF CHAR):BOOLEAN;
BEGIN BEGIN
RETURN vpkFsHelper.mkDir(confDirPath); RETURN vpkFsHelper.mkDir(confDirPath);
END makeDir; END makeDir;
PROCEDURE varCheck*(variable : ARRAY OF CHAR;VAR value : ARRAY OF CHAR): BOOLEAN;
BEGIN
RETURN Platform.getEnv(variable,value);
END varCheck;
PROCEDURE writeInFile*(VAR pathToFile : ARRAY OF CHAR;VAR text : ARRAY OF CHAR; posRider : INTEGER);
VAR f : Files.File;
r : Files.Rider;
BEGIN
f := Files.Old(pathToFile);
Files.Set(r,f,posRider);
Files.WriteString(r,text);
Files.Close(f);
END writeInFile;
BEGIN BEGIN