diff options
| -rw-r--r-- | cmd/swextreload/main.go | 11 | ||||
| -rw-r--r-- | internal/swextreload.go | 72 | 
2 files changed, 44 insertions, 39 deletions
| diff --git a/cmd/swextreload/main.go b/cmd/swextreload/main.go index 0ccd0f9..66a589b 100644 --- a/cmd/swextreload/main.go +++ b/cmd/swextreload/main.go @@ -21,9 +21,10 @@ func main() {  				Description: "DevTools protocol WebSocket URL",  			},  			{ -				LongName:    "reload-current-tab", -				Type:        "bool", -				Description: "pass this to reload the active Chrome tab", +				LongName:     "reload-current-tab", +				Type:         "bool", +				DefaultValue: false, +				Description:  "pass this to reload the active Chrome tab",  			},  			{  				LongName:    "version", @@ -63,6 +64,8 @@ func main() {  		os.Exit(sysexits.Usage)  	} +	shouldReloadTab := args["reload-current-tab"].(bool) +  	extension_ids := args["extension_id"].([]string)  	if len(extension_ids) == 0 {  		fmt.Fprintln(os.Stderr, "error: missing extension IDs") @@ -81,7 +84,7 @@ func main() {  	err = swextreload.Reload(  		socket_url,  		extension_ids, -		true, +		shouldReloadTab,  	)  	if err != nil {  		fmt.Fprintf(os.Stderr, "error: can't reload extension: %v\n", err) diff --git a/internal/swextreload.go b/internal/swextreload.go index 29a4931..a2b92e6 100644 --- a/internal/swextreload.go +++ b/internal/swextreload.go @@ -110,50 +110,52 @@ func reloadExtension(  		log.Printf("Runtime: %v", string(runtimeResp))  	} -	time.Sleep(200 * time.Millisecond) +	if shouldReloadTab { +		time.Sleep(200 * time.Millisecond) + +		targets, err = chromedp.Targets(ctx) +		if err != nil { +			return fmt.Errorf( +				"swextreload: can't get targets for '%s' tab reload: %v", +				extensionID, +				err, +			) +		} -	targets, err = chromedp.Targets(ctx) -	if err != nil { -		return fmt.Errorf( -			"swextreload: can't get targets for '%s' tab reload: %v", -			extensionID, -			err, -		) -	} +		if isDebug { +			log.Printf("Targets: %#v", targets) +		} -	if isDebug { -		log.Printf("Targets: %#v", targets) -	} +		for _, target := range targets { +			if strings.HasPrefix(target.URL, extensionURL) { +				if isDebug { +					log.Printf("Target: %#v", target) +				} -	for _, target := range targets { -		if strings.HasPrefix(target.URL, extensionURL) { -			if isDebug { -				log.Printf("Target: %#v", target) +				targetID = target.TargetID +				break  			} - -			targetID = target.TargetID -			break  		} -	} -	targetCtx, cancel = chromedp.NewContext(ctx, chromedp.WithTargetID(targetID)) -	defer cancel() +		targetCtx, cancel = chromedp.NewContext(ctx, chromedp.WithTargetID(targetID)) +		defer cancel() -	var tabsResp []byte -	err = chromedp.Run( -		targetCtx, -		chromedp.Evaluate(`chrome.tabs.reload();`, nil), -	) -	if err != nil { -		return fmt.Errorf( -			"swextreload: error reloading tab '%s': %v", -			extensionID, -			err, +		var tabsResp []byte +		err = chromedp.Run( +			targetCtx, +			chromedp.Evaluate(`chrome.tabs.reload();`, nil),  		) -	} +		if err != nil { +			return fmt.Errorf( +				"swextreload: error reloading tab '%s': %v", +				extensionID, +				err, +			) +		} -	if isDebug { -		log.Printf("Tabs: %v", string(tabsResp)) +		if isDebug { +			log.Printf("Tabs: %v", string(tabsResp)) +		}  	}  	return nil | 
