nef๐Ÿ’Ša toolset to ease the creation of documentation in the form of Xcode Playgrounds

Overview

Build Site Platforms dependency manager: Swift Package Manager Gitter

nef, short for Nefertiti, mother of Ankhesenamun, is a toolset to ease the creation of documentation in the form of Xcode Playgrounds. It provides compile-time verification of documentation, exports it in Markdown format that can be consumed by Jekyll to generate websites, and export Carbon snippets for a given Xcode Playground.

nef is inspired by ฮ›NK for Kotlin and tut for Scala.

Features

๐Ÿ’ก Eases the creation of Xcode Playgrounds with support for third party libraries.

๐Ÿ’ก Compiles Xcode Playgrounds with support for 3rd-party libraries from the command line.

๐Ÿ’ก Builds a Playground Book for iPad with external dependencies defined in a Swift Package.

๐Ÿ’ก Generates Markdown project from nef Playground.

๐Ÿ’ก Generates Markdown files that can be consumed from Jekyll to create a microsite.

๐Ÿ’ก Export Carbon code snippets for a given nef Playground.

ย 

๐Ÿ’ป Installation

๐Ÿ“Ÿ Using Homebrew (preferred)

โžœ brew install nef

It will warn you if there is a missing dependency and will provide guidance to install it.

ย 

๐Ÿ“ฆ Using Swift Package Manager

nef can be consumed as a library in your macOS project.

.package(url: "https://github.com/bow-swift/nef.git", from: "{version}")

It is an excellent option if you want to use all nef features in your macOS app, even to build new tooling on top of nef.

You can read more about how to use nef library in the nef site.

ย 

๐Ÿ”Œ Using Xcode Editor Extension

Some of nef features can be used directly in Xcode as an Extension. You can install it directly from App Store or downloading the last binary from the releases section.

ย 

๐Ÿ“ฒ Using your iPad

You can create Swift Playgrounds -together with third-party libraries- directly in your iPad using the app nef Playgrounds.

ย 

Using a GitHub badge

You can create a nef badge for your GitHub repository, and let users try your project in their iPads.

bow Playground

ย 

Usage

๐Ÿ“ƒ Creating a nef Playground

Xcode Playgrounds are a nice tool for prototyping and trying new concepts. However, third party libraries support is a bit cumbersome to add. One of the goals of nef is to make the creation of an Xcode Playground easier with support for one or more libraries.

By default, nef can create an Xcode Playground with support for Bow, the Functional Programming companion library for Swift.

โžœ nef playground

And you can use the following option to specify the name for the nef Playground that you are creating:

โžœ nef playground --output ~/Desktop --name LatestBowProject

It will create an Xcode project with support for the latest available version of Bow, named LatestBowProject in your ~/Desktop. If you open this nef playground, you will find an Xcode Playground where you can import Bow or any of its modules, and start trying some of its features.

By default, nef playground will be created for iOS platform. If you need to change it, you can use the --platform option.

โžœ nef playground --platform osx

If you need to take advantage of nef in your Xcode Playgrounds, you can transform your Xcode Playground into a nef Playground using the following command:

โžœ nef playground --playground <Xcode Playground>

Where is the path to your Xcode Playground.

๐Ÿ“ฃ You can create a nef Playground compatible with any different Bow version, branch or commit; even third-party dependencies

Note: The next options are mutually exclusive.

  • --bow-version : Specify the version of Bow that you want to use in the project. This option lets you test an old version of the library in an Xcode Playground. Example:
โžœ nef playground --name OldBowProject --bow-version 0.3.0

  • --bow-branch : Specify the branch of Bow that you want to use in the project. This option lets you test features of Bow that are still in development in a branch that has not been merged or released yet. Example:
โžœ nef playground --name BranchBowProject --bow-branch master

  • --bow-commit : Specify the commit hash of Bow that you want to use in the project. This option lets you test features of Bow exactly at the moment you need, released or not. Example:
โžœ nef playground --name CommitBowProject --bow-commit e70c739067be1f5700f8b692523e1bb8931c7236

  • --podfile : Specify a Podfile with your own dependencies. This option lets you create a Playground with support for other libraries. Create a Podfile listing your dependencies and pass it to nef. Example:

Your Podfile, located in ./folder/dependencies:

target 'MyPodsProject' do
  platform :osx, '10.14'
  use_frameworks!

  pod 'Bow', '~> 0.3.0'
end
โžœ nef playground --name MyPodsProject --podfile ./folder/dependencies/Podfile

  • --cartfile : Specify a Cartfile with your dependencies. Create a Cartfile listing your dependencies and pass it to nef. Example:

Your Cartfile, located in ./folder/dependencies:

github "bow-swift/Bow"
โžœ nef playground --name MyCarthageProject --cartfile ./folder/dependencies/Cartfile

ย 

๐Ÿ”จ Compiling a nef Playground

Xcode lets you check for correctness of your Xcode Playground and run it. However, Apple does not provide us commands to compile an Xcode Playground, as they do for building Xcode projects. It is particularly useful in Continuous Integration when you want to verify that your playgrounds are not broken when the libraries you depend on are updated. nef has an option to compile a nef Playground. To do this, you can run the following command:

โžœ nef compile --project <nef playground>

If you need to transform your Xcode Playground into a nef Playground you can check Creating a nef Playground section.

Where is the path to nef Playground where your playgrounds are located. Also, you can use the following option with this command:

  • --use-cache: Use cached dependencies if it is possible, in another case, it will download them. Example:
โžœ nef compile --project <nef playground> --use-cache

You can also clean the result of the compilation:

โžœ nef clean --project <nef playground>

ย 

๐Ÿ“ฒ Creating a Playground Book

Swift Playgrounds is a revolutionary app that makes possible to write Swift code on an iPad. In the latest updates, Swift Playgrounds 3.x has added a new feature: UserModules; it lets you include swift code and make it available across multiple chapters like modules.

nef takes advantage of these new possibilities and advancements in Swift Package Manager to build a Playground Book with external dependencies from a Swift Package specification.

Given a Package.swift like the next one:

// swift-tools-version:5.2

import PackageDescription

let package = Package(
    name: "BowProject",
    products: [
        .library(name: "BowProject", targets: ["nef"])
    ],
    dependencies: [
        .package(url: "https://github.com/bow-swift/bow.git", from: "0.8.0"),
    ],
    targets: [
        .target(name: "nef", dependencies: ["Bow"])
    ]
)

you can run the following command:

โžœ nef ipad --name PlaygroundName --package Package.swift --output ~/Desktop

It will create a Playground Book (PlaygroundName) with support for the external dependencies and save it in ~/Desktop

Options:

  • --name: the name for the Playground Book to build.
  • --package: path to the Swift Package specification.
  • --output: path where the resulting Playground Book will be generated.

ย 

๐Ÿ”– Generating a Markdown project

Xcode Playgrounds let you write comments in Markdown format using the symbols //: for single line comments, or /*: */ for multiline comments. Inside these comments, you can use any Markdown syntax; an example:

/*:
 # This is a heading 1

 This is regular text. *This is bold text*. [This is a link](http://bow-swift.io).
 */
protocol MyProtocol {}

//: ## This is a single line heading 2

It makes Xcode Playgrounds the proper tool to write an article with compilable examples. The command provided by nef to generate the Markdown files is:

โžœ nef markdown --project <nef playground> --output <path>

Options:

  • --project: Path to your nef Playground.
  • --output: Path where the resulting Markdown project will be generated.

ย 

๐ŸŒ Generating Markdown files for Jekyll

As you can write comments in Markdown in Xcode Playgrounds, this makes it very suitable to write documentation with compilable examples. Leveraging this, nef can create Markdown files that can be consumed from Jekyll to generate a microsite. The command to do this is:

โžœ nef jekyll --project <nef playground> --output <path> --main-page <main-page>

Options:

  • --project: Path to your nef Playground.
  • --output: Path where the resulting Markdown files will be generated.
  • --main-page: Optional. Path to 'README.md' file to be used as the index page of the generated microsite.

๐Ÿ“ฃ How to setup a nef Playgroud for Jekyll?

nef finds all the Xcode Playgrounds in a nef Playground. Each playground is considered a section in the generated microsite structure. For each page in a playground, an entry in the corresponding section is created. The page is transformed from Swift to Markdown using the syntax described above. As a result, a directory structure matching the nef Playground structure is generated, together with a sidebar.yml that can be used as a menu in Jekyll.

nef adds some commands to modify the Markdown transformation process. All nef commands are included as Swift comments. They begin with // nef:begin: and end with // nef:end. The supported commands are:

  • header: It lets you add metadata to a playground page to be consumed by Jekyll. You must provide the layout that this page will use in Jekyll. The remaining attributes are optional, and you may include any of them according to your Jekyll configuration. nef will take care of the permalinks as well. Example (at the beginning of the playground page):
// nef:begin:header
/*
  layout: docs
*/
// nef:end
  • hidden: It lets you hide a portion of your playground in the output Markdown file. It is useful to hide imports or supporting utility code to make an example work. Example:
// nef:begin:hidden
import Bow // This will be hidden in the Markdown file
// nef:end

struct Person {} // This will be present in the Markdown file

ย 

๐ŸŒ Exporting Carbon code snippets

Xcode Playgrounds are a great place for prototyping and trying new concepts. Oftentimes we want to share some Swift snippets. Carbon is a cool tool for this, and nef nicely integrates with it. You can take your nef Playground, write several pieces of code, and keep it verified. Later, you can export all your code snippets with the next command:

โžœ nef carbon --project <nef playground> --output <path>

Options:

  • --project: Path to your nef Playground.
  • --output: Path where the resulting Carbon snippets will be generated.

๐Ÿ“ฃ You can customize the output with the next commands

Command Description Format Options Default
--background Background color applied to image hexadecimal #AABBCC, #AABBCCDD or predefined colors nef bow white
green blue yellow
orange
nef
--theme Carbon's theme to be applied String base16-dark blackboard cobalt duotone-dark dracula hopscotch lucario material monokai night-owl nord oceanic-next one-dark panda-syntax paraiso-dark seti shades-of-purple synthwave-84 tomorrow-night-bright twilight verminal vscode zenburn dracula
--size Export file dimensions Number [1, 5] 2
--font Font type String firaCode hack inconsolata iosevka monoid anonymousPro sourceCodePro darkMono droidMono fantasqueMono ibmPlexMono spaceMono ubuntuMono firaCode
--show-lines shows/hides number of lines in code snippet Bool true false true
--show-watermark shows/hides watermark in code snippet Bool true false true

Example of use

If we have a project created by nef, and an Xcode playground with the next content:

let example = "This is an example"
print("nef is super cool: \(example)")

// nef is super cool: This is an example

Running the following command, we will customize the background color to #d54048 bow, hide the number of lines, and set the export file to size 3:

โžœ nef carbon --project . --output ~/Desktop/nef-carbon --background bow --size 3 --show-lines false

ย 

โค๏ธ Contributing to the project

You can contribute in different ways to make nef better:

  • File an issue if you encounter a bug or malfunction in nef.
  • Suggest a new use case or feature for nef.
  • Open a Pull Request fixing a problem or adding new functionality. You can check the Issues to see some of the pending tasks.
  • Discuss with us in the Gitter channel for Bow about all the above.

How to run the project

Open project/nef.xcodeproj in Xcode 11 (or newer) and you are ready to go. nef uses the [Swift Package Manager] to handle its dependencies - they will be resolving automatically from Xcode.

How to run the documentation project

  • Go to main directory where you can find the nef Playground Documentation.app.
  • Run nef compile --project Documentation.app to set up the project with its dependencies.
  • Open Documentation.app

For further information, refer to our Contribution guidelines.

ย 

โš–๏ธ License

Copyright (C) 2019-2020 The nef Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • [

    ["Bug"] nef compile Could not get playgrounds at path

    Description

    I run nef compile and I got an error on a playground that previously worked fine

    nef compile --project SensorDocs.app/
    

    Expected outcome

    The playground is built.

    Observed outcome

    I get the following error:

    Getting playgrounds in MacOS โœ—
    โ˜ ๏ธ compiling Xcode Playgrounds from '[...]SensorDocs.app' failed with error:
    Compiler failure. Could not get playgrounds at '[...]SensorDocs.app/Contents/MacOS'
    

    nef modules, version, platform

    macOS playground nef 0.6.1

    Tooling

    • Xcode version: 11.5

    Other

    Same issue with the markdown command

    Maybe it's a permissions problem? Maybe something wrong with some path? Let me know how can I help debugging this.

    opened by ferranpujolcamins 5
  • Nef fails to generate Playground if path contains spaces

    Nef fails to generate Playground if path contains spaces

    Steps to reproduce

    • cd; cd Desktop
    • mkdir "test spaces"
    • cd test\ spaces
    • nef playground --name test

    You get these errors:

    Installing Playground (test)...mv: rename /Users/dfreniche/Desktop/nef/test to /Users/dfreniche/Desktop/nef/test spaces/test.app/Contents/MacOS/test: No such file or directory
    mv: rename spaces/test.app.1/* to /Users/dfreniche/Desktop/nef/test spaces/test.app/Contents/MacOS/*: No such file or directory
    

    and

    Installing Playground (test)...mv: rename /Users/dfreniche/Desktop/nef/test to /Users/dfreniche/Desktop/nef/test spaces/test.app/Contents/MacOS/test: No such file or directory
    mv: rename spaces/test.app.1/* to /Users/dfreniche/Desktop/nef/test spaces/test.app/Contents/MacOS/*: No such file or directory
    
    bug 
    opened by dfreniche 4
  • Feature: Handle spaces in path of a project.

    Feature: Handle spaces in path of a project.

    This PR should fix running the following commands when the current path includes a directory with a space in it.

    Commands fixed:

    nef playground
    nef build .
    nef clean .
    

    Commands not fixed:

    nef jekyll
    

    I was getting an error running nef jekyll --project BowPlayground/ --output MD even in a path that didnโ€™t include spaces. The error: error: render page page in playground BowPlayground, review '<project>/nef/docs/BowPlayground-page.log' for more information. I had a look at the file referenced but I couldnโ€™t find anything that could point me in the direction of what was wrong.

    bug 
    opened by Brett-Best 4
  • update makefile

    update makefile

    Facing some build issue when upgrading the formula to use the latest release build, error is as below:

    /Applications/Xcode.app/Contents/Developer/usr/bin/make bash
    /bin/bash: nef: command not found
    

    Thus proposing to remove the bash and zsh build scripts.

    relates to Homebrew/homebrew-core#91201

    opened by chenrui333 3
  • [

    ["Bug"] Cannot compile playground with a /* */ comment

    Description

    I have a playground page that compiles normally. When adding a /* Comment */ and running nef compile I get a Syntax analysis failed error.

    Expected outcome

    I can compile the playground, it's just code and comments.

    Observed outcome

    I get the following error:

    Getting playgrounds in MacOS โœ“
    Getting pages in playground MyPlayground โœ“
    	โ€ข Processing page 1. Introduction โœ—
    โ˜ ๏ธ compiling Xcode Playgrounds from '[...]MyPlayground.app' failed with error:
    Compiler failure. Cannot render content: Syntax analysis failed. Possible issues:
    	- File is empty
    	- Check all the begin/end delimiters are correct.
    

    Code to reproduce the Bug

    Provide minimum code, together with imports, that we can execute to reproduce the bug.

    import Foundation
    /* Comment */
    

    nef modules, version, platform

    macOS playground nef 0.6.1

    Tooling

    • Xcode version: 11.5
    opened by ferranpujolcamins 3
  • Creating and compiling default Playground works but inform that

    Creating and compiling default Playground works but inform that "fails" in macOS 10.14

    I'm in macOS 10.14.6. Don't ask cough~~Appcelerator~~cough

    To replicate:

    $ nef playground --name test                                   
    Installing Playground (test)... โœ…
    Set test target to iOS โœ…
    Updating version (0.7.0)... โœ…
    Installing Pods ... โœ…
    $ nef compile test.app              
    Installing Pods ... โœ…
    Building test (test) ... โœ…
    Copy frameworks โœ…
    Found 1 playgrounds
       Compiling page.xcplaygroundpage ...<unknown>:0: error: Swift does not support the SDK 'MacOSX10.14.sdk'
    

    If you open test.app and compile, all is OK.

    So although we get that error message, seems like it's compiling OK and also can generate markdown fine.

    bug 
    opened by dfreniche 3
  • nefc should be less verbose

    nefc should be less verbose

    nefc should be less verbose in output.

    NEFC has 3 steps of compilation:

    1. build external dependencies using cocoapods
    2. build project
    3. build playgrounds pages

    Step 3 is console user-friendly and generate logs with the outputs - in steps 1 and 2 nef should do the same

    opened by miguelangel-dev 3
  • Could not extract any module from packages

    Could not extract any module from packages

    I have a problem building playground book.

    Here is the Package.swift file.

    // swift-tools-version:5.1
    // The swift-tools-version declares the minimum version of Swift required to build this package.
    import PackageDescription
    
    let package = Package(
        name: "Table",
        products: [
            // Products define the executables and libraries produced by a package, and make them visible to other packages.
            .library(
                name: "Table",
                targets: ["Table"]),
        ],
        dependencies: [
            // Dependencies declare other packages that this package depends on.
            // .package(url: /* package url */, from: "1.0.0"),
        ],
        targets: [
            // Targets are the basic building blocks of a package. A target can define a module or a test suite.
            // Targets can depend on other targets in this package, and on products in packages which this package depends on.
            .target(
                name: "Table",
                dependencies: []),
            .testTarget(
                name: "TableTests",
                dependencies: ["Table"]),
        ]
    )
    
    Get modules from repositories...... โœ—
    	| could not extract any module from packages
    	|
    โ˜ ๏ธ rendering Playground Book. Swift Playground generator failure.
    ```console
    opened by ShawnBaek 2
  • Migrate command line tools

    Migrate command line tools

    Description

    Apple has just launched a new library for reading arguments from the console and safe decode to types. Taking advantage of this I have refactored the whole UI (CLI) to use it. Previously it has been wrapped into IO

    How to install it?

    Just clone the project and run make in the root folder.

    opened by miguelangel-dev 2
  • Run playgrounds and check whether they throw uncaught exceptions

    Run playgrounds and check whether they throw uncaught exceptions

    If I run swift MyPlayground.playground/Contents.swift where MyPlayground is a simple playground with just this content:

    struct E: Error {}
    throw E()
    

    I can tell that the playground raised an uncaught exception by inspecting the exit code of the command.

    I guess the same idea can be adapted to the playgrounds nef generates.

    This would be useful because I could add XCTest assertions on my playground and nef would check for me that they all pass (just like python's doctest)

    For simple projects it's useful to just have the documentation be also the unit tests.

    Maybe this behavior can be guarded with a new command-line argument.

    enhancement 
    opened by ferranpujolcamins 2
  • Error on

    Error on "Installing Pods" step

    โ†’ nef playground --platform osx
    Installing Playground (BowPlayground)... โœ…
    Set BowPlayground target to macOS โœ…
    Updating version (0.7.0)... โœ…
    Installing Pods ... โŒ
    error: pod install review 'nef/log/pod-install.log' for more information.
    

    nef/log/pod-install.log doesn't exist in the current directory so there's no way for me to check logs.

    help wanted question 
    opened by twof 2
  • Unable to add dependency to my recipe on iPad

    Unable to add dependency to my recipe on iPad

    Description

    I'm unable to add a dependency on the iPad app.

    Expected outcome

    It should be doable...

    Observed outcome

    I'm getting an error like: IMG_AD2187DBFC02-1

    nef modules, version, platform

    App version 1.2

    Tooling

    iPad Pro 12,9, iPadOS 15

    opened by Czajnikowski 0
  • Export snippets using transparent background

    Export snippets using transparent background

    Description

    Let to nef set transparent background for code snippets, so the exported png has a clear background.

    Sample usage

    You can check the next comment in nef-plugin

    Modules

    • NefCarbon
    opened by miguelangel-dev 0
  • Command to generate GitHub Wiki

    Command to generate GitHub Wiki

    Description

    Currently, nef can generate markdown files given a nef Playground. Also, it lets you export your documentation to markdown files that can be consumed from Jekyll to generate a static-microsite.

    As nef works with markdown, in an easy way we could add a new command wiki to generate markdown files that can be consumed from GitHub to generate a Wiki page.

    Sample usage

    nef wiki --project <nef Playground>

    Modules

    UI

    • NefWiki
    • update existing Nef module to include the new command.

    Component

    • NefWiki
    • update nef module to open wiki generation to public API.

    Breaking changes

    opened by miguelangel-dev 3
  • Add evaluating command to nef

    Add evaluating command to nef

    Description

    Let nef evaluate the code, not only verify it compiles, but also runs it.

    Sample usage

    nef run --project <nef playground>

    Input:

    import Bow
    
    let either = Either<String, Int>.left("Hi!")
    print(either)
    

    Output:

    .left("Hi!")
    

    Modules

    UI

    • NefRun

    Component

    • update public API in nef
    • NefRun
    • NefModels

    Breaking changes

    opened by miguelangel-dev 0
  • nef jekyll --watch

    nef jekyll --watch

    I usually write my docs on a swift playground while previewing the generated jekyll site in my browser.

    I use jekyll serve, but I still to run nef jekyll manually in order for the generated markdown to be updated on a change.

    I'd love a --watch option so nef automatically regenerates the markdown files for me.

    enhancement good first issue 
    opened by ferranpujolcamins 1
Releases(0.7.1)
  • 0.7.1(Jan 19, 2022)

  • 0.7.0(Nov 2, 2021)

  • 0.6.2(Jul 24, 2020)

    Misc. Updates

    • Add Action to bump Homebrew formula when a new tag is pushed [0-9]+.[0-9]+.[0-9]+.

    Bug Fixes

    • Support for inline comments multiline. It fixes bug #162 and completes to support all kind of comments. Ex.
    import Foundation
    /* Comment */
    

    before, it has not been supported and now nef syntax-analyzer will output the next AST:

    block([
          NefCore.Node.Code.code("import Foundation\n"), 
          NefCore.Node.Code.comment("/* Comment */\n")
    ])
    
    Source code(tar.gz)
    Source code(zip)
  • 0.6.1(Apr 30, 2020)

    Misc. Updates

    • Update nef to use Swift 5.2+
    • Add support to Linux. You can import nef in Linux and use the next modules: NefCommon, NefMarkdown, NefJekyll and NefPlaygroundBook. You can find more information about the API on the nef site.
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Mar 19, 2020)

    Misc. Updates

    This version finishes the modularization we started in nef 0.4.

    • nef โ™ก FP Functional Programming encourages us to write modular and testable code, improving maintainability; In the end, it leads us to write robust and trustworthy code. Following this goal, and taking advantage of Bow, we have rewritten nef using a functional approach from the core to the UI.
    • API Reference this version provides multiple APIs. You can go to new API section in the site for more information.
    • Official integration with Homebrew nef has been included in the main repository ๐ŸŽ‰
    Source code(tar.gz)
    Source code(zip)
  • 0.5.2(Jan 9, 2020)

    Misc. Updates

    Swift Playgrounds with support for 3rd-party libraries on iPads (tracked in bow-swift/nef#92, bow-swift/nef#102, bow-swift/nef#103, bow-swift/nef#104)

    It needs to use Swift Playground app version 3.x

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Nov 25, 2019)

    Misc. Updates

    • Improvements in nef Playground system. (tracked in #97)
    • Adds a new dependency manager, Carthage (tracked in #87 #88 #89 #90 #91 #99)
    • Opens nef features to developers. (tracked in #80 #81 #82 #84 #98)
    • Upgrade Xcode Editor Extension to nef 0.4. More information in the repository.
    Source code(tar.gz)
    Source code(zip)
  • 0.3.2(Oct 2, 2019)

  • 0.3.1(Jul 15, 2019)

    Misc. Updates

    • New white version design for the watermark.

    Bug Fixes

    • Upgrade CLI carbon to use the website directly and not embedded version. It will keep update nef into future Carbon's releases (tracked in https://github.com/bow-swift/nef/pull/83)
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Jul 9, 2019)

    Misc. Updates

    • Carbon integration (tracked in https://github.com/bow-swift/nef/issues/40)
    • Improve nef compiler (tracked in https://github.com/bow-swift/nef/pull/54)
    • Added option to CLI for checking the nef version (tracked in https://github.com/bow-swift/nef/pull/72)
    • Creates the microsite (tracked in https://github.com/bow-swift/nef/pull/46, https://github.com/bow-swift/nef/pull/51, https://github.com/bow-swift/nef/pull/52)

    Bug Fixes

    • Remove unuseful folders after initialising a project using nef playground (tracked in https://github.com/bow-swift/nef/pull/63)
    • if you copy-paste, an existing playground in an existing nef project, the logic tree for Xcode project gets absolute paths instead of relative (tracked in https://github.com/bow-swift/nef/pull/69)
    • If the project name input is the same as the playground page, then Jekyll and Markdown options remove the project folder and fails (tracked in https://github.com/bow-swift/nef/pull/70)
    Source code(tar.gz)
    Source code(zip)
  • 0.2.2(Jun 17, 2019)

  • 0.2.1(Jun 7, 2019)

    Bug Fixes

    1 Fix bug in the nef's compiler using statically linked binaries (not supported in Darwin architectures). Compiles the user dependencies (Playground/Sources/*) together with the page.swift and using the options

    • -F to determinate where Apple frameworks are.
    • -Xlinker search recursively in the Apple Frameworks for selected SDK.

    Darwin architectures (iOS, macos) does not allow statically linked binaries (it only allows static libs). You can read more information about it here.

    2 In iOS systems updated the architecture used. Migrates from x86_64 to arm*

    XCTest doesn't support x86_64 arch, only arm* (in iOS)

    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(May 28, 2019)

    Misc. Updates

    • Build Markdown documents directly from Swift Playgrounds
    • Update README with the new features: Markdown Support, compatibility with XCTest, ...

    Bug Fixes

    • Fixed a bug for creating the path from relative paths.
    • Fixed a bug in the compiler when Playground's page filename contains spaces and it has some dependency.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.7(Apr 26, 2019)

    Bug Fixes

    • Fixed a bug in nefc linker: added supports to use/compile Apple frameworks like XCTest.

    Misc. Updates

    • Added supports to XCTest: now you can import XCTest and use NefTest helper to run your test cases. ex. use: Nef.run(testCase: ExampleTests.self)
    • Support for caching nefc. Build project and dependencies using previously cached ouputs - if it is possible. ex. use: nef compile . --use-cache
    Source code(tar.gz)
    Source code(zip)
  • 0.1.6(Apr 19, 2019)

    Bug Fixes

    • Fixed a bug which caused compilation error when the current path includes a directory with a space in it. See PR #35
    • Fixed a bug in nef Jekyll: reading the arguments in the command line

    Misc. Updates

    • Remove unuseful assets folder in the template for Swift Playground
    Source code(tar.gz)
    Source code(zip)
  • 0.1.5(Apr 17, 2019)

  • 0.1.4(Apr 16, 2019)

  • 0.1.3(Apr 9, 2019)

Owner
Bow
Functional Programming in Swift
Bow
The best command-line tool to install and switch between multiple versions of Xcode.

The best command-line tool to install and switch between multiple versions of Xcode.

Robots and Pencils 2.3k Jan 9, 2023
A command-line tool to generate a JSON-list of all used SPM-dependencies of an Xcode-project.

SwiftPackageList A command-line tool to generate a JSON-list of all used SPM-dependencies of an Xcode-project. This includes all the Package.resolved

Felix Herrmann 14 Jan 8, 2023
A command-line tool to sort Xcode's `.xcodeproj` file.

XcodeProjSorter A command-line tool to sort Xcode's .xcodeproj file. It sorts following sessions: PBXGroup PBXResourcesBuildPhase PBXSourcesBuildPhase

Nelson 7 Apr 27, 2022
A command line tool to easily install and browse Xcode templates

?? XTrail A command line tool to easily install and browse Xcode templates. Usage The general invocation syntax for xtrail is as follows: xtrail <subc

Shogo Sakaue 3 Dec 16, 2021
A CLI to Alcatraz, the Xcode package manager.

Azkaban This project is deprecated in favor of Editor Extensions support in Xcode 8+. A CLI to Alcatraz, the Xcode package manager. Usage Install a pl

Boris Bรผgling 64 Jun 3, 2021
A command line tool that calls your Xcode Test Plan and creates screenshots of your app automatically.

ShotPlan (WIP) A command line tool that calls your Xcode Test Plan and creates screenshots of your app automatically. ShotPlan will also take care of

Devran Cosmo Uenal 6 Jul 21, 2022
Nef-plugin - ๐Ÿ”Œ an Xcode extension to use nef features easily

This project provides an extension for Xcode to integrate some nef features directly in the IDE. Using the core of nef, you can export snippets from y

Bow 188 Dec 23, 2022
Swift-DocC is a documentation compiler for Swift frameworks and packages aimed at making it easy to write and publish great developer documentation.

Swift-DocC is a documentation compiler for Swift frameworks and packages aimed at making it easy to write and publish great developer docum

Apple 833 Jan 3, 2023
URLScheme router than supports auto creation of UIViewControllers for associated url parameters to allow creation of navigation stacks

IKRouter What does it do? Once you have made your UIViewControllers conform to Routable you can register them with the parameters that they represent

Ian Keen 94 Feb 28, 2022
Playgrounds - Better playgrounds that work both for Objective-C and Swift

Swift Playgrounds... but supporting both Objective-C and Swift code, plus some superb features. Watch demo More in-depth overview video Playgrounds ar

Krzysztof Zabล‚ocki 2.6k Dec 9, 2022
Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and moreโ€ฆ)

Perfect: Server-Side Swift ็ฎ€ไฝ“ไธญๆ–‡ Perfect: Server-Side Swift Perfect is a complete and powerful toolbox, framework, and application server for Linux, iO

PerfectlySoft Inc. 13.9k Dec 29, 2022
Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and moreโ€ฆ)

Perfect: Server-Side Swift ็ฎ€ไฝ“ไธญๆ–‡ Perfect: Server-Side Swift Perfect is a complete and powerful toolbox, framework, and application server for Linux, iO

PerfectlySoft Inc. 13.9k Jan 6, 2023
Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and moreโ€ฆ)

Perfect: Server-Side Swift ็ฎ€ไฝ“ไธญๆ–‡ Perfect: Server-Side Swift Perfect is a complete and powerful toolbox, framework, and application server for Linux, iO

PerfectlySoft Inc. 13.9k Dec 29, 2022
ASDebugger is a remote debugging toolset for iOS App.

ASDebugger ASDebugger is a remote debugging toolset for iOS App. it's a way remotely check any network transaction, effortlessly Mock Data, It is able

App Scaffold 10 Sep 2, 2021
Aids with prototyping UIGestureRecognizers in Xcode Playgrounds

SwiftyGestureRecognition A drop-in library for extending UIGestureRecognizers to aid in prototyping with them in Xcode Playgrounds. Definitely not pri

Adam Bell 161 Dec 16, 2022
Generate Markdown documentation from source code

SourceDocs SourceDocs is a command line tool that generates markdown documentation files from inline source code comments. Similar to Sphinx or Jazzy,

Eneko Alonso 349 Dec 10, 2022
docc2html - A static site generator for DocC documentation archives

Tool to convert "DocC" archives, a format to document Swift frameworks and packages: Documenting a Swift Framework or Package, to a static HTML site.

DocZ 105 Nov 14, 2022
Generate Markdown documentation from source code

SourceDocs SourceDocs is a command line tool that generates markdown documentation files from inline source code comments. Similar to Sphinx or Jazzy,

Eneko Alonso 349 Dec 10, 2022
The iOS framework that grows only as fast as its documentation

Nimbus is an iOS framework whose feature set grows only as fast as its documentation. Support status Nimbus is in a supported maintenance mode, meanin

featherless 6.5k Nov 30, 2022
Code and documentation for my talk Anime-fy Yourself Using Core ML

Anime-fy Yourself Code and documentation for my talk Anime-fy Yourself Using Core ML Convert from PyTorch to Core ML To convert @bryandlee's PyTorch i

Yono Mittlefehldt 2 May 29, 2022