[package] name = "podlet" version = "0.3.0" authors = ["Paul Nettleton "] edition = "2021" description = "Generate Podman Quadlet files from a Podman command, compose file, or existing object" readme = "README.md" repository = "https://github.com/containers/podlet" license = "MPL-2.0" keywords = ["podman", "quadlet", "containers"] categories = ["command-line-utilities"] [lints.rust] unused_crate_dependencies = "warn" unused_import_braces = "warn" unused_lifetimes = "warn" unused_macro_rules = "warn" unused_qualifications = "warn" [lints.clippy] pedantic = { level = "warn", priority = -1 } cargo = { level = "warn", priority = -1 } multiple_crate_versions = "allow" # restriction lint group clone_on_ref_ptr = "warn" dbg_macro = "warn" empty_drop = "warn" empty_structs_with_brackets = "warn" exit = "warn" format_push_string = "warn" if_then_some_else_none = "warn" indexing_slicing = "warn" integer_division = "warn" mixed_read_write_in_expression = "warn" mod_module_files = "warn" multiple_inherent_impl = "warn" needless_raw_strings = "warn" panic = "warn" pub_without_shorthand = "warn" rc_buffer = "warn" rc_mutex = "warn" redundant_type_annotations = "warn" rest_pat_in_fully_bound_structs = "warn" same_name_method = "warn" semicolon_outside_block = "warn" string_slice = "warn" string_to_string = "warn" suspicious_xor_used_as_pow = "warn" tests_outside_test_module = "warn" todo = "warn" try_err = "warn" unimplemented = "warn" unnecessary_self_imports = "warn" unreachable = "warn" unwrap_used = "warn" verbose_file_reads = "warn" [dependencies] clap = { version = "4.2", features = ["derive", "wrap_help"] } color-eyre = "0.6" compose_spec = "0.2" indexmap = { version = "2", features = ["serde"] } ipnet = { version = "2.7", features = ["serde"] } k8s-openapi = { version = "0.22.0", features = ["latest"] } path-clean = "1" serde = { version = "1", features = ["derive"] } serde_json = "1" serde_yaml = "0.9.21" shlex = "1.3" smart-default = "0.7" thiserror = "1.0.40" umask = "2.1.0" url = "2.3" [target.'cfg(unix)'.dependencies] nix = { version = "0.28.0", features = ["user"] } zbus = "4.0.0" # The profile that 'cargo dist' will build with [profile.dist] inherits = "release" lto = "thin" # Config for 'cargo dist' [workspace.metadata.dist] # The preferred cargo-dist version to use in CI (Cargo.toml SemVer syntax) cargo-dist-version = "0.14.1" # CI backends to support ci = "github" # Target platforms to build apps for (Rust target-triple syntax) targets = [ "aarch64-apple-darwin", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl", "x86_64-pc-windows-msvc", ] # The installers to generate for each app installers = [] # Publish jobs to run in CI pr-run-mode = "plan" # Config for 'git cliff' # Run with `GITHUB_TOKEN=$(gh auth token) git cliff --bump -up CHANGELOG.md` # https://git-cliff.org/docs/configuration [workspace.metadata.git-cliff.bump] features_always_bump_minor = false breaking_always_bump_major = false [workspace.metadata.git-cliff.remote.github] owner = "containers" repo = "podlet" [workspace.metadata.git-cliff.changelog] # changelog header header = """ # Changelog\n All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n """ # template for the changelog body # https://keats.github.io/tera/docs/#introduction body = """ {%- macro remote_url() -%} https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} {%- endmacro -%} {% if version -%} ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} {% else -%} ## [Unreleased] {% endif -%} {% for group, commits in commits | group_by(attribute="group") %} ### {{ group | striptags | trim | upper_first }} {%- for commit in commits %} - {% if commit.breaking %}**BREAKING** {% endif -%} {% if commit.scope %}*({{ commit.scope }})* {% endif -%} {{ commit.message | trim | upper_first }}\ {% if commit.github.username and commit.github.username != "k9withabone" %} by \ [@{{ commit.github.username }}](https://github.com/{{ commit.github.username }})\ {%- endif -%} {% if commit.github.pr_number %} in \ [#{{ commit.github.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.github.pr_number }})\ {%- endif -%}. {%- set fixes = commit.footers | filter(attribute="token", value="Fixes") -%} {%- set closes = commit.footers | filter(attribute="token", value="Closes") -%} {% for footer in fixes | concat(with=closes) -%} {%- set issue_number = footer.value | trim_start_matches(pat="#") %} \ ([{{ footer.value }}]({{ self::remote_url() }}/issues/{{ issue_number }}))\ {%- endfor -%} {% if commit.body %} {%- for section in commit.body | trim | split(pat="\n\n") %} {% raw %} {% endraw %}- {{ section | replace(from="\n", to=" ") }} {%- endfor -%} {%- endif -%} {% endfor %} {% endfor %} {%- if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %} ### New Contributors {%- endif -%} {% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} - @{{ contributor.username }} made their first contribution {%- if contributor.pr_number %} in \ [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ {%- endif %} {%- endfor %}\n """ # template for the changelog footer footer = """ {%- macro remote_url() -%} https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} {%- endmacro -%} {% for release in releases -%} {% if release.version -%} {% if release.previous.version -%} [{{ release.version | trim_start_matches(pat="v") }}]: \ {{ self::remote_url() }}/compare/{{ release.previous.version }}...{{ release.version }} {% else -%} {#- compare against the initial commit for the first version -#} [{{ release.version | trim_start_matches(pat="v") }}]: \ {{ self::remote_url() }}/compare/f9a7aadf5fca4966c3e8c7e6e495749d93029c80...v0.1.0 {% endif -%} {% else -%} [Unreleased]: {{ self::remote_url() }}/compare/{{ release.previous.version }}...HEAD {% endif -%} {%- endfor -%} """ # remove the leading and trailing whitespace from the templates trim = true # postprocessors postprocessors = [] [workspace.metadata.git-cliff.git] # parse the commits based on https://www.conventionalcommits.org conventional_commits = true # filter out the commits that are not conventional filter_unconventional = true # process each line of a commit as an individual commit split_commits = false # regex for preprocessing the commit messages commit_preprocessors = [] # regex for parsing and grouping commits commit_parsers = [ { message = "^feat", group = "Features" }, { body = ".*security", group = "Security" }, { message = "^fix", group = "Bug Fixes" }, { message = "^perf", group = "Performance" }, { message = "^doc", group = "Documentation" }, { message = "^test", group = "Tests" }, { message = "^refactor", group = "Refactor" }, { message = "^style", group = "Style" }, { message = "^chore", group = "Miscellaneous" }, { message = "^ci", default_scope = "ci", group = "Miscellaneous" }, { message = "^release", skip = true }, ] # protect breaking changes from being skipped due to matching a skipping commit_parser protect_breaking_commits = false # filter out the commits that are not matched by commit parsers filter_commits = false # regex for matching git tags tag_pattern = "v[0-9].*" # regex for skipping tags skip_tags = "v0.1.0-beta.1" # regex for ignoring tags ignore_tags = "" # sort the tags topologically topo_order = false # sort the commits inside sections by oldest/newest order sort_commits = "oldest" # limit the number of commits included in the changelog. # limit_commits = 42