Skip to content

Support custom tag message from CLI or file (for artifact metadata) #39

@a-magdy

Description

@a-magdy

Summary

  • Allow customizing the annotated tag message used by git-artifact from either a command-line string or a file/STDIN.
  • This lets users embed build/CI metadata so artifacts can be discovered and audited later.

Current behavior

  • Tag message content is not directly configurable from the CLI (users cannot supply an arbitrary message body).

Expected behavior / Interface

  • --message, -m "": set the tag message directly from the command line (supports multi-line via shell quoting).
  • --message-file, -F : read the tag message from a file. Use - to read from STDIN.
  • Precedence and validation:
    • Disallow using --message and --message-file together (match git's behavior: error out if both are provided).
    • If neither flag is provided, keep the current default message behavior.
  • Optional CI env support:
    • Respect env vars GIT_ARTIFACT_MESSAGE or GIT_ARTIFACT_MESSAGE_FILE when flags are not provided (useful in CI).

Notes and edge cases

  • Multi-line messages should be preserved as-is (like git tag -a -m/-F).
  • Very large messages: consider a reasonable size limit to avoid accidental bloat.
  • Non-UTF-8 input: either reject with a clear error or document how it will be handled.
  • Empty message (0 bytes): fall back to the default message or require an explicit --allow-empty-message flag.

Examples

  • git-artifact create -m "Build $GITHUB_RUN_ID | SHA: $GITHUB_SHA"
  • git-artifact create -F artifact-message.txt
  • printf "build: %s\nurl: %s\n" "$CI_PIPELINE_ID" "$CI_JOB_URL" | git-artifact create -F -

Rationale

  • Users often need to annotate artifacts with provenance metadata (pipeline ID, commit, URL, versions). First-class support makes this safer and more ergonomic.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions