/perfecto

Utility for linting RPM spec files

Primary LanguageGoApache License 2.0Apache-2.0

GoReportCard Code Climate Maintainability Codebeat badge Codacy badge
Coverage Status GitHub Actions CI Status GitHub Actions CodeQL Status

ChecksInstallingUsageCI StatusLicense


perfecto is tool for checking perfectly written RPM specs. Currently, perfecto used by default for checking specs for EK Public Repository.

Screenshot

Screenshot

Checks

You can find additional information about every perfecto check in project wiki.

Installing

From sources

Make sure you have a working Go 1.22+ workspace (instructions), then:

go install github.com/essentialkaos/perfecto@latest
sudo dnf install -y https://pkgs.kaos.st/kaos-repo-latest.el$(grep 'CPE_NAME' /etc/os-release | tr -d '"' | cut -d':' -f5).noarch.rpm

# EL8 (OracleLinux/Alma/Rocky 8)
sudo dnf install perfecto

# Alma/Rocky 9
sudo dnf --enablerepo=crb install perfecto
# OracleLinux 9
sudo dnf --enablerepo=ol9_codeready_builder install perfecto

Prebuilt binaries

You can download prebuilt binaries for Linux and macOS from EK Apps Repository:

bash <(curl -fsSL https://apps.kaos.st/get) perfecto

Container image

Official perfecto images available on GitHub Container Registry and Docker Hub. Install the latest version of Podman or Docker, then:

curl -#L -o perfecto-container https://kaos.sh/perfecto/perfecto-container
chmod +x perfecto-container
sudo mv perfecto-container /usr/bin/perfecto
perfecto your.spec

Official container images with perfecto:

Using with Github Actions

For using latest stable version perfecto with Github Actions use this perfecto.yml file or add it to your workflow:

name: Perfecto

on:
  push:
    branches: [master, develop]
  pull_request:
    branches: [master]

jobs:
  Perfecto:
    name: Perfecto
    runs-on: ubuntu-latest

    steps:
      - name: Code checkout
        uses: actions/checkout@v3

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Check specs with Perfecto
        uses: essentialkaos/perfecto-action@v1
        with:
          files: myapp.spec

Additional information about action configuration can be found on the official GitHub action page.

Usage

CI Status

Branch Status
master CI
develop CI

License

Apache License, Version 2.0