https://github.com/mxcl/generate-podspec
Generate a podspec for your SwiftPM project based on tagged releases.
https://github.com/mxcl/generate-podspec
Last synced: over 1 year ago
JSON representation
Generate a podspec for your SwiftPM project based on tagged releases.
- Host: GitHub
- URL: https://github.com/mxcl/generate-podspec
- Owner: mxcl
- Created: 2020-06-07T19:24:14.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-02-22T11:50:47.000Z (over 2 years ago)
- Last Synced: 2025-04-11T04:04:55.236Z (over 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 69.3 KB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Pre-release
I started this but it's not finished.
# Generate Podspec
Generate a podspec for your SwiftPM project based on tagged releases.
# Why?
You have all this metadata already, why force yourself to do an additional
step when making releases when you could deploy continuously?
# How
1. Add a new workflow (eg `.github/workflows/release.yml`) like this:
```yaml
name: Push to CocoaPods Trunk
on:
release:
types:
- created
jobs:
build:
runs-on: macos-latest # comes with CocoaPods, use Ubuntu if you like, but you have to install it yourself
steps:
- uses: mxcl/generate-podspec@v1
id: podspec
with:
author: Joe Smith
author-email: ${{ secrets.email }} # doesn’t have to be a secret
token: ${{ github.token }} # you get this automatically, but it must be passed
swift-versions: '4.2, 5.0' # GitHub Actions don’t support arrays currently
- run: pod trunk push
env:
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
# ^^ CocoaPods docs tell you how to get this (from your .netrc)
# optionally attach the podspec as a build artifact
- uses: actions/upload-artifact@v2
with:
name: podspec
path: ${{ steps.output.podspec.name }}
```
2. Tag a release at https://github.com/your/repo/releases
We determine as many podspec fields as possible:
* `version`: from the release name or release tag, whichever *first* passes as a semantic-version (`v` prefix allowed)
* `license`: we ask GitHub what license you use
* `summary`: we grab your repo description
* `homepage`: the repo GitHub page
# Inputs
|---------------|---------------|---------------|
| Key | Required | Description |
|---------------|---------------|---------------|
| `author` | ✓ | eg. Max Howell |
| `author-email`| ✓ | eg. max.howell@example.com |
| `swift-versions` | | eg. `4.2, 5.0` |
| `macOS-deployment-target` | | eg. 10.10 |
| `iOS-deployment-target` | | |
| `tvOS-deployment-target` | | |
| `watchOS-deployment-target` | | |
|---------------|---------------|---------------|
We require both author and author-email as there is no reliable way we can get those
from the environment unfortunately.
# Caveats
* We assume your sources are in `Sources`, if yours are not, you cannot currently
use this action, but you could fork and fix.
# TODO
We could probably get swift-versions from your `Package.swift` manifest,
feel free to PR.
# I Need More Complexity
If you need more complexity then probably you want a different action that
will work with a Podspec template, or modify your existing Podspec
automatically. This is outside of the scope for this project.