godo
godo copied to clipboard
get the path of the file that been changed
hey , i wont to get the path of the file that been changed .
my goal is to auto-install my local package on every change so i have to get the path of the file that been change so i can install it
Should be part of the context
p.Task("server", nil, func (c *Context) {
fmt.Println(c.FileEvent.Path)
})
@mgutz i did'it but i get this error
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x0 pc=0x401432]
goroutine 1 [running]: main.Tasks.func1(0xc8208370e0) /home/belr/Goprogram/Gododir/Godofile.go:22 +0xe2 gopkg.in/godo%2ev1.VoidContextHandlerFunc.Handle(0x5f7048, 0xc8208370e0, 0x0, 0x0) /home/belr/Goprogram/src/gopkg.in/godo.v1/handler.go:38 +0x32 gopkg.in/godo%2ev1.(_Task).RunWithEvent(0xc8200aa540, 0x5a7718, 0x5, 0x0, 0x0, 0x0) /home/belr/Goprogram/src/gopkg.in/godo.v1/task.go:124 +0x4c7 gopkg.in/godo%2ev1.(_Project).run(0xc82000b3a0, 0x5a7718, 0x5, 0x5a7718, 0x5, 0x0, 0x0, 0x0) /home/belr/Goprogram/src/gopkg.in/godo.v1/project.go:120 +0x44a gopkg.in/godo%2ev1.(*Project).Run(0xc82000b3a0, 0x5a7718, 0x5, 0x0, 0x0) /home/belr/Goprogram/src/gopkg.in/godo.v1/project.go:88 +0x54 gopkg.in/godo%2ev1.godo(0x5f7050, 0x0, 0x0, 0x0) /home/belr/Goprogram/src/gopkg.in/godo.v1/runner.go:103 +0xacc gopkg.in/godo%2ev1.Godo(0x5f7050) /home/belr/Goprogram/src/gopkg.in/godo.v1/runner.go:53 +0x32 main.main() /home/belr/Goprogram/Gododir/Godofile.go:27 +0x23
here is my code :
package main
import ( "fmt"
. "gopkg.in/godo.v1"
)
func Tasks(p *Project) { Env = "GOPATH=$GOPATH" p.Task("default", D{"build"}) p.Task("build", W{"src/ * */ *.go"}, func(c *Context) { fmt.Println(c.FileEvent.Path)
})
} func main() { Godo(Tasks) }
:( that's not good, i'll take a look later today
any updates? hitting the same issue with godo v2 (trying to design a task that needs the path in order to run)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x2de6]
goroutine 8 [running]:
gopkg.in/godo%2ev2.(*Task).RunWithEvent.func1(0xc820233d88, 0xc8203262c0, 0x10)
/Users/m/dev/go/src/gopkg.in/godo.v2/task.go:175 +0x7a
main.tasks.func6(0xc8202ae540)
/Users/m/dev/php/app/Gododir/main.go:61 +0x166
gopkg.in/godo%2ev2.HandlerFunc.Handle(0x27a540, 0xc8202ae540)
/Users/m/dev/go/src/gopkg.in/godo.v2/handler.go:38 +0x26
gopkg.in/godo%2ev2.(*Task).RunWithEvent(0xc8201523c0, 0xc8203262c0, 0x10, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/task.go:181 +0x641
gopkg.in/godo%2ev2.(*Project).run(0xc820012f00, 0x223ee0, 0x8, 0xc8203262c0, 0x10, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:267 +0x3d4
gopkg.in/godo%2ev2.(*Project).runWithEvent(0xc820012f00, 0x223ee0, 0x8, 0xc8203262c0, 0x10, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:162 +0x62
gopkg.in/godo%2ev2.(*Project).runTask(0xc820012f00, 0x223ee0, 0x8, 0x219738, 0x7, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:171 +0x23c
gopkg.in/godo%2ev2.(*Project).runParallel.func1(0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:182 +0x73
gopkg.in/godo%2ev2.GoThrottle.func1(0xc820122a00, 0xc820126c40, 0xc820016e00)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:318 +0x1d
created by gopkg.in/godo%2ev2.GoThrottle
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:326 +0xde
goroutine 1 [chan receive]:
github.com/nozzle/throttler.(*Throttler).Throttle(0xc820126c40, 0x27a4a8)
/Users/m/dev/go/src/github.com/nozzle/throttler/throttler.go:72 +0x78
gopkg.in/godo%2ev2.GoThrottle(0x3, 0xc820016dc0, 0x6, 0x8, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:330 +0xec
gopkg.in/godo%2ev2.(*Project).runParallel(0xc820012f00, 0xc82001af00, 0x6, 0x6, 0x219738, 0x7, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:202 +0x2f6
gopkg.in/godo%2ev2.(*Project).runSeries(0xc820012f00, 0xc820122990, 0x1, 0x1, 0x219738, 0x7, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:219 +0x647
gopkg.in/godo%2ev2.(*Project).run(0xc820012f00, 0x219738, 0x7, 0x219738, 0x7, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:261 +0x370
gopkg.in/godo%2ev2.(*Project).Run(0xc820012f00, 0x219738, 0x7, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:157 +0x54
gopkg.in/godo%2ev2.godoExit(0x27a548, 0x0, 0x0, 0x0, 0x27a568)
/Users/m/dev/go/src/gopkg.in/godo.v2/runner.go:151 +0xb13
gopkg.in/godo%2ev2.godo(0x27a548, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/runner.go:93 +0x4b
gopkg.in/godo%2ev2.Godo(0x27a548)
/Users/m/dev/go/src/gopkg.in/godo.v2/runner.go:89 +0x32
main.main()
/Users/m/dev/php/app/Gododir/main.go:68 +0x23
goroutine 3 [syscall]:
os/signal.loop()
/usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:22 +0x18
created by os/signal.init.1
/usr/local/Cellar/go/1.5.3/libexec/src/os/signal/signal_unix.go:28 +0x37
goroutine 4 [syscall]:
syscall.Syscall6(0x7, 0x17277, 0xc8201d36a4, 0x0, 0xc8201dab40, 0x0, 0x0, 0x1c0ce0, 0xc82016a0c0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/asm_darwin_amd64.s:41 +0x5
syscall.wait4(0x17277, 0xc8201d36a4, 0x0, 0xc8201dab40, 0x90, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/zsyscall_darwin_amd64.go:34 +0x72
syscall.Wait4(0x17277, 0xc8201d36ec, 0x0, 0xc8201dab40, 0xc820088010, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/syscall_bsd.go:129 +0x55
os.(*Process).wait(0xc820180b00, 0x30, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec_unix.go:22 +0x105
os.(*Process).Wait(0xc820180b00, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/doc.go:45 +0x2d
os/exec.(*Cmd).Wait(0xc8201aa140, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec/exec.go:380 +0x211
os/exec.(*Cmd).Run(0xc8201aa140, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec/exec.go:258 +0x64
gopkg.in/godo%2ev2.(*command).run(0xc82027c000, 0x0, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/cmd.go:83 +0x9e
gopkg.in/godo%2ev2.run(0x263b80, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:223 +0x4d0
gopkg.in/godo%2ev2.Run(0x263b80, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:34 +0x6e
gopkg.in/godo%2ev2.(*Context).Run(0xc8201584b0, 0x263b80, 0x37, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/context.go:45 +0x190
main.tasks.func4(0xc8201584b0)
/Users/m/dev/php/app/Gododir/main.go:52 +0x47
gopkg.in/godo%2ev2.HandlerFunc.Handle(0x27a530, 0xc8201584b0)
/Users/m/dev/go/src/gopkg.in/godo.v2/handler.go:38 +0x26
gopkg.in/godo%2ev2.(*Task).RunWithEvent(0xc820152140, 0xc820154010, 0xc, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/task.go:181 +0x641
gopkg.in/godo%2ev2.(*Project).run(0xc820012f00, 0x21c0d0, 0x4, 0xc820154010, 0xc, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:267 +0x3d4
gopkg.in/godo%2ev2.(*Project).runWithEvent(0xc820012f00, 0x21c0d0, 0x4, 0xc820154010, 0xc, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:162 +0x62
gopkg.in/godo%2ev2.(*Project).runTask(0xc820012f00, 0x21c0d0, 0x4, 0x219738, 0x7, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:171 +0x23c
gopkg.in/godo%2ev2.(*Project).runParallel.func1(0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:182 +0x73
gopkg.in/godo%2ev2.GoThrottle.func1(0xc820122a00, 0xc820126c40, 0xc820016c80)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:318 +0x1d
created by gopkg.in/godo%2ev2.GoThrottle
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:326 +0xde
goroutine 7 [syscall]:
syscall.Syscall6(0x7, 0x17289, 0xc8200436c4, 0x0, 0xc820322a20, 0x0, 0x0, 0x1c0ce0, 0xc82001b5c0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/asm_darwin_amd64.s:41 +0x5
syscall.wait4(0x17289, 0xc8200436c4, 0x0, 0xc820322a20, 0x90, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/zsyscall_darwin_amd64.go:34 +0x72
syscall.Wait4(0x17289, 0xc82004370c, 0x0, 0xc820322a20, 0xc820088010, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/syscall_bsd.go:129 +0x55
os.(*Process).wait(0xc8203282c0, 0x30, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec_unix.go:22 +0x105
os.(*Process).Wait(0xc8203282c0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/doc.go:45 +0x2d
os/exec.(*Cmd).Wait(0xc820153900, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec/exec.go:380 +0x211
os/exec.(*Cmd).Run(0xc820153900, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec/exec.go:258 +0x64
gopkg.in/godo%2ev2.(*command).run(0xc82010d420, 0x0, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/cmd.go:83 +0x9e
gopkg.in/godo%2ev2.run(0x258d00, 0x27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:223 +0x4d0
gopkg.in/godo%2ev2.Run(0x258d00, 0x27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:34 +0x6e
gopkg.in/godo%2ev2.(*Context).Run(0xc820320660, 0x258d00, 0x27, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/context.go:45 +0x190
main.tasks.func1(0xc820320660)
/Users/m/dev/php/app/Gododir/main.go:15 +0x47
gopkg.in/godo%2ev2.HandlerFunc.Handle(0x27a518, 0xc820320660)
/Users/m/dev/go/src/gopkg.in/godo.v2/handler.go:38 +0x26
gopkg.in/godo%2ev2.(*Task).RunWithEvent(0xc8200fbcc0, 0xc82031fd40, 0x11, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/task.go:181 +0x641
gopkg.in/godo%2ev2.(*Project).run(0xc820012f00, 0x2263f0, 0x9, 0xc82031fd40, 0x11, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:267 +0x3d4
gopkg.in/godo%2ev2.(*Project).runWithEvent(0xc820012f00, 0x2263f0, 0x9, 0xc82031fd40, 0x11, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:162 +0x62
gopkg.in/godo%2ev2.(*Project).runTask(0xc820012f00, 0x2263f0, 0x9, 0x219738, 0x7, 0x0, 0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:171 +0x23c
gopkg.in/godo%2ev2.(*Project).runParallel.func1(0x0, 0x0)
/Users/m/dev/go/src/gopkg.in/godo.v2/project.go:182 +0x73
gopkg.in/godo%2ev2.GoThrottle.func1(0xc820122a00, 0xc820126c40, 0xc820016d80)
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:318 +0x1d
created by gopkg.in/godo%2ev2.GoThrottle
/Users/m/dev/go/src/gopkg.in/godo.v2/exec.go:326 +0xde
goroutine 33 [syscall]:
syscall.Syscall6(0x7, 0x17276, 0xc820176d44, 0x0, 0xc82020a090, 0x0, 0x0, 0xc81fffc0d2, 0x0, 0xc81fffc0d2)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/asm_darwin_amd64.s:41 +0x5
syscall.wait4(0x17276, 0xc820176d44, 0x0, 0xc82020a090, 0x90, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/zsyscall_darwin_amd64.go:34 +0x72
syscall.Wait4(0x17276, 0xc820176d8c, 0x0, 0xc82020a090, 0xc82007e5b0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/syscall/syscall_bsd.go:129 +0x55
os.(*Process).wait(0xc8200722e0, 0x11109, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec_unix.go:22 +0x105
os.(*Process).Wait(0xc8200722e0, 0xc82007e638, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/doc.go:45 +0x2d
os/exec.(*Cmd).Wait(0xc8201c2000, 0x0, 0x0)
/usr/local/Cellar/go/1.5.3/libexec/src/os/exec/exec.go:380 +0x211
gopkg.in/godo%2ev2.(*command).runAsync.func1(0xc82016c200, 0xc8201c2000, 0x25a700, 0x22)
/Users/m/dev/go/src/gopkg.in/godo.v2/cmd.go:113 +0x2e7
created by gopkg.in/godo%2ev2.(*command).runAsync
/Users/m/dev/go/src/gopkg.in/godo.v2/cmd.go:115 +0x12f
I figured it out
When godo is booting up, the event is triggered once and then c.FileEvent is nil.
When godo has booted, c.FileEvent will not be nil
so the following works for me:
p.Task("lint-php", nil, func(c *do.Context) {
if c.FileEvent == nil {
return
}
c.Run(fmt.Sprintf("php -l %s", c.FileEvent.Path))
}).Src("app/**/*.{php}")
To clarify, the initial task run is programmatic and subsequent runs are react to file watch events.