summaryrefslogtreecommitdiff
path: root/xmake/modules/utils/progress.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2025-11-21 00:49:11 +0800
committerruki <[email protected]>2025-11-21 11:28:51 +0800
commit66dec67272856110859d38c01043fd2564f9c7a7 (patch)
tree88333751ca814ac6b20855d76caf3093330bf30f /xmake/modules/utils/progress.lua
parent4627107fa7badf70828a6f569e4a8b8ba3d4160d (diff)
add waiting indicator
Diffstat (limited to 'xmake/modules/utils/progress.lua')
-rw-r--r--xmake/modules/utils/progress.lua56
1 files changed, 0 insertions, 56 deletions
diff --git a/xmake/modules/utils/progress.lua b/xmake/modules/utils/progress.lua
index 60066ddc5..9cc4c53ac 100644
--- a/xmake/modules/utils/progress.lua
+++ b/xmake/modules/utils/progress.lua
@@ -20,61 +20,17 @@
-- imports
import("core.base.option")
-import("core.base.object")
import("core.base.colors")
import("core.base.tty")
import("core.base.scheduler")
import("core.theme.theme")
import("core.project.project")
--- define module
-local progress = progress or object { _init = { "_RUNNING", "_INDEX", "_STREAM", "_OPT" } }
-
-- cache color strings
local COLOR_SUPERSLOW = "${color.build.progress_superslow}"
local COLOR_VERYSLOW = "${color.build.progress_veryslow}"
local COLOR_SLOW = "${color.build.progress_slow}"
--- stop the progress indicator, clear written frames
-function progress:stop()
- if self._RUNNING ~= 0 then
- self:clear()
- self._RUNNING = 0
- self._INDEX = 0
- end
-end
-
-function progress:_clear()
- if self._RUNNING == 1 then
- tty.erase_line_to_end()
- self._RUNNING = 2
- return true
- end
-end
-
--- clear previous frame of the progress indicator
-function progress:clear()
- if self:_clear() then
- self._STREAM:flush()
- end
-end
-
--- write next frame of the progress indicator
-function progress:write()
- local chars = self._OPT.chars[self._INDEX % #self._OPT.chars + 1]
- tty.cursor_and_attrs_save()
- self._STREAM:write(chars)
- self._STREAM:flush()
- tty.cursor_and_attrs_restore()
- self._INDEX = self._INDEX + 1
- self._RUNNING = 1
-end
-
--- check if the progress indicator is running
-function progress:running()
- return self._RUNNING and true or false
-end
-
-- is scroll output?
function _is_scroll()
local is_scroll = _g.is_scroll
@@ -475,15 +431,3 @@ function text(progress, format, ...)
end
end
--- build a progress indicator
--- @params stream - stream to write to, will use io.stdout if not provided
--- @params opt - options
--- - chars - an array of chars for progress indicator
-function new(stream, opt)
- stream = stream or io.stdout
- opt = opt or {}
- if opt.chars == nil or #opt.chars == 0 then
- opt.chars = theme.get("text.spinner.chars")
- end
- return progress {_OPT = opt, _STREAM = stream, _RUNNING = 0, _INDEX = 0}
-end