It's currently not possible to check if a task actually exists.
I'd like to delete a task, and if it does not exist I want to ignore the error.
Usually this can be done by checking os.IsNotExist(err). However, taskService.DeleteTask wraps the underlying OS error with the verb %v, which effectively loses type information:
I could also try something with GetRegisteredTask, but the goDoc doesn't really make sense:
// GetRegisteredTask attempts to find the specified registered task and returns a
// pointer to it if it exists. If it doesn't exist, nil will be returned in place of
// the registered task.
The return type is a struct, it can't be nil. I also can't compare it with the struct's zero-value, because the struct is not comparable due to the embedded *ole.IDispatch. But that doesn't matter, because GetRegisteredTask also returns an error - the same one as DeleteTask.
Right now, the only way I can check for this scenario is by comparing error messages - which is pretty fragile, considering that windows likes to translate error messages.
I originally wrote taskmaster right around when Go 1.13 was released, so I wasn't familiar with the new errors api at the time. I agree that errors should be wrapped correctly though.
It's currently not possible to check if a task actually exists. I'd like to delete a task, and if it does not exist I want to ignore the error. Usually this can be done by checking
os.IsNotExist(err)
. However,taskService.DeleteTask
wraps the underlying OS error with the verb%v
, which effectively loses type information:Taskmaster should use
%w
instead.I could also try something with
GetRegisteredTask
, but the goDoc doesn't really make sense:The return type is a struct, it can't be nil. I also can't compare it with the struct's zero-value, because the struct is not comparable due to the embedded
*ole.IDispatch
. But that doesn't matter, becauseGetRegisteredTask
also returns an error - the same one asDeleteTask
.Right now, the only way I can check for this scenario is by comparing error messages - which is pretty fragile, considering that windows likes to translate error messages.