diff --git a/MinecraftDiscordBot.sln b/MinecraftDiscordBot.sln index 7343fb9..b7f21a3 100644 --- a/MinecraftDiscordBot.sln +++ b/MinecraftDiscordBot.sln @@ -6,6 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{CE65C879-794A-4695-B659-7376FE7DB5E3}" ProjectSection(SolutionItems) = preProject .gitignore = .gitignore + build.py = build.py MinecraftDiscordBot\bin\Debug\net6.0\config.json = MinecraftDiscordBot\bin\Debug\net6.0\config.json EndProjectSection EndProject diff --git a/MinecraftDiscordBot/BotConfiguration.cs b/MinecraftDiscordBot/BotConfiguration.cs index 3806874..fb8097a 100644 --- a/MinecraftDiscordBot/BotConfiguration.cs +++ b/MinecraftDiscordBot/BotConfiguration.cs @@ -11,8 +11,11 @@ public class BotConfiguration : IBotConfiguration, IBotConfigurator { [JsonProperty("token", Required = Required.Always)] [Option('t', "token", HelpText = "The Discord bot token", Required = true)] public string Token { get; init; } = default!; + [JsonProperty("address", Required = Required.Always)] + [Option('a', "address", HelpText = "The connection string for the websocket", Required = true)] + public string Address { get; init; } = default!; [JsonProperty("port", Required = Required.DisallowNull)] - [Option('p', "port", Default = DEFAULT_PORT, HelpText = "The websocket server port")] + [Option('p', "port", Default = DEFAULT_PORT, HelpText = "The websocket server listen port")] public int Port { get; init; } = DEFAULT_PORT; [JsonProperty("channels", Required = Required.Always)] [Option('c', "channel", HelpText = "The list of whitelisted channels", Required = true, Min = 1)] diff --git a/MinecraftDiscordBot/ClientScript.lua b/MinecraftDiscordBot/ClientScript.lua index fe399d5..4acb43c 100644 --- a/MinecraftDiscordBot/ClientScript.lua +++ b/MinecraftDiscordBot/ClientScript.lua @@ -210,6 +210,7 @@ local function playerStatusEventListener(socket) break end printError("playerDetector not connected!") + sleep(5) end while true do local pd = peripheral.find("playerDetector") diff --git a/MinecraftDiscordBot/MinecraftDiscordBot.csproj b/MinecraftDiscordBot/MinecraftDiscordBot.csproj index c025260..4d14636 100644 --- a/MinecraftDiscordBot/MinecraftDiscordBot.csproj +++ b/MinecraftDiscordBot/MinecraftDiscordBot.csproj @@ -6,7 +6,7 @@ enable enable Linux - 1.1.3 + 1.1.4 Michael Chen $(Authors) https://gitlab.com/chenmichael/mcdiscordbot diff --git a/MinecraftDiscordBot/Program.cs b/MinecraftDiscordBot/Program.cs index 77db653..c5406bd 100644 --- a/MinecraftDiscordBot/Program.cs +++ b/MinecraftDiscordBot/Program.cs @@ -50,7 +50,7 @@ public class Program : IDisposable, ICommandHandler, IUserRoleMana if (stream is null) throw new FileNotFoundException("Client script could not be loaded!"); using var sr = new StreamReader(stream); return sr.ReadToEnd() - .Replace("$HOST", $"ws://{config.SocketHost}:{config.Port}"); + .Replace("$HOST", config.Address); } private Task Broadcast(Func> message) diff --git a/build.py b/build.py index e382fa7..0f13d29 100644 --- a/build.py +++ b/build.py @@ -15,20 +15,18 @@ platforms = ['linux/amd64', 'linux/arm64', 'linux/arm/v7'] def pull(image): subprocess.run([dockercmd, 'pull', baseimage], check=True) -def build(image, directory, platforms, build_args = None): +def build(images, directory, platforms, build_args = None): if build_args is None: build_args = [] build_args = list(chain.from_iterable(['--build-arg', f'{arg}={val}'] for (arg, val) in build_args)) + tags = list(chain.from_iterable(['-t', image] for image in images)) platformlist = ','.join(platforms) - subprocess.run([dockercmd, 'buildx', 'build', '-f', 'MinecraftDiscordBot/Dockerfile', '--platform', platformlist, '-t', image] + build_args + ['--push', directory], check=True) - + command = [dockercmd, 'buildx', 'build', '-f', 'MinecraftDiscordBot/Dockerfile', '--platform', platformlist, *tags] + build_args + ['--push', directory] + print(' '.join(command)) + subprocess.run(command, check=True) -for tag in args.tags: - targetimage = f'chenio/mcdiscordbot:{tag}' - baseimage = f'mcr.microsoft.com/dotnet/runtime:6.0' - - #print(f'Pulling base image {baseimage}') - #pull(baseimage) - print(f'Building image {targetimage} from {baseimage}.') - build(targetimage, '.', platforms, [('TAG', tag)]) - \ No newline at end of file +for version in args.tags: + parts = version.split('.') + tags = list('.'.join(parts[:i]) for i in range(1, len(parts) + 1)) + tags.append('latest') + build([f'chenio/mcdiscordbot:{tag}' for tag in tags], '.', platforms)