Examples



Config

You can add a hooks field to your config file like this:

hooks: directory: /Users/adrian/Dropbox/TaskLite/hooks launch: pre: - interpreter: v body: | fn main() { println('{ "message": "📜 Pre launch message", "warning": "⚠️ Pre launch warning", "error": "❌ Pre launch error" }') } post: [] add: pre: [] post: [] modify: pre: [] post: [] exit: pre: []

V Lang Scripts

Save the examples in the hooks directory as pre-launch.v, etc.

Pre Launch

fn main() { println('{ "message": "📜 Pre launch message", "warning": "⚠️ Pre launch warning", "error": "❌ Pre launch error" }') }

Post Launch

import os import json struct PostLaunchInput { mut: arguments []string } struct PostLaunchOutput { message string warning string error string } fn main() { stdin := os.get_raw_lines_joined() mut input := json.decode(PostLaunchInput, stdin)! println(json.encode(PostLaunchOutput{ message: '📜 Post launch message\n' + // 'Provided arguments: ${input.arguments}\n' warning: '⚠️ Post-launch warning' error: '❌ Post-launch error' })) }

Pre Add

import os import json struct Task { mut: body string tags []string } struct PreAddInput { mut: task_to_add Task @[json: 'taskToAdd'] arguments []string } struct PreAddOutput { mut: task Task message string warning string error string } fn main() { stdin := os.get_raw_lines_joined() input_data := json.decode(PreAddInput, stdin)! mut task := input_data.task_to_add task.tags << 'additional-tag' pre_add_output := PreAddOutput{ task: task message: '📜 Pre-add message\n' + // 'Provided arguments: ${input_data.arguments.str()}\n' + // 'Provided task: ${input_data.task_to_add.str()}\n' + // 'Updated task: ${task.str()}\n' warning: '⚠️ Pre-add warning' error: '❌ Pre-add error' } println(json.encode(pre_add_output)) }

Post Add

import os import json struct Task { mut: body string tags []string } struct PostAddInput { mut: arguments []string task_added Task @[json: 'taskAdded'] } struct PostAddOutput { mut: message string warning string error string } fn main() { stdin := os.get_raw_lines_joined() mut input_data := json.decode(PostAddInput, stdin)! post_add_output := PostAddOutput{ message: '📜 Post-add message\n' + // 'Provided arguments: ${input_data.arguments.str()}\n' + // 'Added task: ${input_data.task_added.str()}\n' warning: '⚠️ Post-add warning' error: '❌ Post-add error' } println(json.encode(post_add_output)) }

Pre Modify

import os import json struct Task { mut: body string tags []string } struct PreModifyInput { mut: arguments []string task_to_modify Task @[json: 'taskToModify'] } struct PreModifyOutput { mut: task Task message string warning string error string } fn main() { stdin := os.get_raw_lines_joined() input_data := json.decode(PreModifyInput, stdin)! mut task := input_data.task_to_modify task.tags << 'additional-tag' pre_modify_output := PreModifyOutput{ task: task // TODO: This should be parsed by TaskLite and used downstream message: '📜 Pre-modify message\n' + // 'Provided arguments: ${input_data.arguments.str()}\n' + // 'Provided task: ${input_data.task_to_modify.str()}\n' + // 'Updated task: ${task.str()}\n' warning: '⚠️ Pre-modify warning' error: '❌ Pre-modify error' } println(json.encode(pre_modify_output)) }

Post Modify

import os import json struct Task { mut: body string tags []string } struct PostModifyInput { mut: arguments []string task_modified Task @[json: 'taskModified'] } struct PostModifyOutput { mut: message string warning string error string } fn main() { stdin := os.get_raw_lines_joined() mut input_data := json.decode(PostModifyInput, stdin)! post_modify_output := PostModifyOutput{ message: '📜 Post-modify message\n' + // 'Provided arguments: ${input_data.arguments.str()}\n' + // 'Modified task: ${input_data.task_modified.str()}\n' warning: '⚠️ Post-modify warning' error: '❌ Post-modify error' } println(json.encode(post_modify_output)) }

Pre Exit

fn main() { println('{ "message": "📜 Pre exit message", "warning": "⚠️ Pre exit warning", "error": "❌ Pre exit error" }') }

Shell Scripts

Save the examples in the hooks directory as pre-launch.sh, etc.

Pre Launch

stdin=$(cat) >&2 echo "File > pre-launch: Input via stdin:" >&2 echo "$stdin" echo "{}"

Post Launch

stdin=$(cat) >&2 echo "File > post-launch: Input via stdin:" >&2 echo "$stdin" echo "{}"

Pre Add

stdin=$(cat) >&2 echo "File > pre-add: Input via stdin:" >&2 echo "$stdin" echo "{}"