Skip to content

essentialkaos/perfecto

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

ChecksInstallingUsageBuild 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.19+ workspace (instructions), then:

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

# EL7 (OracleLinux/CentOS 7)
sudo yum install perfecto

# 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

Usage: perfecto {options} spec…

Options

  --ignore, -I id…           Disable one or more checks by their ID
  --format, -f format        Output format (summary|tiny|short|github|json|xml)
  --lint-config, -c file     Path to RPMLint configuration file
  --error-level, -e level    Return non-zero exit code if alert level greater than given (notice|warning|error|critical)
  --quiet, -q                Suppress all normal output
  --no-lint, -nl             Disable RPMLint checks
  --no-color, -nc            Disable colors in output
  --help, -h                 Show this help message
  --version, -v              Show version

Examples

  perfecto app.spec
  Check spec and print extended report

  perfecto --no-lint app.spec
  Check spec without rpmlint and print extended report

  perfecto --ignore PF2,PF12 app.spec
  Check spec without PF2 and PF12 checks

  perfecto --format tiny app.spec
  Check spec and print tiny report

  perfecto --format summary app.spec
  Check spec and print summary

  perfecto --format json app.spec 1> report.json
  Check spec, generate report in JSON format and save as report.json

Build Status

Branch Status
master CI
develop CI

License

Apache License, Version 2.0