create

package
v0.18.1 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package create is the single owner of project, issue-type, and priority resolution for gadak create (CLI and REST). Both surfaces must call these functions so a default cannot exist on one path and not the other.

Need* errors carry catalogue data only. The CLI formats flag names; REST maps them to stable wire codes. This package does not name CLI flags.

Index

Constants

View Source
const (
	SourceFlag   = "flag"
	SourceConfig = "config"
	SourceSole   = "sole"
	SourceAlias  = "alias"
)

Source names recorded on --json / the REST create response so a caller can see why a project or type was chosen. Alias is a match that was not the catalog id or display name — untranslatedName, a hierarchy-derived epic/subtask token, or the small standard-name locale table.

Variables

This section is empty.

Functions

func FillNeedProject added in v0.17.0

func FillNeedProject(err error, catalog []origin.CreateMetaProject) error

FillNeedProject copies origin-known keys onto an empty NeedProjectError so a paired workspace (no local DefaultProject / Projects) can still print `configured: STD, IDEA`. Catalog empty leaves the error unchanged.

func FormatProjectKeys added in v0.17.0

func FormatProjectKeys(meta []origin.CreateMetaProject) string

FormatProjectKeys is the "KEY, KEY" list used in project-resolution errors.

func FormatTypes

func FormatTypes(types []origin.NamedID) string

FormatTypes is the "Name (id N); …" list used in type-resolution errors.

func MetaFor

MetaFor picks the createmeta project (case-insensitive key) and its types. A miss lists the keys in meta the same way Type lists the issue-type catalog. Types stay as CreateMetaIssueType so Type can see hierarchy and untranslatedName; NamedID flattening is FormatTypes / NeedTypeError only.

func MetaForWithCatalog added in v0.17.0

MetaForWithCatalog is MetaFor, then the site catalog when the first answer had no keys to list (Jira's createmeta filtered to a missing key is empty). The catalog is fetched only on that fallback path, scoped to the profile's projects. CLI and REST both route here so they print the same available list.

func Priority

func Priority(want string, list []origin.NamedID) (id string, err error)

Priority resolves a user-supplied name or id against the site catalog. Names follow the account language; the return is always the catalog id.

func PriorityField

func PriorityField(id string) map[string]string

PriorityField is the Jira fields.priority value: always an id, never a localized name. Create and edit both send this shape.

func ProjectKeys added in v0.17.0

func ProjectKeys(meta []origin.CreateMetaProject) []string

ProjectKeys is the createable project-key list from a createmeta payload.

Types

type CreateMetaSource added in v0.17.0

type CreateMetaSource interface {
	CreateMeta(ctx context.Context, projects []string) ([]origin.CreateMetaProject, error)
}

CreateMetaSource is the origin verb MetaForWithCatalog uses on the empty-filter fallback. origin.Writer and *jira.Client both satisfy it.

type NeedPriorityError

type NeedPriorityError struct {
	Available []origin.NamedID
}

NeedPriorityError is returned when a priority name or id was required but empty. Available is the site catalog. Surfaces format this.

func (*NeedPriorityError) Error

func (e *NeedPriorityError) Error() string

type NeedProjectError

type NeedProjectError struct {
	Configured []string
}

NeedProjectError is returned when create cannot resolve a project. Configured is the profile project list (may be empty). Surfaces format this.

func (*NeedProjectError) Error

func (e *NeedProjectError) Error() string

type NeedTypeError

type NeedTypeError struct {
	Available []origin.NamedID
}

NeedTypeError is returned when create cannot resolve an issue type. Available is the createmeta catalog. Surfaces format this.

func (*NeedTypeError) Error

func (e *NeedTypeError) Error() string

type Resolved

type Resolved struct {
	Value  string `json:"value"`
	Source string `json:"source"`
}

Resolved is one filled create field and where it came from.

func Project

func Project(want string, cfg *config.Config) (Resolved, error)

Project resolves the create project:

  1. explicit flag / request field
  2. profile DefaultProject
  3. the sole configured project
  4. otherwise fail — inventing a project is not a default.

func Type

func Type(want string, types []origin.CreateMetaIssueType, cfg *config.Config, project string) (Resolved, error)

Type resolves the create issue type:

  1. explicit flag / request field (matchType: id, name, then aliases)
  2. profile DefaultIssueTypeID, matched by id only
  3. the project has exactly one createmeta type
  4. otherwise fail

types[0] is deliberately not a fallback. The web dialog may pick types[0] because the person can see and change it before submit. A headless CLI or REST caller never sees that value, so the same fallback would silently file as the wrong type.

Jump to

Keyboard shortcuts

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