Adds hooks to MRSK. Currently just two hooks, pre-build and post-push. We could break the build and push into two separate commands if we found the need for post-build and/or pre-push hooks. Hooks are stored in `.mrsk/hooks`. Running `mrsk init` will now create that folder and add sample hook scripts. Hooks returning non-zero exit codes will abort the current command. Further potential work here: - We could replace the audit broadcast command with a post-deploy/post-rollback hook or similar - Maybe provide pre-command/post-command hooks that run after every mrsk invocation - Also look for hooks in `~/.mrsk/hooks`
15 lines
287 B
Ruby
15 lines
287 B
Ruby
class Mrsk::Commands::Hook < Mrsk::Commands::Base
|
|
def run(hook, **details)
|
|
[ ".mrsk/hooks/#{hook}", env: tags(**details).env ]
|
|
end
|
|
|
|
def hook_exists?(hook)
|
|
Pathname.new(hook_file(hook)).exist?
|
|
end
|
|
|
|
private
|
|
def hook_file(hook)
|
|
".mrsk/hooks/#{hook}"
|
|
end
|
|
end
|