Changeset 772 in code
- Timestamp:
- Feb 7, 2022, 8:33:16 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/soju.1.scd
r771 r772 237 237 To clear all commands, set it to the empty string. 238 238 239 *network update* <name>[options...]239 *network update* [name] [options...] 240 240 Update an existing network. The options are the same as the 241 241 _network create_ command. … … 244 244 network. 245 245 246 *network delete* <name> 246 If _name_ is not specified, the current network is updated. 247 248 *network delete* [name] 247 249 Disconnect and delete a network. 248 250 249 *network quote* <name> <command> 251 If _name_ is not specified, the current network is deleted. 252 253 *network quote* [name] <command> 250 254 Send a raw IRC line as-is to a network. 255 256 If _name_ is not specified, the command is sent to the current network. 251 257 252 258 *network status* -
trunk/service.go
r771 r772 209 209 }, 210 210 "update": { 211 usage: " <name>[-addr addr] [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-enabled enabled] [-connect-command command]...",211 usage: "[name] [-addr addr] [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-enabled enabled] [-connect-command command]...", 212 212 desc: "update a network", 213 213 handle: handleServiceNetworkUpdate, 214 214 }, 215 215 "delete": { 216 usage: " <name>",216 usage: "[name]", 217 217 desc: "delete a network", 218 218 handle: handleServiceNetworkDelete, 219 219 }, 220 220 "quote": { 221 usage: " <name><command>",221 usage: "[name] <command>", 222 222 desc: "send a raw line to a network", 223 223 handle: handleServiceNetworkQuote, … … 410 410 *f.ptr = &v 411 411 return nil 412 } 413 414 func getNetworkFromArg(dc *downstreamConn, params []string) (*network, []string, error) { 415 name, params := popArg(params) 416 if name == "" { 417 if dc.network == nil { 418 return nil, params, fmt.Errorf("no network selected, a name argument is required") 419 } 420 return dc.network, params, nil 421 } else { 422 net := dc.user.getNetwork(name) 423 if net == nil { 424 return nil, params, fmt.Errorf("unknown network %q", name) 425 } 426 return net, params, nil 427 } 412 428 } 413 429 … … 551 567 552 568 func handleServiceNetworkUpdate(ctx context.Context, dc *downstreamConn, params []string) error { 553 if len(params) < 1 { 554 return fmt.Errorf("expected at least one argument") 569 net, params, err := getNetworkFromArg(dc, params) 570 if err != nil { 571 return err 555 572 } 556 573 557 574 fs := newNetworkFlagSet() 558 if err := fs.Parse(params[1:]); err != nil { 559 return err 560 } 561 562 net := dc.user.getNetwork(params[0]) 563 if net == nil { 564 return fmt.Errorf("unknown network %q", params[0]) 575 if err := fs.Parse(params); err != nil { 576 return err 565 577 } 566 578 … … 580 592 581 593 func handleServiceNetworkDelete(ctx context.Context, dc *downstreamConn, params []string) error { 582 if len(params) != 1 { 583 return fmt.Errorf("expected exactly one argument") 584 } 585 586 net := dc.user.getNetwork(params[0]) 587 if net == nil { 588 return fmt.Errorf("unknown network %q", params[0]) 594 net, params, err := getNetworkFromArg(dc, params) 595 if err != nil { 596 return err 589 597 } 590 598 … … 598 606 599 607 func handleServiceNetworkQuote(ctx context.Context, dc *downstreamConn, params []string) error { 600 if len(params) != 2 { 601 return fmt.Errorf("expected exactly two arguments") 602 } 603 604 net := dc.user.getNetwork(params[0]) 605 if net == nil { 606 return fmt.Errorf("unknown network %q", params[0]) 608 if len(params) != 1 && len(params) != 2 { 609 return fmt.Errorf("expected one or two arguments") 610 } 611 612 raw := params[len(params)-1] 613 params = params[:len(params)-1] 614 615 net, params, err := getNetworkFromArg(dc, params) 616 if err != nil { 617 return err 607 618 } 608 619 609 620 uc := net.conn 610 621 if uc == nil { 611 return fmt.Errorf("network %q is not currently connected", params[0])612 } 613 614 m, err := irc.ParseMessage( params[1])615 if err != nil { 616 return fmt.Errorf("failed to parse command %q: %v", params[1], err)622 return fmt.Errorf("network %q is not currently connected", net.GetName()) 623 } 624 625 m, err := irc.ParseMessage(raw) 626 if err != nil { 627 return fmt.Errorf("failed to parse command %q: %v", raw, err) 617 628 } 618 629 uc.SendMessage(ctx, m)
Note:
See TracChangeset
for help on using the changeset viewer.