Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
4dcf7a59
Commit
4dcf7a59
authored
Nov 14, 2023
by
Michael Yang
Browse files
generate progress
parent
1c0e092e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
1 deletion
+37
-1
cmd/cmd.go
cmd/cmd.go
+10
-0
progress/progress.go
progress/progress.go
+27
-1
No files found.
cmd/cmd.go
View file @
4dcf7a59
...
@@ -472,6 +472,13 @@ func generate(cmd *cobra.Command, model, prompt string, wordWrap bool, format st
...
@@ -472,6 +472,13 @@ func generate(cmd *cobra.Command, model, prompt string, wordWrap bool, format st
return
err
return
err
}
}
p
:=
progress
.
NewProgress
(
os
.
Stderr
)
defer
p
.
Stop
()
spinner
:=
progress
.
NewSpinner
(
""
)
defer
spinner
.
Stop
()
p
.
Add
(
""
,
spinner
)
var
latest
api
.
GenerateResponse
var
latest
api
.
GenerateResponse
generateContext
,
ok
:=
cmd
.
Context
()
.
Value
(
generateContextKey
(
"context"
))
.
([]
int
)
generateContext
,
ok
:=
cmd
.
Context
()
.
Value
(
generateContextKey
(
"context"
))
.
([]
int
)
...
@@ -502,6 +509,9 @@ func generate(cmd *cobra.Command, model, prompt string, wordWrap bool, format st
...
@@ -502,6 +509,9 @@ func generate(cmd *cobra.Command, model, prompt string, wordWrap bool, format st
request
:=
api
.
GenerateRequest
{
Model
:
model
,
Prompt
:
prompt
,
Context
:
generateContext
,
Format
:
format
}
request
:=
api
.
GenerateRequest
{
Model
:
model
,
Prompt
:
prompt
,
Context
:
generateContext
,
Format
:
format
}
fn
:=
func
(
response
api
.
GenerateResponse
)
error
{
fn
:=
func
(
response
api
.
GenerateResponse
)
error
{
spinner
.
Stop
()
p
.
StopAndClear
()
latest
=
response
latest
=
response
if
wordWrap
{
if
wordWrap
{
...
...
progress/progress.go
View file @
4dcf7a59
...
@@ -3,8 +3,12 @@ package progress
...
@@ -3,8 +3,12 @@ package progress
import
(
import
(
"fmt"
"fmt"
"io"
"io"
"os"
"strings"
"sync"
"sync"
"time"
"time"
"golang.org/x/term"
)
)
type
State
interface
{
type
State
interface
{
...
@@ -26,12 +30,34 @@ func NewProgress(w io.Writer) *Progress {
...
@@ -26,12 +30,34 @@ func NewProgress(w io.Writer) *Progress {
return
p
return
p
}
}
func
(
p
*
Progress
)
Stop
()
{
func
(
p
*
Progress
)
Stop
()
bool
{
if
p
.
ticker
!=
nil
{
if
p
.
ticker
!=
nil
{
p
.
ticker
.
Stop
()
p
.
ticker
.
Stop
()
p
.
ticker
=
nil
p
.
ticker
=
nil
p
.
render
()
p
.
render
()
return
true
}
}
return
false
}
func
(
p
*
Progress
)
StopAndClear
()
bool
{
stopped
:=
p
.
Stop
()
if
stopped
{
termWidth
,
_
,
err
:=
term
.
GetSize
(
int
(
os
.
Stderr
.
Fd
()))
if
err
!=
nil
{
panic
(
err
)
}
// clear the progress bar by:
// 1. reset to beginning of line
// 2. move up to the first line of the progress bar
// 3. fill the terminal width with spaces
// 4. reset to beginning of line
fmt
.
Fprintf
(
p
.
w
,
"
\r
\0
33[%dA%s
\r
"
,
p
.
pos
,
strings
.
Repeat
(
" "
,
termWidth
))
}
return
stopped
}
}
func
(
p
*
Progress
)
Add
(
key
string
,
state
State
)
{
func
(
p
*
Progress
)
Add
(
key
string
,
state
State
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment