diff options
Diffstat (limited to 'logfiles-model.lua')
-rw-r--r-- | logfiles-model.lua | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/logfiles-model.lua b/logfiles-model.lua index 54aceee..41c2308 100644 --- a/logfiles-model.lua +++ b/logfiles-model.lua @@ -60,12 +60,25 @@ local function list_files ( ... ) return cfe({ type="list", value=listed_files, label="Log files" }) end -get_filedetails = function (path) +local do_grep = function(filecontent, grep) + if grep and grep ~= "" then + local lines = {} + for line in string.gmatch(filecontent.value, "[^\n]*\n?") do + if string.match(line, grep) then + lines[#lines+1] = line + end + end + filecontent.value = table.concat(lines) or "" + end +end + +get_filedetails = function (path, grep) local filedetails local available_files = get() for i,file in ipairs(available_files.value) do if ( file.value.filename.value == path ) then filedetails = modelfunctions.getfiledetails(path) + do_grep(filedetails.value.filecontent, grep) break end end @@ -73,14 +86,16 @@ get_filedetails = function (path) filedetails = modelfunctions.getfiledetails("") filedetails.value.filename.value = path end + filedetails.value.grep = cfe({ value=grep or "", label="Grep" }) return filedetails end -tail = function(path, offset) +tail = function(path, offset, grep) local filename = cfe({ value=path, label="File name", errtxt="File not found" }) local filesize = cfe({ value="0", label="File size" }) local filecontent = cfe({ type="longtext", label="File content" }) local fileoffset = cfe({ value="0", label="File offset" }) + local filegrep = cfe({ value=grep or "", label="Grep" }) local available_files = get() for i,file in ipairs(available_files.value) do @@ -102,11 +117,12 @@ tail = function(path, offset) fileoffset.value = filesize.value end f:close() + do_grep(filecontent, grep) break end end - return cfe({ type="group", value={filename=filename, filecontent=filecontent, filesize=filesize, fileoffset=fileoffset}, label="Tail Config file details" }) + return cfe({ type="group", value={filename=filename, filecontent=filecontent, filesize=filesize, fileoffset=fileoffset, grep=filegrep}, label="Tail Config file details" }) end get = function () |