mirror of
https://github.com/wavetermdev/backup.git
synced 2026-04-22 15:26:58 -07:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f7ffa5310 | |||
| c7b77608a2 |
@@ -51,7 +51,7 @@
|
||||
/* global colors */
|
||||
--app-bg-color: black;
|
||||
--app-accent-color: rgb(88, 193, 66);
|
||||
--app-accent-bg-color: rgba(88, 193, 66, 0.2);
|
||||
--app-accent-bg-color: rgba(88, 193, 66, 0.25);
|
||||
--app-error-color: rgb(229, 77, 46);
|
||||
--app-warning-color: rgb(224, 185, 86);
|
||||
--app-success-color: rgb(78, 154, 6);
|
||||
@@ -222,5 +222,5 @@
|
||||
--modal-bg-color: var(--app-bg-color);
|
||||
--modal-header-bottom-border-color: rgba(241, 246, 243, 0.15);
|
||||
|
||||
--logo-button-hover-bg-color: #1e1e1e;
|
||||
--logo-button-hover-bg-color: var(--app-accent-bg-color);
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
/* tab color */
|
||||
--tab-white: rgb(0, 0, 0, 0.6);
|
||||
--tab-mint: rgb(70, 235, 156);
|
||||
|
||||
/* button colors */
|
||||
--button-text-color: rgb(50, 50, 50); /* Dark gray for light theme */
|
||||
@@ -72,6 +73,4 @@
|
||||
|
||||
/* toggle colors */
|
||||
--toggle-thumb-color: var(--app-bg-color);
|
||||
|
||||
--logo-button-hover-bg-color: #f0f0f0;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
.header-container {
|
||||
border-bottom: 1px solid var(--app-border-color);
|
||||
}
|
||||
|
||||
.header {
|
||||
-webkit-app-region: drag;
|
||||
display: flex;
|
||||
@@ -18,7 +22,6 @@
|
||||
vertical-align: middle;
|
||||
padding: 0 10px 0 10px;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid var(--app-border-color);
|
||||
|
||||
.title {
|
||||
font-size: var(--title-font-size);
|
||||
@@ -42,10 +45,10 @@
|
||||
|
||||
// This ensures the tab bar does not collide with the floating logo. The floating logo sits above the sidebar when it is not collapsed, so no additional margin is needed in that case.
|
||||
// More margin is given on macOS to account for the traffic light buttons
|
||||
#main.platform-darwin.mainsidebar-collapsed .header {
|
||||
margin-left: var(--floating-logo-width-darwin);
|
||||
#main.platform-darwin.mainsidebar-collapsed .header-container {
|
||||
padding-left: var(--floating-logo-width-darwin);
|
||||
}
|
||||
|
||||
#main:not(.platform-darwin).mainsidebar-collapsed .header {
|
||||
margin-left: var(--floating-logo-width);
|
||||
#main:not(.platform-darwin).mainsidebar-collapsed .header-container {
|
||||
padding-left: var(--floating-logo-width);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class MainView extends React.Component<{
|
||||
className={cn("mainview", this.props.className)}
|
||||
style={{ maxWidth: `calc(100vw - ${maxWidthSubtractor}px)` }}
|
||||
>
|
||||
<div className="header-container bottom-border">
|
||||
<div className="header-container">
|
||||
<header className="header">
|
||||
<div className="title text-primary">{this.props.title}</div>
|
||||
<div className="close-div hoverEffect" title="Close (Escape)" onClick={this.props.onClose}>
|
||||
|
||||
@@ -716,7 +716,7 @@ func EvalCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (scbus.U
|
||||
if rtnErr == nil {
|
||||
update, rtnErr = HandleCommand(ctxWithHistory, newPk)
|
||||
} else {
|
||||
return nil, fmt.Errorf("error in Eval Meta Command: %w", rtnErr)
|
||||
return nil, fmt.Errorf("[error] eval: %w", rtnErr)
|
||||
}
|
||||
if !resolveBool(pk.Kwargs["nohist"], false) {
|
||||
// TODO should this be "pk" or "newPk" (2nd arg)
|
||||
|
||||
@@ -352,6 +352,40 @@ func unescapeBackSlashes(s string) string {
|
||||
return string(newStr)
|
||||
}
|
||||
|
||||
type ParamDecl struct {
|
||||
Name string `json:"name"`
|
||||
ParamType string `json:"paramtype"`
|
||||
NoQuote bool `json:"noquote"`
|
||||
}
|
||||
|
||||
var commandParamRe = regexp.MustCompile(`@w\{\{.*?\}\}`)
|
||||
|
||||
func parseCommandParams(cmdStr string) ([]ParamDecl, error) {
|
||||
m := commandParamRe.FindAllString(cmdStr, -1)
|
||||
if m == nil {
|
||||
return nil, nil
|
||||
}
|
||||
var rtn []ParamDecl
|
||||
for _, paramStr := range m {
|
||||
paramStr = paramStr[4 : len(paramStr)-2]
|
||||
parts := strings.Split(paramStr, ":")
|
||||
decl := ParamDecl{Name: parts[0], ParamType: "str"}
|
||||
for _, part := range parts[1:] {
|
||||
if part == "noquote" {
|
||||
decl.NoQuote = true
|
||||
continue
|
||||
}
|
||||
if part == "int" {
|
||||
decl.ParamType = "int"
|
||||
continue
|
||||
}
|
||||
// silently ignore unknown parts (for now)
|
||||
}
|
||||
rtn = append(rtn, decl)
|
||||
}
|
||||
return rtn, nil
|
||||
}
|
||||
|
||||
func EvalMetaCommand(ctx context.Context, origPk *scpacket.FeCommandPacketType) (*scpacket.FeCommandPacketType, error) {
|
||||
if len(origPk.Args) == 0 {
|
||||
return nil, fmt.Errorf("empty command (no fields)")
|
||||
@@ -363,6 +397,15 @@ func EvalMetaCommand(ctx context.Context, origPk *scpacket.FeCommandPacketType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !resolveBool(bracketArgs["noparse"], false) {
|
||||
pdecls, err := parseCommandParams(cmdStr)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing command params: %v", err)
|
||||
}
|
||||
if len(pdecls) > 0 {
|
||||
return nil, fmt.Errorf("command params not supported yet len:%d", len(pdecls))
|
||||
}
|
||||
}
|
||||
metaCmd, metaSubCmd, commandArgs := parseMetaCmd(cmdStr)
|
||||
rtnPk := scpacket.MakeFeCommandPacket()
|
||||
rtnPk.MetaCmd = metaCmd
|
||||
|
||||
Reference in New Issue
Block a user