go-task / task

A task runner / simpler Make alternative written in Go
https://taskfile.dev
MIT License
11.32k stars 604 forks source link

`--watch` should start new process after old process stopped #1631

Open trim21 opened 5 months ago

trim21 commented 5 months ago

I have a simple go program

package main

import (
    "io"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(writer http.ResponseWriter, r *http.Request) {
        print(r.URL.Query().Encode())
        io.WriteString(writer, "hello world 2")
    })

    log.Fatal(http.ListenAndServe(":8001", http.DefaultServeMux))
}

and task file:

version: 3

tasks:
  s:
    sources:
      - '*.go'
    cmd: go run main.go

whan I run it with task s --watch I encounter a error with 2024/05/02 13:38:59 listen tcp :8001: bind: address already in use.

It looks like task didn't stop old process cleanly before it start a new process?

trim21 commented 5 months ago

this works as expected

version: 3

tasks:
  build:
    sources:
      - '*.go'
    generates:
      - out
    cmd: go build -o out main.go

  s:
    deps: [ build ]
    cmd: ./out
eduardolat commented 1 week ago

I can confirm that this works but the first one not

this works as expected

version: 3

tasks:
  build:
    sources:
      - '*.go'
    generates:
      - out
    cmd: go build -o out main.go

  s:
    deps: [ build ]
    cmd: ./out