SlopScore
00 crowd

plist-yaml-plist-swift

Swift implementation of plistyamlplist
Open repo on GitHubgithub.com/grahampugh/plist-yaml-plist-swift
Swift · ★ 5 · 1 forks · Apache-2.0 · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 44 minutes ago by grahampugh · last checked 44 minutes ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-14: Swift implementation of plistyamlplist; its own README says "plist-yaml-plist (Swift) A completely vibe-coded Swift implementation of the plist-yaml-plist conversion tool". 5 stars; Apache-2.0 license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as grahampugh. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Swift implementation of plistyamlplist
topics
autopkgconverterplist-filesyaml-files
created
2026-03-26 · pushed 1 hour ago · 28 commits · 3 contributors
release
v1.0.2 · 2026-10-14
languages
Swift 89%Makefile 11%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 44 minutes ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
makefileswift
topic (detected)
autopkgconverterplist-filesyaml-files
license (detected)
apache-2.0

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: Swift implementation of plistyamlplist; its own README says "plist-yaml-plist (Swift) A completely vibe-coded Swift implementation of the plist-yaml-plist conversion tool". It carries the Apache-2.0 license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

plist-yaml-plist (Swift)

A completely vibe-coded Swift implementation of the plist-yaml-plist conversion tool. Converts between Apple plist, YAML, and JSON formats with special optimizations for AutoPkg recipes.

Features

  • Bidirectional conversion: plist ↔ YAML, JSON → plist
  • AutoPkg recipe optimization: Automatic formatting and key ordering for AutoPkg recipes
  • Batch processing: Convert entire directories with glob patterns
  • Smart path handling: Recognizes YAML/_YAML and JSON/_JSON folder conventions
  • Native performance: Leverages Swift and Foundation for fast, native macOS performance

Requirements

  • macOS 15.0 or later
  • Swift 6.0 or later (for building from source)

Installation

Installing from Release Package

Download the latest .pkg installer from the Releases page and run it. The binary will be installed to /usr/local/bin/plistyamlplist.

Note that the neither the package nor the binary are signed. So you'll have to remove the quarantine bit or use the bypass mechanism in Privacy Settings to install and run the binary.

Building from Source

git clone https://github.com/grahampugh/plist-yaml-plist-swift.git
cd plist-yaml-plist-swift
swift build -c release
sudo cp .build/release/plistyamlplist /usr/local/bin/

Usage

Basic Conversion

# Convert plist to YAML
plistyamlplist file.plist [output.yaml]

# Convert YAML to plist
plistyamlplist file.yaml [output.plist]

# Convert JSON to plist
plistyamlplist file.json [output.plist]

If the output file is omitted:

  • .plist files → replaces .plist extension with .yaml (e.g. foo.recipe.plist → foo.recipe.yaml)
  • .recipe files (and other plist files without a .plist extension) → appends .yaml (e.g. foo.recipe → foo.recipe.yaml)
  • .yaml files → removes .yaml extension
  • .json files → removes .json extension

AutoPkg Recipe Formatting

# Tidy a YAML recipe in-place
plistyamlplist recipe.yaml --tidy

# Tidy all recipes in a folder
plistyamlplist /path/to/YAML/ --tidy

Batch Conversion

# Convert all YAML files matching a pattern (note the quotes)
plistyamlplist '/path/to/*.yaml'

# Convert all plist-based AutoPkg recipes in a folder to YAML
plistyamlplist '/path/to/recipes/*.recipe'

# Convert entire folder (processes plist, YAML, and JSON files)
plistyamlplist /path/to/recipes/

# Convert entire folder with output to a different directory
plistyamlplist /path/to/recipes/ /path/to/output/

# Tidy all recipes in a folder recursively
plistyamlplist /path/to/YAML/ --tidy

Note: When using glob patterns from the command line, wrap the pattern in quotes to prevent shell expansion.

YAML/JSON Folder Convention

If your path contains YAML or _YAML (or JSON/_JSON), the tool automatically maps output paths to the parent folder:

  • Input: /project/YAML/subfolder/file.yaml
  • Output: /project/subfolder/file.plist (if /project/subfolder exists)

AutoPkg Recipe Optimization

When converting AutoPkg recipes (files ending in .recipe, .recipe.plist, or .recipe.yaml), the tool automatically:

  1. Orders top-level keys: Comment → Description → Identifier → ParentRecipe → MinimumVersion → Input → Process → ParentRecipeTrustInfo
  2. Orders Process entries: Processor key first, then Comment, then Arguments
  3. Orders Input dictionary: NAME key always first
  4. Adds blank lines: Before Input, Process, each Processor, and ParentRecipeTrustInfo for readability

Comparison with Python Version

This Swift implementation provides:

  • Full CLI compatibility with the Python version
  • All AutoPkg recipe optimizations
  • Native binary plist support (no plutil command needed)
  • Faster performance for batch operations
  • Same folder convention handling (YAML/_YAML, JSON/_JSON)
  • Glob pattern support for batch conversion
  • Requires macOS 15+ (Python version supports older macOS)

Implementation Status

Complete

  • Single file conversion (plist ↔ YAML, JSON → plist)
  • Batch conversion with glob patterns
  • Directory recursion with structure replication
  • AutoPkg recipe detection and optimization
  • YAML/_YAML and JSON/_JSON folder conventions
  • --tidy flag for recipe reformatting
  • Binary and XML plist support

In Testing

  • Complex AutoPkg recipe formatting edge cases
  • Large-scale batch operations

Examples

Basic Usage

# Simple conversion
$ plistyamlplist com.example.plist
plist-yaml-plist version 1.0.2
Processing plist file...
Wrote to: com.example.plist.yaml

# Reverse conversion
$ plistyamlplist com.example.plist.yaml
plist-yaml-plist version 1.0.2
Processing yaml file...
Written to com.example.plist

YAML Folder Convention

# Input file in YAML subfolder
$ plistyamlplist /Users/admin/recipes/YAML/Chrome.recipe.yaml
YAML folder exists: /Users/admin/recipes/YAML/Chrome.recipe.yaml
Path exists: /Users/admin/recipes
Wrote to: /Users/admin/recipes/Chrome.recipe

# The tool automatically maps YAML/subfolder → subfolder

Batch Operations

# Convert all plist files in a directory to YAML
$ plistyamlplist '/tmp/plists/*.plist'
plist-yaml-plist version 1.0.2
Processing 15 file(s)...
Wrote to: /tmp/plists/file1.yaml
Wrote to: /tmp/plists/file2.yaml
...

# Convert all plist-based AutoPkg recipes in a directory to YAML
$ plistyamlplist '/tmp/recipes/*.recipe'
plist-yaml-plist version 1.0.2
Processing 3 file(s)...
Wrote to: /tmp/recipes/MyApp.recipe.yaml
Wrote to: /tmp/recipes/OtherApp.recipe.yaml
...

AutoPkg Recipe Tidying

# Tidy a single recipe
$ plistyamlplist MyRecipe.recipe.yaml --tidy
Wrote to: MyRecipe.recipe.yaml

# Tidy all recipes in a folder
$ plistyamlplist /path/to/YAML/ --tidy
WARNING! Processing all subfolders...

Processed 47 file(s)

Credits

Swift port by Graham Pugh, based on the original Python implementation:

This project is completely vibe-coded using GitHub CoPilot CLI and the Claude Sonnet 4.5 model.

License

Apache License 2.0 - See LICENSE file for details

Building and Packaging

Quick Start

# Build and create installer package
make package

# Clean build artifacts
make clean

# Create GitHub pre-release (requires gh CLI)
make release

# Show all available targets
make help

Package Details

The Makefile creates a universal macOS installer package:

  • Binary: Universal (arm64 + x86_64)
  • Install Location: /usr/local/bin/plistyamlplist
  • Package Size: ~1.8MB
  • Identifier: com.github.grahampugh.plistyamlplist
  • Output: .build/pkg/plistyamlplist-{version}.pkg

GitHub Release

The make release target automatically:

  1. Builds the package
  2. Creates a GitHub pre-release
  3. Uploads the .pkg file
  4. Generates release notes

Requirements:

  • GitHub CLI (brew install gh)
  • Authenticated GitHub session (gh auth login)

After running make release, visit GitHub to publish the pre-release as a full release.

Read the rest on GitHub

Scan report · 2026-10-14
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review

From the balcony · 0 of 3 clapped

    Cap'm Slop, Princess and Crusoe read it and passed. Their reasons are on the balcony, with every other verdict.

    Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

    0 comments

    log in to comment.

    report this listing — log in to report