From 096995c04c4fd3378a537ea90ec17a461c230f6a Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Tue, 28 Dec 2021 21:14:25 +0200 Subject: Added a generated default config file --- build.zig | 35 ++++++++++++++++++++++++++++++++--- es.ini.in | 7 +++++++ 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 es.ini.in diff --git a/build.zig b/build.zig index a3bd8c5..6fac7d1 100644 --- a/build.zig +++ b/build.zig @@ -3,8 +3,31 @@ const std = @import("std"); const Builder = std.build.Builder; const SemanticVersion = std.SemanticVersion; +const share_prefix = "share/arkta/es/"; + const version = "0.3.0"; +const config = struct { + template: []const u8 = @embedFile("es.ini.in"), + default: struct { + line_limit: usize = 100, + page_overlap: usize = 2, + tab_stop: usize = 8, + } = .{}, +}{}; + +fn installGeneratedFile(b: *Builder, comptime name: []const u8, data: []const u8) void { + const write_file = b.addWriteFile(name, data); + + const write_file_install = b.addInstallFile( + write_file.getFileSource(name).?, + share_prefix ++ name, + ); + write_file_install.step.dependOn(&write_file.step); + + b.getInstallStep().dependOn(&write_file_install.step); +} + pub fn build(b: *Builder) void { const target = b.standardTargetOptions(.{}); const mode = b.standardReleaseOptions(); @@ -15,9 +38,9 @@ pub fn build(b: *Builder) void { "es_version", SemanticVersion.parse(version) catch unreachable, ); - options.addOption(usize, "default_line_limit", 100); - options.addOption(usize, "default_page_overlap", 2); - options.addOption(usize, "default_tab_stop", 8); + options.addOption(usize, "default_line_limit", config.default.line_limit); + options.addOption(usize, "default_page_overlap", config.default.page_overlap); + options.addOption(usize, "default_tab_stop", config.default.tab_stop); const exe = b.addExecutable("es", "src/main.zig"); exe.setTarget(target); @@ -25,6 +48,12 @@ pub fn build(b: *Builder) void { exe.addOptions("es-config", options); exe.install(); + installGeneratedFile( + b, + "es.ini", + comptime std.fmt.comptimePrint(config.template, config.default), + ); + const run_cmd = exe.run(); run_cmd.step.dependOn(b.getInstallStep()); if (b.args) |args| { diff --git a/es.ini.in b/es.ini.in new file mode 100644 index 0000000..4de9e2a --- /dev/null +++ b/es.ini.in @@ -0,0 +1,7 @@ +# This is the default es.ini config. +# +# Copy this config to ~/.config/arkta/es/es.ini to modify it. + +line_limit = {[line_limit]} +page_overlap = {[page_overlap]} +tab_stop = {[tab_stop]} -- cgit v1.2.3