aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-02-18 22:09:31 -0600
committerToby Vincent <tobyv@tobyvin.dev>2024-02-18 22:09:31 -0600
commit9c6399285657ca01247ad88ff9835d42a116ca0c (patch)
tree21de64422bb04e13e19b85498e09da8c06808e95
parent61147370caac0cf4c03d7a15ea633caa39b4376f (diff)
feat(nvim): add pkgbuild shellcheck wrapper
-rw-r--r--nvim/.config/nvim/lua/plugins/lint.lua17
-rw-r--r--nvim/.config/nvim/lua/tobyvin/filetype.lua1
-rwxr-xr-xnvim/.local/bin/pkgbuildcheck99
3 files changed, 115 insertions, 2 deletions
diff --git a/nvim/.config/nvim/lua/plugins/lint.lua b/nvim/.config/nvim/lua/plugins/lint.lua
index e72102f..f2b3cfc 100644
--- a/nvim/.config/nvim/lua/plugins/lint.lua
+++ b/nvim/.config/nvim/lua/plugins/lint.lua
@@ -60,6 +60,18 @@ local M = {
})[1]
end,
},
+ shellcheck = {
+ condition = function()
+ return not vim.api.nvim_buf_get_name(0):match(".*/PKGBUILD$")
+ end,
+ },
+ pkgbuildcheck = {
+ extend = "shellcheck",
+ cmd = "pkgbuildcheck",
+ condition = function()
+ return vim.api.nvim_buf_get_name(0):match(".*/PKGBUILD$")
+ end,
+ },
},
},
}
@@ -75,7 +87,10 @@ function M:config(opts)
local lint = require("lint")
lint.linters_by_ft = opts.linters_by_ft
vim.iter(opts.linters):each(function(name, linter)
- linter = vim.tbl_deep_extend("keep", linter, require("lint").linters[name] or {}, { args = {} })
+ linter = vim.tbl_deep_extend("keep", linter, require("lint").linters[linter.extend or name] or {}, {
+ args = {},
+ prepend_args = {},
+ })
vim.iter(linter.prepend_args):rev():each(function(arg)
table.insert(linter.args, 1, arg)
end)
diff --git a/nvim/.config/nvim/lua/tobyvin/filetype.lua b/nvim/.config/nvim/lua/tobyvin/filetype.lua
index f82e6b9..2f288e9 100644
--- a/nvim/.config/nvim/lua/tobyvin/filetype.lua
+++ b/nvim/.config/nvim/lua/tobyvin/filetype.lua
@@ -6,7 +6,6 @@ vim.filetype.add({
service = "systemd",
},
filename = {
- PKGBUILD = "PKGBUILD",
tridactylrc = "trytactylrc",
},
pattern = {
diff --git a/nvim/.local/bin/pkgbuildcheck b/nvim/.local/bin/pkgbuildcheck
new file mode 100755
index 0000000..af2bc39
--- /dev/null
+++ b/nvim/.local/bin/pkgbuildcheck
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+{
+ cat <<-EOF
+ #!/bin/bash -euET
+
+ # declare variables used by PKGBUILD
+ srcdir='~!@#$%^&*() /\|'
+ pkgdir='~!@#$%^&*() /\|'
+
+ # the actual PKGBUILD gets inlined by RUA here
+
+ $(cat)
+
+ # ensure that obligatory PKGBUILD values are defined, and avoid "unused" warning for them:
+ test "\${pkgname[*]} should be declared in PKGBUILD"
+ test "\${pkgver[*]} should be declared in PKGBUILD"
+ test "\${pkgrel[*]} should be declared in PKGBUILD"
+ test "\${arch[*]} should be declared in PKGBUILD"
+
+ # avoid "unused" warning for optional PKGBUILD variables:
+ export pkgbase
+ export epoch
+ export pkgdesc
+ export url
+ export license
+ export install
+ export changelog
+ export source
+ export source_aarch64
+ export source_i686
+ export source_x86_64
+ export validpgpkeys
+ export noextract
+ export md5sums
+ export md5sums_aarch64
+ export md5sums_i686
+ export md5sums_x86_64
+ export sha1sums
+ export sha1sums_aarch64
+ export sha1sums_i686
+ export sha1sums_x86_64
+ export sha224sums
+ export sha224sums_aarch64
+ export sha224sums_i686
+ export sha224sums_x86_64
+ export sha256sums
+ export sha256sums_aarch64
+ export sha256sums_i686
+ export sha256sums_x86_64
+ export sha384sums
+ export sha384sums_aarch64
+ export sha384sums_i686
+ export sha384sums_x86_64
+ export sha512sums
+ export sha512sums_aarch64
+ export sha512sums_i686
+ export sha512sums_x86_64
+ export b2sums
+ export b2sums_aarch64
+ export b2sums_i686
+ export b2sums_x86_64
+ export groups
+ export backup
+ export depends
+ export depends_aarch64
+ export depends_i686
+ export depends_x86_64
+ export makedepends
+ export makedepends_aarch64
+ export makedepends_i686
+ export makedepends_x86_64
+ export checkdepends
+ export checkdepends_aarch64
+ export checkdepends_i686
+ export checkdepends_x86_64
+ export optdepends
+ export optdepends_aarch64
+ export optdepends_i686
+ export optdepends_x86_64
+ export conflicts
+ export conflicts_aarch64
+ export conflicts_i686
+ export conflicts_x86_64
+ export provides
+ export provides_aarch64
+ export provides_i686
+ export provides_x86_64
+ export replaces
+ export replaces_aarch64
+ export replaces_i686
+ export replaces_x86_64
+ export options
+
+ # avoid "unused" warning for variables defined _for_ PKGBUILD
+ export srcdir
+ export pkgdir
+ EOF
+} | shellcheck "$@"