mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-06 13:02:26 +00:00
Code is written, nothing works
This commit is contained in:
parent
7a05c9b3e8
commit
344c0f0aa7
10 changed files with 176 additions and 42 deletions
|
|
@ -1,6 +1,67 @@
|
||||||
MODULE DependencyResolver;
|
MODULE DependencyResolver;
|
||||||
IMPORT
|
IMPORT JsonParser, Settings, PackageResolver, Strings, Logger;
|
||||||
JsonParser
|
|
||||||
|
CONST ArrayMaxNumber = 10000;
|
||||||
|
|
||||||
|
VAR
|
||||||
|
moduleNames: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
|
moduleJson: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
|
moduleVersions: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
|
j : LONGINT;
|
||||||
|
|
||||||
|
PROCEDURE Resolve *(jsonString: ARRAY OF CHAR);
|
||||||
|
VAR
|
||||||
|
jsonRecord, dependencies: JsonParser.JsonTypePointer;
|
||||||
|
keyFound: BOOLEAN;
|
||||||
|
packageName, version, returnedJSON: ARRAY ArrayMaxNumber OF CHAR;
|
||||||
|
keys: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
|
i, k : LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
jsonRecord := JsonParser.Create(jsonString);
|
||||||
|
|
||||||
|
keyFound := jsonRecord.GetTerminal(jsonRecord, "Package", packageName);
|
||||||
|
|
||||||
|
IF keyFound THEN
|
||||||
|
Logger.Log("Parsing package by name");
|
||||||
|
Logger.Log(packageName);
|
||||||
|
Logger.Log("------------------------");
|
||||||
|
ELSE Logger.Log("Value for the Key is not found"); RETURN; END;
|
||||||
|
|
||||||
|
dependencies := jsonRecord.GetNonTerminal(jsonRecord, "Dependencies");
|
||||||
|
|
||||||
|
dependencies.GetTerminalKeys(dependencies, keys);
|
||||||
|
|
||||||
|
FOR i := 0 TO LEN(keys) - 1 DO
|
||||||
|
keyFound := dependencies.GetTerminal(dependencies, keys[i], version);
|
||||||
|
|
||||||
|
IF ~keyFound THEN Logger.Log('ERROR while seatching key'); Logger.Log(keys[i]); END;
|
||||||
|
ASSERT(keyFound);
|
||||||
|
|
||||||
|
PackageResolver.ResolveFile(
|
||||||
|
Settings.host,
|
||||||
|
Settings.port,
|
||||||
|
keys[i],
|
||||||
|
version,
|
||||||
|
Settings.packageFileName,
|
||||||
|
returnedJSON
|
||||||
|
);
|
||||||
|
|
||||||
|
keyFound := FALSE;
|
||||||
|
FOR k := 0 TO j - 1 DO
|
||||||
|
IF Strings.Match(moduleNames[k], keys[i]) THEN
|
||||||
|
keyFound := TRUE;
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF ~keyFound THEN
|
||||||
|
COPY(keys[i], moduleNames[j]);
|
||||||
|
COPY(version, moduleVersions[j]);
|
||||||
|
COPY(returnedJSON, moduleJson[j]);
|
||||||
|
INC(j);
|
||||||
|
Resolve(returnedJSON);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
END Resolve;
|
||||||
|
|
||||||
END DependencyResolver.
|
END DependencyResolver.
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
MODULE JsonParser;
|
MODULE JsonParser;
|
||||||
IMPORT Logger, CharacterStack, Strings, Out, strutils;
|
IMPORT Logger, CharacterStack, Strings, Out, strutils;
|
||||||
CONST
|
CONST
|
||||||
ArrayMaxNumber = 100;
|
ArrayMaxNumber = 10000;
|
||||||
(* Const *)
|
(* Const *)
|
||||||
symbolBracketStart = "{";
|
symbolBracketStart = "{";
|
||||||
symbolBracketEnd = "}";
|
symbolBracketEnd = "}";
|
||||||
|
|
@ -9,7 +9,7 @@ CONST
|
||||||
quote = "'";
|
quote = "'";
|
||||||
coma = ",";
|
coma = ",";
|
||||||
TYPE
|
TYPE
|
||||||
TString = ARRAY ArrayMaxNumber OF CHAR;
|
TString* = ARRAY ArrayMaxNumber OF CHAR;
|
||||||
|
|
||||||
JsonTypePointer* = POINTER TO JsonType;
|
JsonTypePointer* = POINTER TO JsonType;
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ TYPE
|
||||||
GetNonTerminal* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): JsonTypePointer;
|
GetNonTerminal* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): JsonTypePointer;
|
||||||
HasKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): BOOLEAN;
|
HasKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): BOOLEAN;
|
||||||
TypeOfTheKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
TypeOfTheKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
||||||
GetTerminalKeys* : PROCEDURE(self : JsonTypePointer;VAR destination : ARRAY OF TString);
|
GetTerminalKeys* : PROCEDURE(self : JsonTypePointer; VAR destination : ARRAY OF TString);
|
||||||
GetNoneTerminalKeys* : PROCEDURE(self : JsonTypePointer; VAR destination : ARRAY OF TString);
|
GetNoneTerminalKeys* : PROCEDURE(self : JsonTypePointer; VAR destination : ARRAY OF TString);
|
||||||
|
|
||||||
TerminalKeys : ARRAY ArrayMaxNumber OF TString;
|
TerminalKeys : ARRAY ArrayMaxNumber OF TString;
|
||||||
|
|
@ -244,7 +244,7 @@ BEGIN
|
||||||
END Create;
|
END Create;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
NEW(jsonRecord);
|
(* NEW(jsonRecord);
|
||||||
jsonRecord := Create("{'foo': 'bar', 'test': 'test1', 'test2': {'sub': 'dub'}}");
|
jsonRecord := Create("{'foo': 'bar', 'test': 'test1', 'test2': {'sub': 'dub'}}");
|
||||||
|
|
||||||
keyFound := jsonRecord.GetTerminal(jsonRecord, "foo", testValue);
|
keyFound := jsonRecord.GetTerminal(jsonRecord, "foo", testValue);
|
||||||
|
|
@ -259,5 +259,5 @@ BEGIN
|
||||||
IF keyFound THEN
|
IF keyFound THEN
|
||||||
Logger.Log('found KEY');
|
Logger.Log('found KEY');
|
||||||
Logger.Log(testValue);
|
Logger.Log(testValue);
|
||||||
ELSE Logger.Log('Value for the Key is not found') END;
|
ELSE Logger.Log('Value for the Key is not found') END; *)
|
||||||
END JsonParser.
|
END JsonParser.
|
||||||
|
|
@ -3,27 +3,23 @@ IMPORT
|
||||||
JsonParser,
|
JsonParser,
|
||||||
FileManager,
|
FileManager,
|
||||||
http,
|
http,
|
||||||
Logger;
|
Logger,
|
||||||
|
DependencyResolver,
|
||||||
|
Settings;
|
||||||
CONST
|
CONST
|
||||||
MAXARRAYNUMBER = 1000000;
|
MAXARRAYNUMBER = 1000000;
|
||||||
PROCEDURE install*;
|
PROCEDURE install*;
|
||||||
VAR
|
VAR
|
||||||
fileData, buff, buff2: ARRAY MAXARRAYNUMBER OF CHAR;
|
jsonData: ARRAY MAXARRAYNUMBER OF CHAR;
|
||||||
success: BOOLEAN;
|
success: BOOLEAN;
|
||||||
BEGIN
|
BEGIN
|
||||||
Logger.Log("Starting install process");
|
Logger.Log("Starting install process");
|
||||||
success := FileManager.Read("VersionFile.json", fileData);
|
success := FileManager.Read(Settings.packageFileName, jsonData);
|
||||||
|
|
||||||
IF ~success THEN Logger.Log("Some ERROR occured while reading VERSIONFILE") END;
|
IF ~success THEN Logger.Log("Some ERROR occured while reading VERSIONFILE") END;
|
||||||
ASSERT(success);
|
ASSERT(success);
|
||||||
|
|
||||||
http.get("norayr.am", "/tmp/", "80", buff);
|
DependencyResolver.Resolve(jsonData);
|
||||||
http.getClean(buff, buff2);
|
|
||||||
|
|
||||||
success := FileManager.Write("index.html", buff2);
|
|
||||||
|
|
||||||
IF ~success THEN Logger.Log("Some ERROR occured while writing to test gile") END;
|
|
||||||
ASSERT(success)
|
|
||||||
END install;
|
END install;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
||||||
32
PackageResolver.Mod
Normal file
32
PackageResolver.Mod
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
MODULE PackageResolver;
|
||||||
|
IMPORT FileManager, http, Strings;
|
||||||
|
|
||||||
|
CONST ArrayMaxNumber = 10000;
|
||||||
|
|
||||||
|
PROCEDURE *Resolve(remoteURL, port, packageName, version : ARRAY OF CHAR);
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
END Resolve;
|
||||||
|
|
||||||
|
PROCEDURE ResolveFile *(host, port, packageName, version, fileName : ARRAY OF CHAR; VAR returnValue : ARRAY OF CHAR);
|
||||||
|
VAR
|
||||||
|
filePath: ARRAY ArrayMaxNumber OF CHAR;
|
||||||
|
BEGIN
|
||||||
|
filePath := "";
|
||||||
|
Strings.Append("/", filePath);
|
||||||
|
Strings.Append(packageName, filePath);
|
||||||
|
Strings.Append("/", filePath);
|
||||||
|
Strings.Append(version, filePath);
|
||||||
|
Strings.Append("/", filePath);
|
||||||
|
Strings.Append(fileName, filePath);
|
||||||
|
|
||||||
|
http.get(host, port, filePath, returnValue);
|
||||||
|
|
||||||
|
(* TODO: introduce write to file functionality *)
|
||||||
|
(* FileManager.CreateDirectory(packageName); *)
|
||||||
|
(* FileManager.Write(packageName + fileName, returnValue); *)
|
||||||
|
|
||||||
|
END ResolveFile;
|
||||||
|
|
||||||
|
|
||||||
|
END PackageResolver.
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
MODULE PackegeResolver;
|
|
||||||
IMPORT
|
|
||||||
JsonParser
|
|
||||||
BEGIN
|
|
||||||
|
|
||||||
END PackegeResolver.
|
|
||||||
6
Settings.Mod
Normal file
6
Settings.Mod
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
MODULE Settings;
|
||||||
|
CONST
|
||||||
|
packageFileName* = "VersionFile.json";
|
||||||
|
host* = "localhost";
|
||||||
|
port* = "8000";
|
||||||
|
END Settings.
|
||||||
|
|
@ -1,24 +1,18 @@
|
||||||
{
|
{
|
||||||
"Package": "Package-name",
|
'Package': 'Package-name',
|
||||||
"Author": "Author Name",
|
'Author': 'Author Name',
|
||||||
"License":"License name",
|
'License':'License name',
|
||||||
"Version": "1.0.0",
|
'Version': '1.0.0',
|
||||||
"Remote": "http://vishap.oberon.com",
|
'Remote': 'vishap.oberon.com',
|
||||||
"Files": [
|
'Port': '80',
|
||||||
"File1.Mod",
|
'Files': {
|
||||||
"File2.Mod",
|
'0': 'File1.Mod',
|
||||||
"MakeFile"
|
'1': 'File2.Mod',
|
||||||
],
|
'2': 'MakeFile'
|
||||||
"Dependencies": {
|
|
||||||
"Package-2-name": "2.5.*",
|
|
||||||
"Package-3-name": "2.*",
|
|
||||||
"Package-4-name": "2.1.4"
|
|
||||||
},
|
},
|
||||||
"Scripts": {
|
'Dependencies': {
|
||||||
"build": "make build",
|
'dep1': '1.0.0',
|
||||||
"test": "make test",
|
'dep2': '1.0.0'
|
||||||
"run": "make run",
|
|
||||||
"compile": "make compile"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
15
httpServer/dep1/1.0.0/VersionFile.json
Normal file
15
httpServer/dep1/1.0.0/VersionFile.json
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
'Package': 'Package-name',
|
||||||
|
'Author': 'Author Name',
|
||||||
|
'License':'License name',
|
||||||
|
'Version': '1.0.0',
|
||||||
|
'Remote': 'vishap.oberon.com',
|
||||||
|
'Port': '80',
|
||||||
|
'Files': {
|
||||||
|
'0': 'File1.Mod',
|
||||||
|
'1': 'File2.Mod',
|
||||||
|
'2': 'MakeFile'
|
||||||
|
},
|
||||||
|
'Dependencies': {
|
||||||
|
}
|
||||||
|
}
|
||||||
16
httpServer/dep2/1.0.0/VersionFile.json
Normal file
16
httpServer/dep2/1.0.0/VersionFile.json
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
'Package': 'Package-name',
|
||||||
|
'Author': 'Author Name',
|
||||||
|
'License':'License name',
|
||||||
|
'Version': '1.0.0',
|
||||||
|
'Remote': 'vishap.oberon.com',
|
||||||
|
'Port': '80',
|
||||||
|
'Files': {
|
||||||
|
'0': 'File1.Mod',
|
||||||
|
'1': 'File2.Mod',
|
||||||
|
'2': 'MakeFile'
|
||||||
|
},
|
||||||
|
'Dependencies': {
|
||||||
|
'dep1': '1.0.0'
|
||||||
|
}
|
||||||
|
}
|
||||||
20
makefile
20
makefile
|
|
@ -10,13 +10,17 @@ copy-version-file-to-build-dir:
|
||||||
all: http
|
all: http
|
||||||
cd builds && \
|
cd builds && \
|
||||||
$(VOC) -s \
|
$(VOC) -s \
|
||||||
|
../Settings.Mod \
|
||||||
../time.Mod \
|
../time.Mod \
|
||||||
../logger.Mod \
|
../logger.Mod \
|
||||||
../diaspora2hugo/src/lists/Sys.Mod \
|
../diaspora2hugo/src/lists/Sys.Mod \
|
||||||
../diaspora2hugo/src/lists/List.Mod \
|
../diaspora2hugo/src/lists/List.Mod \
|
||||||
|
../diaspora2hugo/src/lists/strutils.Mod \
|
||||||
../CharacterStack.Mod \
|
../CharacterStack.Mod \
|
||||||
../JsonParser.Mod \
|
../JsonParser.Mod \
|
||||||
../FileManager.Mod \
|
../FileManager.Mod \
|
||||||
|
../PackageResolver.Mod \
|
||||||
|
../DependencyResolver.Mod \
|
||||||
../PackageFileParser.Mod \
|
../PackageFileParser.Mod \
|
||||||
../opium.Mod -m
|
../opium.Mod -m
|
||||||
|
|
||||||
|
|
@ -36,3 +40,19 @@ http: clean
|
||||||
../netdb.Mod \
|
../netdb.Mod \
|
||||||
../Internet.Mod \
|
../Internet.Mod \
|
||||||
../http.Mod
|
../http.Mod
|
||||||
|
|
||||||
|
json:
|
||||||
|
cd builds && \
|
||||||
|
$(VOC) -s \
|
||||||
|
../time.Mod \
|
||||||
|
../logger.Mod \
|
||||||
|
../diaspora2hugo/src/lists/Sys.Mod \
|
||||||
|
../diaspora2hugo/src/lists/List.Mod \
|
||||||
|
../diaspora2hugo/src/lists/strutils.Mod \
|
||||||
|
../CharacterStack.Mod \
|
||||||
|
../JsonParser.Mod
|
||||||
|
|
||||||
|
|
||||||
|
run-http-server:
|
||||||
|
cd httpServer && \
|
||||||
|
python -m SimpleHTTPServer
|
||||||
Loading…
Add table
Add a link
Reference in a new issue