From 29460c33bd91ab7169f9edeb789f9009ffe56e87 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Fri, 7 May 2021 03:27:40 -0700 Subject: [PATCH] cmd: add the `zpm tags` command --- deps.zig | 5 ++++- src/cmd/zpm.zig | 2 ++ src/cmd/zpm/tags.zig | 47 ++++++++++++++++++++++++++++++++++++++++++++ zig.mod | 2 ++ zig.sum | 1 + 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/cmd/zpm/tags.zig diff --git a/deps.zig b/deps.zig index a1f5d64d2b3e66b6548f2c4f11193306ff101af3..44b8bb5fc9273e7d20976db75bbcbbc67ff33b05 100644 --- a/deps.zig +++ b/deps.zig @@ -37,6 +37,7 @@ pub const _ids = .{ "yyhw90zkzgmubwpp87n0pzf936n850an66y1c6qan5y6sogv", "u9w9dpp6p804p38o3u87f437pf942wxunyjite27dyhtu7ns", "ocmr9rtohgccd6gm6tp8b1yzylyzkqwvo1q4btrsvj0cse9y", + "tnj3qf44tpeq469x94qnu7jzus5n7sen9ewrrn8kldngbac0", }; pub const _paths = .{ @@ -51,6 +52,7 @@ pub const _paths = .{ "/git/github.com/MasterQ32/zig-network/", "/git/github.com/MasterQ32/zig-uri/", "/git/github.com/nektro/zig-json/", + "/v/http/aquila.red/1/nektro/range/v0.1.tar.gz/d2f72fdd/", }; pub const package_data = struct { @@ -63,7 +65,8 @@ pub const package_data = struct { pub const _u9w9dpp6p804p38o3u87f437pf942wxunyjite27dyhtu7ns = std.build.Pkg{ .name = "uri", .path = cache ++ "/git/github.com/MasterQ32/zig-uri/uri.zig", .dependencies = &[_]std.build.Pkg{ } }; pub const _ejw82j2ipa0eul25ohgdh6yy5nkrtn2pf0rq18m0079w6wj7 = std.build.Pkg{ .name = "zfetch", .path = cache ++ "/git/github.com/truemedian/zfetch/src/main.zig", .dependencies = &[_]std.build.Pkg{ _9k24gimke1anv665ilg4si32ayl3dsaqgmdfdpu1ceoky8tl, _csbnipaad8n77buaszsnjvlmn6j173fl7pkprsctelswjywe, _yyhw90zkzgmubwpp87n0pzf936n850an66y1c6qan5y6sogv, _u9w9dpp6p804p38o3u87f437pf942wxunyjite27dyhtu7ns, } }; pub const _ocmr9rtohgccd6gm6tp8b1yzylyzkqwvo1q4btrsvj0cse9y = std.build.Pkg{ .name = "json", .path = cache ++ "/git/github.com/nektro/zig-json/src/lib.zig", .dependencies = &[_]std.build.Pkg{ } }; - pub const _89ujp8gq842x6mzok8feypwze138n2d96zpugw44hcq7406r = std.build.Pkg{ .name = "zigmod", .path = cache ++ "/../../src/lib.zig", .dependencies = &[_]std.build.Pkg{ _s84v9o48ucb0xq0cmzq0cn433hgw0iaqztugja16h8bzxu3h, _2ta738wrqbaqzl3iwzoo8nj35k9ynwz5p5iyz80ryrpp4ttf, _0npcrzfdlrvkf44mzjo8bduj9gmqyefo0j3rstt6b0pm2r6r, _ejw82j2ipa0eul25ohgdh6yy5nkrtn2pf0rq18m0079w6wj7, _ocmr9rtohgccd6gm6tp8b1yzylyzkqwvo1q4btrsvj0cse9y, } }; + pub const _tnj3qf44tpeq469x94qnu7jzus5n7sen9ewrrn8kldngbac0 = std.build.Pkg{ .name = "range", .path = cache ++ "/v/http/aquila.red/1/nektro/range/v0.1.tar.gz/d2f72fdd/src/lib.zig", .dependencies = &[_]std.build.Pkg{ } }; + pub const _89ujp8gq842x6mzok8feypwze138n2d96zpugw44hcq7406r = std.build.Pkg{ .name = "zigmod", .path = cache ++ "/../../src/lib.zig", .dependencies = &[_]std.build.Pkg{ _s84v9o48ucb0xq0cmzq0cn433hgw0iaqztugja16h8bzxu3h, _2ta738wrqbaqzl3iwzoo8nj35k9ynwz5p5iyz80ryrpp4ttf, _0npcrzfdlrvkf44mzjo8bduj9gmqyefo0j3rstt6b0pm2r6r, _ejw82j2ipa0eul25ohgdh6yy5nkrtn2pf0rq18m0079w6wj7, _ocmr9rtohgccd6gm6tp8b1yzylyzkqwvo1q4btrsvj0cse9y, _tnj3qf44tpeq469x94qnu7jzus5n7sen9ewrrn8kldngbac0, } }; }; pub const packages = &[_]std.build.Pkg{ diff --git a/src/cmd/zpm.zig b/src/cmd/zpm.zig index 08e6e1838dc9213b581765eec72d29e1736173a7..b9a0e287689541de50c85c3847799ed87984f0e5 100644 --- a/src/cmd/zpm.zig +++ b/src/cmd/zpm.zig @@ -12,6 +12,7 @@ const u = @import("./../util/index.zig"); pub const commands = struct { pub const add = @import("./zpm_add.zig"); pub const showjson = @import("./zpm/showjson.zig"); + pub const tags = @import("./zpm/tags.zig"); }; pub const server_root = "https://zpm.random-projects.net/api"; @@ -26,6 +27,7 @@ pub fn execute(args: [][]u8) !void { \\The subcommands available are: \\ - add Append this package to your dependencies \\ - showjson Print raw json from queried API responses + \\ - tags Print the list of tags available on the server. }); return; } diff --git a/src/cmd/zpm/tags.zig b/src/cmd/zpm/tags.zig new file mode 100644 index 0000000000000000000000000000000000000000..9e145ccbeb38ba11af5578734a335ba8b8412c21 --- /dev/null +++ b/src/cmd/zpm/tags.zig @@ -0,0 +1,47 @@ +const std = @import("std"); +const gpa = std.heap.c_allocator; +const out = std.io.getStdOut().writer(); + +const zfetch = @import("zfetch"); +const json = @import("json"); +const range = @import("range").range; + +const u = @import("./../util/index.zig"); +const zpm = @import("./../zpm.zig"); + +// +// + +pub fn execute(args: [][]u8) !void { + const url = try std.mem.join(gpa, "/", &.{ zpm.server_root, "tags" }); + const val = try zpm.server_fetch(url); + + const name_col_width = blk: { + var w: usize = 0; + for (val.Array) |tag| { + const len = tag.get("name").?.String.len; + if (len > w) { + w = len; + } + } + break :blk w + 4; + }; + + try out.writeAll("NAME"); + try print_c_n(' ', name_col_width - 4); + try out.writeAll("DESCRIPTION\n"); + + for (val.Array) |tag| { + const name = tag.get("name").?.String; + try out.writeAll(name); + try print_c_n(' ', name_col_width - name.len); + try out.writeAll(tag.get("description").?.String); + try out.writeAll("\n"); + } +} + +fn print_c_n(c: u8, n: usize) !void { + for (range(n)) |_, i| { + try out.writeAll(&.{c}); + } +} diff --git a/zig.mod b/zig.mod index a3b8bbb7249bde6239dd00cd68ccddc4f028cbf0..1097d857c4aa736af4aa88c7577d815457088e77 100644 --- a/zig.mod +++ b/zig.mod @@ -39,5 +39,7 @@ dependencies: - src: git https://github.com/nektro/zig-json + - src: http https://aquila.red/1/nektro/range/v0.1.tar.gz sha256-d2f72fdd8cdb8 0 1 + dev_dependencies: - src: git https://github.com/nektro/zig-ansi diff --git a/zig.sum b/zig.sum index c088ce7e9cca658bd1a362bc93dd241e6482c119..e5a4fd5235ce247a43d21dfff681ebeb1bf58ea3 100644 --- a/zig.sum +++ b/zig.sum @@ -8,3 +8,4 @@ blake3-f7f97ba003d59243359f9f1b2a1a3af775c1655447611ff21d9b8946ff6f02ad git/gith blake3-900f4c0cb1e7078b8e7a3f022efe81444cd353a1788eb520683512b7815b788a git/github.com/MasterQ32/zig-network blake3-754b1b7e57b716ca042a9fc5c262e4931a804bddd52df695ec2b5476d0df0005 git/github.com/MasterQ32/zig-uri blake3-155960bc30c27ccee4f6f10cfb0398d1bcec367abaabb16f18de6176bd92112c git/github.com/nektro/zig-json +blake3-09698753782139ab4877d08f33235170836f68b73e482b65cdee5637a6addf86 v/http/aquila.red/1/nektro/range/v0.1.tar.gz/d2f72fdd -- 2.54.0