The edit command can now be called non-interactively to set properties/tags.

This commit is contained in:
2026-02-08 05:50:30 -06:00
parent 7d5d55d24a
commit 3d8fafd7b2
3 changed files with 19 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
# Package
version = "4.32.0"
version = "4.32.1"
author = "Jonathan Bernard"
description = "Personal issue tracker."
license = "MIT"

View File

@@ -253,11 +253,6 @@ when isMainModule:
elif args["edit"]:
for editRef in @(args["<ref>"]):
let propsOption =
if args["--properties"]:
some(parsePropertiesOption($args["--properties"]))
else: none(TableRef[string, string])
var stateOption = none(IssueState)
try: stateOption = some(parseEnum[IssueState](editRef))
@@ -267,10 +262,16 @@ when isMainModule:
let state = stateOption.get
ctx.loadIssues(state)
for issue in ctx.issues[state]:
if propsOption.isSome:
for k,v in propsOption.get:
if propertiesOption.isSome:
for k,v in propertiesOption.get:
issue[k] = v
edit(issue)
if tagsOption.isSome:
issue.tags = deduplicate(issue.tags & tagsOption.get)
if exclTagsOption.isSome:
issue.tags = issue.tags.filter(
proc (tag: string): bool = not exclTagsOption.get.anyIt(it == tag))
if args["--non-interactive"]: issue.store()
else: edit(issue)
updatedIssues.add(issue)
else:
@@ -278,7 +279,13 @@ when isMainModule:
if propertiesOption.isSome:
for k,v in propertiesOption.get:
issue[k] = v
edit(issue)
if tagsOption.isSome:
issue.tags = deduplicate(issue.tags & tagsOption.get)
if exclTagsOption.isSome:
issue.tags = issue.tags.filter(
proc (tag: string): bool = not exclTagsOption.get.anyIt(it == tag))
if args["--non-interactive"]: issue.store()
else: edit(issue)
updatedIssues.add(issue)
elif args["tag"]:

View File

@@ -1,4 +1,4 @@
const PIT_VERSION* = "4.32.0"
const PIT_VERSION* = "4.32.1"
const USAGE* = """Usage:
pit ( new | add) <summary> [<state>] [options]
@@ -248,4 +248,4 @@ Issue Properties:
If present, expected to be a comma-delimited list of text tags. The -g
option is a short-hand for '-p tags:<tags-value>'.
"""
"""