mirror of
https://mzte.de/git/LordMZTE/dotfiles.git
synced 2024-09-27 12:38:58 +02:00
port withjava to zig
This commit is contained in:
parent
b55f0ae22d
commit
26fdfdac47
5 changed files with 84 additions and 18 deletions
|
@ -1,17 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
__usage="
|
|
||||||
USAGE:
|
|
||||||
$0 <java-name> <command...>
|
|
||||||
|
|
||||||
ARGS:
|
|
||||||
<java-name> the jvm to use
|
|
||||||
<command...> the command to run
|
|
||||||
"
|
|
||||||
|
|
||||||
if [ 3 -gt $# ]; then
|
|
||||||
echo -e "$__usage"
|
|
||||||
else
|
|
||||||
export PATH="/usr/lib/jvm/$1/bin:$PATH"
|
|
||||||
${@:2}
|
|
||||||
fi
|
|
||||||
|
|
1
scripts/withjava/.gitignore
vendored
Normal file
1
scripts/withjava/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/zig-*
|
29
scripts/withjava/build.zig
Normal file
29
scripts/withjava/build.zig
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn build(b: *std.Build) void {
|
||||||
|
const target = b.standardTargetOptions(.{});
|
||||||
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
|
const exe = b.addExecutable(.{
|
||||||
|
.name = "withjava",
|
||||||
|
.root_source_file = .{ .path = "src/main.zig" },
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
});
|
||||||
|
|
||||||
|
exe.strip = switch (optimize) {
|
||||||
|
.ReleaseSafe, .Debug => false,
|
||||||
|
.ReleaseFast, .ReleaseSmall => true,
|
||||||
|
};
|
||||||
|
|
||||||
|
b.installArtifact(exe);
|
||||||
|
|
||||||
|
const run_cmd = b.addRunArtifact(exe);
|
||||||
|
run_cmd.step.dependOn(b.getInstallStep());
|
||||||
|
if (b.args) |args| {
|
||||||
|
run_cmd.addArgs(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
const run_step = b.step("run", "Run the app");
|
||||||
|
run_step.dependOn(&run_cmd.step);
|
||||||
|
}
|
53
scripts/withjava/src/main.zig
Normal file
53
scripts/withjava/src/main.zig
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !u8 {
|
||||||
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||||
|
defer _ = gpa.deinit();
|
||||||
|
const alloc = gpa.allocator();
|
||||||
|
|
||||||
|
if (std.os.argv.len < 3) {
|
||||||
|
std.log.err("Not enough arguments, expected at least 2, got {}!", .{std.os.argv.len - 1});
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var env = try std.process.getEnvMap(alloc);
|
||||||
|
defer env.deinit();
|
||||||
|
|
||||||
|
if (env.getPtr("PATH")) |path_p| {
|
||||||
|
const newpath = try std.fmt.allocPrint(
|
||||||
|
alloc,
|
||||||
|
"/usr/lib/jvm/{s}/bin:{s}",
|
||||||
|
.{ std.os.argv[1], path_p.* },
|
||||||
|
);
|
||||||
|
alloc.free(path_p.*);
|
||||||
|
path_p.* = newpath;
|
||||||
|
} else {
|
||||||
|
const newpath = try std.fmt.allocPrint(alloc, "/usr/lib/jvm/{s}/bin", .{std.os.argv[1]});
|
||||||
|
errdefer alloc.free(newpath);
|
||||||
|
try env.putMove(try alloc.dupe(u8, "PATH"), newpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const java_home = try std.fmt.allocPrint(alloc, "/usr/lib/jvm/{s}", .{std.os.argv[1]});
|
||||||
|
errdefer alloc.free(java_home);
|
||||||
|
try env.putMove(try alloc.dupe(u8, "JAVA_HOME"), java_home);
|
||||||
|
}
|
||||||
|
|
||||||
|
const child_argv = try alloc.alloc([]const u8, std.os.argv[2..].len);
|
||||||
|
defer alloc.free(child_argv);
|
||||||
|
|
||||||
|
for (std.os.argv[2..], child_argv) |a1, *a2|
|
||||||
|
a2.* = std.mem.span(a1);
|
||||||
|
|
||||||
|
var child = std.ChildProcess.init(child_argv, alloc);
|
||||||
|
child.env_map = &env;
|
||||||
|
const term = try child.spawnAndWait();
|
||||||
|
|
||||||
|
switch (term) {
|
||||||
|
.Exited => |ret| return ret,
|
||||||
|
.Signal, .Stopped, .Unknown => |ret| {
|
||||||
|
std.log.err("child signalled {}", .{ret});
|
||||||
|
return 1;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,7 +18,6 @@
|
||||||
(mklink "scripts/start-joshuto.sh" (bin-path "start-joshuto"))
|
(mklink "scripts/start-joshuto.sh" (bin-path "start-joshuto"))
|
||||||
(mklink "scripts/startriver.sh" (bin-path "startriver"))
|
(mklink "scripts/startriver.sh" (bin-path "startriver"))
|
||||||
(mklink "scripts/update-nvim-plugins.rkt" (bin-path "update-nvim-plugins"))
|
(mklink "scripts/update-nvim-plugins.rkt" (bin-path "update-nvim-plugins"))
|
||||||
(mklink "scripts/withjava.sh" (bin-path "withjava"))
|
|
||||||
|
|
||||||
;; Compile scripts
|
;; Compile scripts
|
||||||
(install-rust "scripts/i3status")
|
(install-rust "scripts/i3status")
|
||||||
|
@ -28,6 +27,7 @@
|
||||||
(install-zig "scripts/prompt")
|
(install-zig "scripts/prompt")
|
||||||
(install-zig "scripts/randomwallpaper")
|
(install-zig "scripts/randomwallpaper")
|
||||||
(install-zig "scripts/vinput")
|
(install-zig "scripts/vinput")
|
||||||
|
(install-zig "scripts/withjava")
|
||||||
|
|
||||||
(install-roswell "scripts/playvid.ros")
|
(install-roswell "scripts/playvid.ros")
|
||||||
null)
|
null)
|
||||||
|
|
Loading…
Reference in a new issue