2
2
mirror of https://github.com/Hilbis/Hilbish synced 2025-07-03 01:32:03 +00:00

Compare commits

...

2 Commits

5 changed files with 36 additions and 8 deletions

View File

@ -76,3 +76,8 @@ of an exact match.
#### Default: `true` #### Default: `true`
If this is enabled, when a background job is finished, If this is enabled, when a background job is finished,
a [notification](../notifications) will be sent. a [notification](../notifications) will be sent.
### `processorSkipList`
#### Value: `table`
#### Default: `{}`
A table listing the names of command processors to skip.

View File

@ -1,6 +1,7 @@
local fs = require 'fs' local fs = require 'fs'
hilbish.processors.add { hilbish.processors.add {
name = 'hilbish.autocd',
func = function(path) func = function(path)
if hilbish.opts.autocd then if hilbish.opts.autocd then
local ok, stat = pcall(fs.stat, path) local ok, stat = pcall(fs.stat, path)

View File

@ -15,7 +15,8 @@ The nice lil shell for {blue}Lua{reset} fanatics!
fuzzy = false, fuzzy = false,
notifyJobFinish = true, notifyJobFinish = true,
crimmas = true, crimmas = true,
tips = true tips = true,
processorSkipList = {}
} }
for optsName, default in pairs(defaultOpts) do for optsName, default in pairs(defaultOpts) do

View File

@ -6,6 +6,10 @@ hilbish.processors = {
} }
function hilbish.processors.add(processor) function hilbish.processors.add(processor)
if not processor.name then
error 'processor is missing name'
end
if not processor.func then if not processor.func then
error 'processor is missing function' error 'processor is missing function'
end end
@ -14,12 +18,26 @@ function hilbish.processors.add(processor)
table.sort(hilbish.processors.list, function(a, b) return a.priority < b.priority end) table.sort(hilbish.processors.list, function(a, b) return a.priority < b.priority end)
end end
local function contains(search, needle)
for _, p in ipairs(search) do
if p == needle then
return true
end
end
return false
end
--- Run all command processors, in order by priority. --- Run all command processors, in order by priority.
--- It returns the processed command (which may be the same as the passed command) --- It returns the processed command (which may be the same as the passed command)
--- and a boolean which states whether to proceed with command execution. --- and a boolean which states whether to proceed with command execution.
function hilbish.processors.execute(command) function hilbish.processors.execute(command, opts)
opts = opts or {}
opts.skip = opts.skip or {}
local continue = true local continue = true
for _, processor in ipairs(hilbish.processors.list) do for _, processor in ipairs(hilbish.processors.list) do
if not contains(opts.skip, processor.name) then
local processed = processor.func(command) local processed = processor.func(command)
if processed.command then command = processed.command end if processed.command then command = processed.command end
if not processed.continue then if not processed.continue then
@ -27,6 +45,7 @@ function hilbish.processors.execute(command)
break break
end end
end end
end
return command, continue return command, continue
end end

View File

@ -123,7 +123,9 @@ end
-- @param priv bool -- @param priv bool
function hilbish.runner.run(input, priv) function hilbish.runner.run(input, priv)
bait.throw('command.preprocess', input) bait.throw('command.preprocess', input)
local input, continue = hilbish.processors.execute(input) local input, continue = hilbish.processors.execute(input, {
skip = hilbish.opts.processorSkipList
})
if not continue then if not continue then
finishExec(0, '', true) finishExec(0, '', true)
return return