project

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package project manages the TOML-backed project registry for ttal.

Projects are stored in ~/.config/ttal/projects.toml (or a per-team variant) as top-level alias sections with name and path fields; archived projects live under [archived]. The Store type provides CRUD and archive/unarchive operations with atomic writes, while resolve.go resolves project paths from taskwarrior project strings.

Plane: shared

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ResolveProjectPath

func ResolveProjectPath(projectName string) string

ResolveProjectPath looks up a project path by matching the taskwarrior project field against the ttal project alias. Returns empty string if no match found (caller should notify lifecycle agent).

Resolution order:

  1. If projectName matches an alias (with hierarchical fallback: "ttal.pr" → "ttal") → use that project's path
  2. If projectName contains exactly one alias ("ttal-cli" contains "ttal") → use that project's path
  3. If no match but only ONE project exists → use it (single-project shortcut)
  4. Otherwise → return empty (no match)

func ValidateProjectAlias added in v1.0.0

func ValidateProjectAlias(alias string) error

ValidateProjectAlias checks that a project alias exists (exact match, active only). Returns a user-friendly error listing available projects if not found.

Types

type Project added in v1.0.0

type Project struct {
	Name     string `toml:"name"`
	Path     string `toml:"path"`
	Image    string `toml:"image"`
	Alias    string `toml:"-"` // derived from TOML key
	Archived bool   `toml:"-"` // derived from section
}

Project represents a project entry.

type Store added in v1.0.0

type Store struct {
	// contains filtered or unexported fields
}

Store manages project TOML files.

func NewStore added in v1.0.0

func NewStore(path string) *Store

NewStore creates a store for the given TOML file path.

func (*Store) Add added in v1.0.0

func (s *Store) Add(alias, name, path string) error

Add creates a new project. Returns error if alias already exists.

func (*Store) Archive added in v1.0.0

func (s *Store) Archive(alias string) error

Archive moves a project from active to archived.

func (*Store) Delete added in v1.0.0

func (s *Store) Delete(alias string) error

Delete permanently removes a project from either section.

func (*Store) Exists added in v1.0.0

func (s *Store) Exists(alias string) (bool, error)

Exists checks whether a project alias exists (in either active or archived).

func (*Store) Get added in v1.0.0

func (s *Store) Get(alias string) (*Project, error)

Get returns a project by alias (active only). Returns nil if not found.

func (*Store) List added in v1.0.0

func (s *Store) List(archived bool) ([]Project, error)

List returns all projects. If archived is true, returns only archived; otherwise only active.

func (*Store) Modify added in v1.0.0

func (s *Store) Modify(alias string, updates map[string]string) error

Modify updates fields on an existing active project.

func (*Store) Path added in v1.0.0

func (s *Store) Path() string

Path returns the store file path.

func (*Store) Unarchive added in v1.0.0

func (s *Store) Unarchive(alias string) error

Unarchive moves a project from archived back to active.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL