{"id":16480801,"url":"https://github.com/pauby/pstodowarrior","last_synced_at":"2025-03-23T11:33:09.310Z","repository":{"id":56490519,"uuid":"43003140","full_name":"pauby/PSTodoWarrior","owner":"pauby","description":"This is a powershell CLI to the Todo.txt todo file format with some PowerShell like features and also taking inspiration from Taskwarrior.","archived":false,"fork":false,"pushed_at":"2020-11-04T11:43:17.000Z","size":194,"stargazers_count":10,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"development","last_synced_at":"2025-03-17T19:48:09.665Z","etag":null,"topics":["hacktoberfest","powershell","taskwarrior","todotxt"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pauby.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-23T13:37:32.000Z","updated_at":"2023-05-13T12:20:51.000Z","dependencies_parsed_at":"2022-08-15T19:40:47.168Z","dependency_job_id":null,"html_url":"https://github.com/pauby/PSTodoWarrior","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauby%2FPSTodoWarrior","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauby%2FPSTodoWarrior/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauby%2FPSTodoWarrior/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pauby%2FPSTodoWarrior/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pauby","download_url":"https://codeload.github.com/pauby/PSTodoWarrior/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245097167,"owners_count":20560311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","powershell","taskwarrior","todotxt"],"created_at":"2024-10-11T13:05:25.816Z","updated_at":"2025-03-23T11:33:08.812Z","avatar_url":"https://github.com/pauby.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PSTodoWarrior\n\nThis is a powershell CLI to the [Todo.txt](http://todotxt.com/) todo file format with some PowerShell like features taking inspiration from [Taskwarrior](http://taskwarrior.org).\n\n## Goal\n\nThe goal of this project is to create a command line interface to Todo.txt and add in some important Taskwarrior features such as prioritisation and ease of editing tasks.\n\n## Configuration\n\n```powershell\n$TWSettings = [pscustomobject]@{\n    TodoTaskPath        = $env:TODO_TASK\n    TodoDonePath        = $env:TODO_DONE\n\n    # Context and project name\n    # name text of the Context property of the todo - usually 'Context' or 'List'\n    NameContext         = 'List'\n    # name text of the Project property of the todo - usually 'Project' or 'Tag'\n    NameProject         = 'Tag'\n\n    # Addons\n    # addons to hide from output (note they are only hidden, not removed from the object)\n    HideAddons          = @( 'uuid' )\n\n    # Archives\n    # if $true automatically archives completed todos to the TodoDoneFile, if $false they remain in the TodoTaskFile\n    AutoArchive         = $true\n\n    # Backups\n    # backups are stored in the same folder as the TodoTaskFile\n    BackupPath          = 'backups'\n    # Number of backups to keep in the BackupFolder\n    BackupDaysToKeep    = 7\n\n    # Colours\n    # Colours for each weights - any weight at or above the level will be that colour (up to the previous value).\n    # This MUST be an ordered hashtable for it to work.\n    # it's in the format 'weight number' = 'valid PowerShell colour'\n    WeightForegroundColour = [ordered]@{\n        20  = 'yellow'\n        15  = 'red'\n        1   = 'darkgreen'\n    }\n\n    # Colour for information messages\n    ShowAlternatingColour   = 'DarkMagenta'\n    InfoMsgsColour          = 'DarkCyan'\n    DisableWriteHostUse     = $false\n\n    # Weights\n    # TODO: These needs explained\n    WeightPriority    = 6.0\n    WeightDueDate     = 12.0\n    WeightHasProject  = 1.0\n    WeightAge         = 2.0\n    WeightProject     = @{                    # all projects / tags must be in lowercase\n        next    = 15.0\n        waiting = -3.0\n        today   = 20.0\n        someday = -15.0\n    }\n\n    # Views\n    # TODO: These need explained\n    TodoLimit   = 25\n    View = @{\n#            'default' = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { foreach ($todo in $todos) { if (($todo.Project -contains $config['ProjectDefault']) -or ($todo.Priority) -or ($todo.Project -contains $config['ProjectNextAction'])) { $output += $todo } } } end { $output | where { [string]::IsNullOrWhitespace($_.DoneDate) } | Sort-Object -Property @{e=\"Weight\"; Descending=$true}, @{e=\"Line\"; Descending=$False} | Select-Object -First $config['TodoLimit'] } };\n#        default = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { foreach ($todo in $todos) { if (($todo.Context.Count -gt 0) -and ([string]::IsNullOrWhiteSpace($todo.DoneDate))) { $output += $todo } } } end { $output | where { [string]::IsNullOrWhitespace($_.DoneDate) } | Sort-Object -Property @{e=\"Weight\"; Descending=$true}, @{e=\"Line\"; Descending=$False} | Select-Object -First $config['TodoLimit'] } }\n        all         = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { foreach ($todo in $todos) { $output += $todo } } end { $output | sort Weight -Descending } }\n        inbox       = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { $output += $todos | where context -contains 'inbox' } end { $output | where { [string]::IsNullOrWhitespace($_.DoneDate) } | Sort-Object -Property Weight -Descending } }\n        wait        = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { $output += $todos | where project -contains 'waiting' } end { $output | where { [string]::IsNullOrWhitespace($_.DoneDate) } | Sort-Object -Property Weight -Descending } }\n        today       = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { $output += $todos | where { $_.project -contains 'today' -or ($_.addon.keys -contains 'due' -and $_.addon.due -le (Get-Date -Format 'yyyy-MM-dd')) } } end { $output | where { [string]::IsNullOrWhitespace($_.DoneDate) } | Sort-Object -Property Weight -Descending } }\n        duetoday    = { param([Parameter(ValueFromPipeline=$true)][object[]]$todos, [hashtable]$config); begin { $output = @() } process { $output += $todos | Where-Object { $_.addon.keys -contains 'due' } | Where-Object { $_.addon.due -eq (get-date -format 'yyyy-MM-dd') } } end { $output | where { [string]::IsNullOrWhitespace($_.DoneDate) } | Sort-Object -Property Weight -Descending } }\n\n    }\n}\n```\n\n# References\n\nReally useful overview on what the `todo.txt` format is (taken from [todo.txt format](https://github.com/todotxt/todo.txt)):\n\n![](https://raw.githubusercontent.com/todotxt/todo.txt/master/description.png)\n\n* The [Todo.txt Format](https://github.com/todotxt/todo.txt)\n* [SimpleTask](https://github.com/mpcjanssen/simpletask-android/blob/master/src/main/assets/listsandtags.en.md) - took the idea for some of the addons from here (recurring tasks, hidden tasks etc.)\n* {Simpletask LIsts and Tags] (https://github.com/mpcjanssen/simpletask-android/blob/master/src/main/assets/listsandtags.en.md)\n* [How to GTD with SimpleTask](https://gist.github.com/alehandrof/9941620)\n* [How TaskWarrior handles Urgency](http://taskwarrior.org/docs/urgency.html)\n* [How topydo handles urgency](https://github.com/bram85/topydo/wiki/Importance)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpauby%2Fpstodowarrior","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpauby%2Fpstodowarrior","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpauby%2Fpstodowarrior/lists"}