diff --git a/JSONAPI.podspec b/JSONAPI.podspec new file mode 100644 index 0000000..fe4dd9a --- /dev/null +++ b/JSONAPI.podspec @@ -0,0 +1,141 @@ +# +# Be sure to run `pod spec lint JSONAPI.podspec' to ensure this is a +# valid spec and to remove all comments including this before submitting the spec. +# +# To learn more about Podspec attributes see https://docs.cocoapods.org/specification.html +# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ +# + +Pod::Spec.new do |spec| + + # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # These will help people to find your library, and whilst it + # can feel like a chore to fill in it's definitely to your advantage. The + # summary should be tweet-length, and the description more in depth. + # + + spec.name = "JSONAPI" + spec.version = "0.19.0" + spec.summary = "Swift Codable JSON API framework." + + # This description is used to generate tags and improve search results. + # * Think: What does it do? Why did you write it? What is the focus? + # * Try to keep it short, snappy and to the point. + # * Write the description between the DESC delimiters below. + # * Finally, don't worry about the indent, CocoaPods strips it! + spec.description = <<-DESC + A Swift package for encoding to- and decoding from JSON API compliant requests and responses. + +See the JSON API Spec here: https://jsonapi.org/format/ + DESC + + spec.homepage = "https://github.com/mattpolzin/JSONAPI" + # spec.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" + + + # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Licensing your code is important. See https://choosealicense.com for more info. + # CocoaPods will detect a license file if there is a named LICENSE* + # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. + # + + # spec.license = "MIT" + spec.license = { :type => "MIT", :file => "LICENSE.txt" } + + + # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Specify the authors of the library, with email addresses. Email addresses + # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also + # accepts just a name if you'd rather not provide an email address. + # + # Specify a social_media_url where others can refer to, for example a twitter + # profile URL. + # + + spec.author = { "Mathew Polzin" => "matt.polzin@gmail.com" } + # Or just: spec.author = "Mathew Polzin" + # spec.authors = { "Mathew Polzin" => "matt.polzin@gmail.com" } + # spec.social_media_url = "https://twitter.com/Mathew Polzin" + + # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # If this Pod runs only on iOS or OS X, then specify the platform and + # the deployment target. You can optionally include the target after the platform. + # + + # spec.platform = :ios + # spec.platform = :ios, "5.0" + + # When using multiple platforms + spec.ios.deployment_target = "8.0" + spec.osx.deployment_target = "10.9" + # spec.watchos.deployment_target = "2.0" + # spec.tvos.deployment_target = "9.0" + + + # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Specify the location from where the source should be retrieved. + # Supports git, hg, bzr, svn and HTTP. + # + + spec.source = { :git => "https://github.com/mattpolzin/JSONAPI.git", :tag => "#{spec.version}" } + + + # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # CocoaPods is smart about how it includes source code. For source files + # giving a folder will include any swift, h, m, mm, c & cpp files. + # For header files it will include any header in the folder. + # Not including the public_header_files will make all headers public. + # + + spec.source_files = "Sources", "Sources/**/*.{swift}" + # spec.exclude_files = "Classes/Exclude" + + # spec.public_header_files = "Classes/**/*.h" + + + # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # A list of resources included with the Pod. These are copied into the + # target bundle with a build phase script. Anything else will be cleaned. + # You can preserve files from being cleaned, please don't preserve + # non-essential files like tests, examples and documentation. + # + + # spec.resource = "icon.png" + # spec.resources = "Resources/*.png" + + # spec.preserve_paths = "FilesToSave", "MoreFilesToSave" + + + # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Link your library with frameworks, or libraries. Libraries do not include + # the lib prefix of their name. + # + + spec.framework = "Poly" + # spec.frameworks = "SomeFramework", "AnotherFramework" + + # spec.library = "iconv" + # spec.libraries = "iconv", "xml2" + + + # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # If your library depends on compiler flags you can set them in the xcconfig hash + # where they will only apply to your library. If you depend on other Podspecs + # you can include multiple dependencies to ensure it works. + + spec.swift_version = "4.2" + # spec.requires_arc = true + + # spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } + spec.dependency "Poly", "~> 1.1" + +end diff --git a/README.md b/README.md index 1313936..b0c1bcc 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ See the JSON API Spec here: https://jsonapi.org/format/ - [Caveat](#caveat) - [Dev Environment](#dev-environment) - [Prerequisites](#prerequisites) + - [CocoaPods](#cocoapods) - [Xcode project](#xcode-project) - [Running the Playground](#running-the-playground) - [Project Status](#project-status) @@ -33,8 +34,8 @@ See the JSON API Spec here: https://jsonapi.org/format/ - [`JSONAPI.Entity`](#jsonapientity) - [`Meta`](#meta) - [`Links`](#links) - - [`IdType`](#idtype) - [`MaybeRawId`](#mayberawid) + - [`RawIdType`](#rawidtype) - [Convenient `typealiases`](#convenient-typealiases) - [`JSONAPI.Relationships`](#jsonapirelationships) - [`JSONAPI.Attributes`](#jsonapiattributes) @@ -82,7 +83,15 @@ If you find something wrong with this library and it isn't already mentioned und ## Dev Environment ### Prerequisites -1. Swift 4.2+ and Swift Package Manager +1. Swift 4.2+ +2. Swift Package Manager *OR* Cocoapods + +### CocoaPods +To use this framework in your project via Cocoapods instead of Swift Package Manager, add the following dependencies to your Podfile. +``` + pod 'Poly', :git => 'https://github.com/mattpolzin/Poly.git' + pod 'JSONAPI', :git => 'https://github.com/mattpolzin/JSONAPI.git' +``` ### Xcode project To create an Xcode project for JSONAPI, run