Skip to content
This repository was archived by the owner on Feb 19, 2024. It is now read-only.

Commit 59c0f8c

Browse files
committed
dont know what i added
1 parent 5634662 commit 59c0f8c

File tree

10 files changed

+117
-70
lines changed

10 files changed

+117
-70
lines changed

PackageManager.cs

Lines changed: 20 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -30,75 +30,19 @@ public static void InstallPackage(string packageName, string packageVersion, Uri
3030
if (packageVersion == "@latest")
3131
{
3232
// Fetch latest version
33-
string u = $"{repository}package/{packageName}/latest/version";
34-
Console.WriteLine($"Fetching package's latest version from {u}");
35-
36-
HttpResponseMessage r;
33+
string u = $"{repository}package/{packageName}/details";
34+
Console.WriteLine($"Fetching package's latest version from {u}");
3735

38-
try
39-
{
40-
// Try GET
41-
r = httpClient.GetAsync(u).GetAwaiter().GetResult();
42-
Console.WriteLine($"Recieved status code {r.StatusCode} ({(r.IsSuccessStatusCode ? "Success" : "Failure")})");
43-
}
44-
catch (HttpRequestException e)
45-
{
46-
Console.WriteLine($"Fatal HTTP error: {e.Message}, try again later!".Pastel(ConsoleColor.Red));
47-
Environment.Exit(0);
48-
return;
49-
}
50-
51-
// Check if successful
52-
if (!r.IsSuccessStatusCode)
53-
{
54-
// Get result
55-
string jsonRes = r.Content.ReadAsStringAsync().GetAwaiter().GetResult();
56-
57-
// Get message
58-
PackageManagerErrorResult? errRes = JsonConvert.DeserializeObject<PackageManagerErrorResult>(jsonRes);
59-
if (errRes == null) errRes.Message = "Unknown error";
60-
61-
Console.WriteLine($"Error[{(int)r.StatusCode}] occurred whilst installing package: {errRes.Message}".Pastel(ConsoleColor.Red));
62-
Environment.Exit(0);
63-
}
64-
65-
string returnedContent = r.Content.ReadAsStringAsync().GetAwaiter().GetResult();
36+
string returnedContent = RepositoryHTTP.Get(u, "installing package");
37+
ZephyrPackageInformation packageInfo = JsonConvert.DeserializeObject<ZephyrPackageInformation>(returnedContent);
6638

6739
// Success
68-
Console.WriteLine($"Latest version is {returnedContent}");
69-
packageVersion = returnedContent;
40+
Console.WriteLine($"Latest version is {packageInfo.LatestVersion}");
41+
packageVersion = packageInfo.LatestVersion;
7042
}
7143

7244
string url = $"{repository}package/{packageName}/{packageVersion}/download";
73-
Console.WriteLine($"GET {url}");
74-
75-
HttpResponseMessage res;
76-
77-
try
78-
{
79-
// Try GET
80-
res = httpClient.GetAsync(url).GetAwaiter().GetResult();
81-
Console.WriteLine($"Recieved status code {res.StatusCode} ({(res.IsSuccessStatusCode ? "Success" : "Failure")})");
82-
} catch (HttpRequestException e)
83-
{
84-
Console.WriteLine($"Fatal HTTP error: {e.Message}, try again later!".Pastel(ConsoleColor.Red));
85-
Environment.Exit(0);
86-
return;
87-
}
88-
89-
// Check if successful
90-
if (!res.IsSuccessStatusCode)
91-
{
92-
// Get result
93-
string jsonRes = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
94-
95-
// Get message
96-
PackageManagerErrorResult? errRes = JsonConvert.DeserializeObject<PackageManagerErrorResult>(jsonRes);
97-
if (errRes == null) errRes.Message = "Unknown error";
98-
99-
Console.WriteLine($"Error[{(int)res.StatusCode}] occurred whilst installing package: {errRes.Message}".Pastel(ConsoleColor.Red));
100-
Environment.Exit(0);
101-
}
45+
HttpResponseMessage packageData = RepositoryHTTP.Get(url, "installing package", true);
10246

10347
string zephyrPackageFolder = Path.Combine(package.Location, "zephyr_packages");
10448
string packageFolder = Path.Combine(zephyrPackageFolder, packageName);
@@ -129,7 +73,7 @@ public static void InstallPackage(string packageName, string packageVersion, Uri
12973
string packageZipFile = Path.Combine(packageTempFolder, "temp.zip");
13074
Console.WriteLine($"Saving downloaded ZIP to {packageZipFile}");
13175

132-
using (Stream stream = res.Content.ReadAsStream())
76+
using (Stream stream = packageData.Content.ReadAsStream())
13377
{
13478
using (Stream zip = File.OpenWrite(packageZipFile))
13579
{
@@ -281,4 +225,16 @@ internal class ZephyrPackageWithLocation
281225
public ZephyrPackage Package { get; set; } = new ZephyrPackage();
282226
public string Location { get; set; } = "";
283227
}
228+
229+
internal class ZephyrPackageInformation
230+
{
231+
[JsonProperty("name")]
232+
public string Name { get; set; } = "";
233+
234+
[JsonProperty("author_id")]
235+
public long AuthorID { get; set; } = 0;
236+
237+
[JsonProperty("latest_version")]
238+
public string LatestVersion { get; set; } = "";
239+
}
284240
}

Parser/Parser.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,9 @@ private AST.Expression ParsePrimaryExpression()
10721072
Value = stringToken.Value,
10731073
Location = stringToken.Location,
10741074
};
1075+
1076+
case TokenType.Function:
1077+
return ParseFunctionDeclaration();
10751078
case TokenType.OpenSquare:
10761079
Token openSquareToken = Eat();
10771080
List<Expression> arr = new List<Expression>();

RepositoryHTTP.cs

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System;
44
using System.Collections.Generic;
55
using System.Linq;
6+
using System.Net.Http;
67
using System.Text;
78
using System.Threading.Tasks;
89

@@ -50,5 +51,91 @@ public static void Post(string url, object data, string action = "posting")
5051
Environment.Exit(0);
5152
}
5253
}
54+
55+
public static string Get(string url, string action = "getting")
56+
{
57+
HttpClient httpClient = new();
58+
59+
HttpResponseMessage res;
60+
string result = "";
61+
62+
try
63+
{
64+
// Try GET
65+
res = httpClient.GetAsync(url).GetAwaiter().GetResult();
66+
result = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
67+
Console.WriteLine($"Recieved status code {res.StatusCode} ({(res.IsSuccessStatusCode ? "Success" : "Failure")})");
68+
69+
// Check if successful
70+
if (!res.IsSuccessStatusCode)
71+
{
72+
// Get result
73+
string jsonRes = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
74+
75+
// Get message
76+
PackageManagerErrorResult? errRes = JsonConvert.DeserializeObject<PackageManagerErrorResult>(jsonRes);
77+
if (errRes == null) errRes.Message = "Unknown error";
78+
79+
Console.WriteLine($"Error[{(int)res.StatusCode}] occurred whilst {action}: {errRes.Message}".Pastel(ConsoleColor.Red));
80+
Environment.Exit(0);
81+
}
82+
}
83+
catch (HttpRequestException e)
84+
{
85+
Console.WriteLine($"Fatal HTTP error: {e.Message}, try again later!".Pastel(ConsoleColor.Red));
86+
Environment.Exit(0);
87+
return "";
88+
}
89+
catch (JsonReaderException e)
90+
{
91+
Console.WriteLine($"Failed to read response ({e.Message})".Pastel(ConsoleColor.Red));
92+
Console.WriteLine($"{result}".Pastel(ConsoleColor.Red));
93+
Environment.Exit(0);
94+
return "";
95+
}
96+
97+
return result;
98+
}
99+
100+
public static HttpResponseMessage Get(string url, string action = "getting", bool returnRes = true)
101+
{
102+
HttpClient httpClient = new();
103+
104+
HttpResponseMessage res;
105+
106+
try
107+
{
108+
// Try GET
109+
res = httpClient.GetAsync(url).GetAwaiter().GetResult();
110+
Console.WriteLine($"Recieved status code {res.StatusCode} ({(res.IsSuccessStatusCode ? "Success" : "Failure")})");
111+
112+
// Check if successful
113+
if (!res.IsSuccessStatusCode)
114+
{
115+
string jsonRes = res.Content.ReadAsStringAsync().GetAwaiter().GetResult();
116+
117+
// Get message
118+
PackageManagerErrorResult? errRes = JsonConvert.DeserializeObject<PackageManagerErrorResult>(jsonRes);
119+
if (errRes == null) errRes.Message = "Unknown error";
120+
121+
Console.WriteLine($"Error[{(int)res.StatusCode}] occurred whilst {action}: {errRes.Message}".Pastel(ConsoleColor.Red));
122+
Environment.Exit(0);
123+
}
124+
}
125+
catch (HttpRequestException e)
126+
{
127+
Console.WriteLine($"Fatal HTTP error: {e.Message}, try again later!".Pastel(ConsoleColor.Red));
128+
Environment.Exit(0);
129+
return null;
130+
}
131+
catch (JsonReaderException e)
132+
{
133+
Console.WriteLine($"Failed to read response ({e.Message})".Pastel(ConsoleColor.Red));
134+
Environment.Exit(0);
135+
return null;
136+
}
137+
138+
return res;
139+
}
53140
}
54141
}

Runtime/NativeFunctions/OsPkg.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Zephyr.Runtime.NativeFunctions
1010
{
1111
internal partial class Packages
1212
{
13-
public static NonDefaultPackage OsPkg = new NonDefaultPackage("system", new
13+
public static NonDefaultPackage OsPkg = new NonDefaultPackage("System", new
1414
{
1515
getOSName = Helpers.CreateNativeFunction((args, env, expr) =>
1616
{

Runtime/NativeFunctions/RandomPkg.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Zephyr.Runtime.NativeFunctions
1111
internal partial class NativeFunctions
1212
{
1313

14-
public static Package RandomPkg = new Package("random", new
14+
public static Package RandomPkg = new Package("Random", new
1515
{
1616
value = Helpers.CreateNativeFunction((args, env, expr) =>
1717
{

Runtime/NativeFunctions/Strings.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ internal partial class NativeFunctions
6969

7070
return Helpers.CreateString(((StringValue)args[0]).Value.ToUpper());
7171
}, "toUpper"),
72-
7372
fromCharCode = Helpers.CreateNativeFunction((args, env, expr) =>
7473
{
7574
return Helpers.CreateString(((char)((IntegerValue)args[0]).Value).ToString());

Runtime/NativeFunctions/Threading.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Zephyr.Runtime.NativeFunctions
1313
{
1414
internal partial class NativeFunctions
1515
{
16-
public static Package Threading = new Package("threading", new
16+
public static Package Threading = new Package("Threading", new
1717
{
1818
sleep = Helpers.CreateNativeFunction((args, env, expr) =>
1919
{

Runtime/NativeFunctions/Timers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Zephyr.Runtime.NativeFunctions
1010
{
1111
internal partial class NativeFunctions
1212
{
13-
public static Package Timers = new Package("timers", new
13+
public static Package Timers = new Package("Timers", new
1414
{
1515
start = Helpers.CreateNativeFunction((args, env, expr) =>
1616
{

Runtime/NativeFunctions/WindowsPackage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ internal partial class Packages
2626
[DllImport("user32.dll")]
2727
internal static extern bool SetClipboardData(uint uFormat, IntPtr data);
2828

29-
public static NonDefaultPackage WinformsPackage = new NonDefaultPackage("windows", new
29+
public static NonDefaultPackage WinformsPackage = new NonDefaultPackage("Windows", new
3030
{
3131
messageBox = new
3232
{

readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
Zephyr is a general purpose, interpreted language written in C#.
44

5+
Using VSCode? Try the badly made VSCode syntax highlighting [VSCode Syntax Highlighter](https://github.com/itevie/zephyr-vscode-syntax-highlighting)
6+
57
## CLI
68
Zephyr has many CLI features built-in for running projects, creating new projects and an in-built package manager.
79

0 commit comments

Comments
 (0)