Code is written, nothing works

This commit is contained in:
Ruben Shekspir 2019-05-09 22:43:15 +04:00
parent 7a05c9b3e8
commit 344c0f0aa7
10 changed files with 176 additions and 42 deletions

View file

@ -1,6 +1,67 @@
MODULE DependencyResolver;
IMPORT
JsonParser
IMPORT JsonParser, Settings, PackageResolver, Strings, Logger;
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
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.

View file

@ -1,7 +1,7 @@
MODULE JsonParser;
IMPORT Logger, CharacterStack, Strings, Out, strutils;
CONST
ArrayMaxNumber = 100;
ArrayMaxNumber = 10000;
(* Const *)
symbolBracketStart = "{";
symbolBracketEnd = "}";
@ -9,7 +9,7 @@ CONST
quote = "'";
coma = ",";
TYPE
TString = ARRAY ArrayMaxNumber OF CHAR;
TString* = ARRAY ArrayMaxNumber OF CHAR;
JsonTypePointer* = POINTER TO JsonType;
@ -18,7 +18,7 @@ TYPE
GetNonTerminal* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): JsonTypePointer;
HasKey* : PROCEDURE(self : JsonTypePointer; key : ARRAY OF CHAR): BOOLEAN;
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);
TerminalKeys : ARRAY ArrayMaxNumber OF TString;
@ -244,7 +244,7 @@ BEGIN
END Create;
BEGIN
NEW(jsonRecord);
(* NEW(jsonRecord);
jsonRecord := Create("{'foo': 'bar', 'test': 'test1', 'test2': {'sub': 'dub'}}");
keyFound := jsonRecord.GetTerminal(jsonRecord, "foo", testValue);
@ -259,5 +259,5 @@ BEGIN
IF keyFound THEN
Logger.Log('found KEY');
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.

View file

@ -3,27 +3,23 @@ IMPORT
JsonParser,
FileManager,
http,
Logger;
Logger,
DependencyResolver,
Settings;
CONST
MAXARRAYNUMBER = 1000000;
PROCEDURE install*;
VAR
fileData, buff, buff2: ARRAY MAXARRAYNUMBER OF CHAR;
jsonData: ARRAY MAXARRAYNUMBER OF CHAR;
success: BOOLEAN;
BEGIN
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;
ASSERT(success);
http.get("norayr.am", "/tmp/", "80", buff);
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)
DependencyResolver.Resolve(jsonData);
END install;
BEGIN

32
PackageResolver.Mod Normal file
View 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.

View file

@ -1,6 +0,0 @@
MODULE PackegeResolver;
IMPORT
JsonParser
BEGIN
END PackegeResolver.

6
Settings.Mod Normal file
View file

@ -0,0 +1,6 @@
MODULE Settings;
CONST
packageFileName* = "VersionFile.json";
host* = "localhost";
port* = "8000";
END Settings.

View file

@ -1,24 +1,18 @@
{
"Package": "Package-name",
"Author": "Author Name",
"License":"License name",
"Version": "1.0.0",
"Remote": "http://vishap.oberon.com",
"Files": [
"File1.Mod",
"File2.Mod",
"MakeFile"
],
"Dependencies": {
"Package-2-name": "2.5.*",
"Package-3-name": "2.*",
"Package-4-name": "2.1.4"
'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'
},
"Scripts": {
"build": "make build",
"test": "make test",
"run": "make run",
"compile": "make compile"
'Dependencies': {
'dep1': '1.0.0',
'dep2': '1.0.0'
}
}

View 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': {
}
}

View 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'
}
}

View file

@ -10,13 +10,17 @@ copy-version-file-to-build-dir:
all: http
cd builds && \
$(VOC) -s \
../Settings.Mod \
../time.Mod \
../logger.Mod \
../diaspora2hugo/src/lists/Sys.Mod \
../diaspora2hugo/src/lists/List.Mod \
../diaspora2hugo/src/lists/strutils.Mod \
../CharacterStack.Mod \
../JsonParser.Mod \
../FileManager.Mod \
../PackageResolver.Mod \
../DependencyResolver.Mod \
../PackageFileParser.Mod \
../opium.Mod -m
@ -36,3 +40,19 @@ http: clean
../netdb.Mod \
../Internet.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