Swiftpack.co - Package - SDGGiesbrecht/Workspace

macOS • CentOS • Ubuntu • Amazon Linux

Documentation

Workspace

Workspace automates management of Swift projects.

Πᾶν ὅ τι ἐὰν ποιῆτε, ἐκ ψυχῆς ἐργάζεσθε, ὡς τῷ Κυρίῳ καὶ οὐκ ἀνθρώποις.

Whatever you do, work from the heart, as working for the Lord and not for men.

―⁧שאול⁩/Shaʼul

Features

The Workspace Workflow

(The following demonstration package is a real repository. You can use it to follow along.)

When the Repository Is Cloned

The need to hunt down workflow tools can deter contributors. On the other hand, including them in the repository causes a lot of clutter. To reduce both, when a project using Workspace is pulled, pushed, or cloned...

git clone https://github.com/SDGGiesbrecht/SDGCornerstone

...only one small piece of Workspace comes with it: A short script called Refresh that has several platform variants.

Hmm... I wish I had more tools at my disposal... Hey! What if I...

Refresh the Project

To refresh the project, double‐click the Refresh script for your platform. (You can also execute the script from the command line if your system is set up not to execute scripts when they are double‐clicked.)

Refresh opens a terminal window, and in it Workspace reports its actions while it sets the project folder up for development. (This may take a while the first time, but subsequent runs are faster.)

This looks better. Let’s get coding!

[Add this... Remove that... Change something over here...]

...All done. I wonder if I broke anything while I was working? Hey! It looks like I can...

Validate Changes

When the project seems ready for a push, merge, or pull request, validate the current state of the project by double‐clicking the Validate script.

Validate opens a terminal window and in it Workspace runs the project through a series of checks.

When it finishes, it prints a summary of which tests passed and which tests failed.

Oops! I never realized that would happen...

Summary

  • Refresh before working.
  • Validate when it looks complete.

Wow! That was so much easier than doing it all manually!

Advanced

While the above workflow is the simplest to learn, Workspace can also be installed as a command line tool that can be used in a wider variety of ways. Most notably, any individual task can be executed in isolation, which can speed things up considerably for users who become familiar with it.

Applying Workspace to a Project

To apply Workspace to a project, run the following command in the root of the project’s repository. (This requires a full install.)

$ workspace refresh

By default, Workspace refrains from tasks which would involve modifying project files. Such tasks must be activated with a configuration file. optIntoAllTasks() can be used in the configuration file to easily activate everything at once, no matter how much it might end up overwriting.

Installation

Workspace provides command line tools.

They can be installed any way Swift packages can be installed. The most direct method is pasting the following into a terminal, which will either install or update them:

curl -sL https://gist.github.com/SDGGiesbrecht/4d76ad2f2b9c7bf9072ca1da9815d7e2/raw/update.sh | bash -s Workspace "https://github.com/SDGGiesbrecht/Workspace" 0.35.3 "workspace help" workspace arbeitsbereich

Importing

Workspace provides a library for use with the Swift Package Manager.

Simply add Workspace as a dependency in Package.swift:

let package = Package(
  name: "MyPackage",
  dependencies: [
    .package(
      name: "Workspace",
      url: "https://github.com/SDGGiesbrecht/Workspace",
      .upToNextMinor(from: Version(0, 35, 3))
    ),
  ],
  targets: [
    .target(
      name: "MyTarget",
      dependencies: [
        .product(name: "WorkspaceConfiguration", package: "Workspace"),
      ]
    )
  ]
)

The module can then be imported in source files:

import WorkspaceConfiguration

About

The Workspace project is maintained by Jeremy David Giesbrecht.

If Workspace saves you money, consider giving some of it as a donation.

If Workspace saves you time, consider devoting some of it to contributing back to the project.

Ἄξιος γὰρ ὁ ἐργάτης τοῦ μισθοῦ αὐτοῦ ἐστι.

For the worker is worthy of his wages.

―‎ישוע/Yeshuʼa

Github

link
Stars: 74

Dependencies

Used By

Total: 0

Releases

Version 0.35.3 -

🇬🇧🇺🇸🇨🇦EN

New Features

  • Several new file types are supported.

Bug Fixes

  • Access control is not required inside deinitializers.
  • Script names are localized.
  • Some help subcommands are more detailed.
  • Dependencies have been updated.
    • Compatible with Swift 5.3.1 and Xcode 12.2.

🇩🇪DE

Neue Merkmale

  • Weitere Dateiarten sind unterstützt.

Fehlerbehebungen

  • Zugriffskontrolle wird in Deinitialisierer nicht verlangt.
  • Skriptnamen wurden lokalisiert.
  • Manche hilfe‐Unterbefehle sind ausführlicher.
  • Abhängigkeiten wurden aktualisiert.
    • Zusammenpassend mit Swift 5.3.1 und Xcode 12.2.

Version 0.35.2 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Continuous integration has been updated.

🇩🇪DE

Fehlerbehebungen

  • Fortlaufende EInbindung wurde aktualisiert.

Version 0.35.1 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Android uses the correct clang for C targets.

🇩🇪DE

Fehlerbehebungen

  • Android verwendet das richtige clang für C‐Ziele.

Experimental Swift 5.3 -

This “release” serves only to provide a download link for the Android SDK used by Workspace during continuous integration.

This SDK was constructed using the release/5.3 scheme shortly after the official release of Swift 5.3 on other platforms. (As long as GitHub retains them, the assembly log will be available here, and the script here.)

This SDK contains only the x86_64-unknown-linux-android architecture (targeting ABI 29), but comes pre‐loaded with everything necessary to use the standard and core libraries (including ICU).

If the Android NDK has been installed somewhere other than /usr/local/lib/android/sdk/ndk-bundle (where it is in a GitHub action), the paths in Android.sdk/usr/lib/swift/android/[architecture]/glibc.modulemap will need to be adjusted accordingly.

Version 0.35.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Swift 5.3
  • macOS 10.12
  • optIntoAllTasks() no longer activates Xcode project generation. (xcode.manage still exists though.)

Bug Fixes

  • Continuous integration uses Xcode 12.

🇩🇪DE

Brechende Änderungen

  • Swift 5.3
  • macOS 10.12
  • alleAufgabenEinschalten() schaltet die Erstellung von Xcode‐Projekte nicht mehr ein. (xcode.verwalten gibt es trotzdem noch.)

Fehlerbehebungen

  • Fortlaufende EInbindung verwendet Xcode 12.

Version 0.34.2 -

🇬🇧🇺🇸🇨🇦EN

Dependencies have been updated.

🇩🇪DE

Abhängigkeiten wurden aktualisiert.

Version 0.34.1 -

Bug Fixes

  • Windows test generation is more stable.

Fehlerbehebungen

  • Die Erstellung von Testlisten für Windows ist stabiler.

Version 0.34.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Linux support has been split into CentOS, Ubuntu and Amazon Linux.

New Features

  • Workspace signals the platform of each build with environment variables: TARGETING_MACOS, TARGETING_WINDOWS, etc.

Bug Fixes

  • Windows now uses SwiftPM via WSL instead of CMake.

🇩🇪DE

Brechende Änderungen

  • Die Unterstützung von Linux wurde in CentOS, Ubuntu und Amazon Linux aufgeteilt.

Neue Merkmale

  • Arbeitsbereich markiert die Schicht jeder Erstellung durch Umgebungsvariablen: TARGETING_MACOS, TARGETING_WINDOWS, u.s.w.

Fehlerbehebungen

  • Windows verwendet nun SwiftPM durch WSL, und nicht mehr CMake.

Version 0.33.3 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Continuous integration uses Xcode 11.6.

🇩🇪DE

Fehlerbehebungen

  • Fortlaufende EInbindung verwendet Xcode 11.6.

Version 0.33.2 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • The access control rule ignores documentation examples.

🇩🇪DE

Brechende Änderungen

  • Die Regel über Zugriffskontrolle gilt nicht mehr in Dokumentationsbeispiele.

Version 0.33.1 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • The bullets rule permits ordered lists.

🇩🇪DE

Brechende Änderungen

  • Die aufzählungszeichen‐Regel erlaubt geordnete Aufzählungen.

Version 0.33.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • New proofreading rules:
    • accessControl
    • asterisms
    • bullets
    • classFinality
    • listSeparation
    • markdownHeadings

🇩🇪DE

Brechende Änderungen

  • Neue Korrekturregeln:
    • aufzählungszeichen
    • klassenentgültigkeit
    • listentrennung
    • markdownÜberschrifte
    • sterngruppen
    • zugriffskontrolle

Version 0.32.4 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Dependencies have been updated.
    • Compatible with Swift 5.2.4 and Xcode 11.4.

🇩🇪DE

Fehlerbehebungen

  • Abhängigkeiten wurden aktualisiert.
    • Zusammenpassend mit Swift 5.2.4 und Xcode 11.4.

Version 0.32.3 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • GitHub Actions are fixed at Swift 5.2.1.
  • Generated read‐me files have been updated for Swift 5.2.

🇩🇪DE

Fehlerbehebungen

  • GitHub‐Vorgänge sind zu Swift 5.2.1 fixiert.
  • Erstellte Lies‐mich‐Dateien wurden für Swift 5.2 aktualisiert.

Version 0.32.2 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Compatibility with Swift 5.2.2.
  • The standard SwiftFormat configuration has been updated.

🇩🇪DE

Fehlerbehebungen

  • Kompatibilität mit Swift 5.2.2.
  • Der Standardkonfiguration für SwiftFormat wurde aktualisiert.

Version 0.32.1 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Continuous integration uses:
    • Swift 5.2 on Windows and Android.
    • a newer snapshot for web.
  • Empty test cases do not break WindowsMain.swift.

🇩🇪DE

Fehlerbehebungen

  • Fortlaufende Einbindung verwendet:
    • Swift 5.2 auf Windows und Android.
    • Einen neueren Speicherauszug fürs Netz.
  • Leere Testfälle brechen WindowsMain.swift nicht.

Version 0.32.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Swift 5.2

🇩🇪DE

Brechende Änderungen

  • Swift 5.2

Version 0.31.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Web is supported as a target platform. (But Workspace itself cannot run on the web yet.)

New Features

  • Continuous integration no longer needs the .command and .sh scripts.

Bug Fixes

  • WindowsMain.swift is formatted according to the configuration.

🇩🇪DE

Brechende Änderungen

  • Netz wird als Zielschicht unterstützt. (Aber Arbeitsbereich selbst läuft noch nicht auf dem Netz.)

Neue Merkmale

  • Fortlaufende Einbindung benötigt die .command und .sh Skripte nicht mehr.

Fehlerbehebungen

  • WindowsMain.swift wird nach der Konfiguration formatiert.

Version 0.30.2 -

🇬🇧🇺🇸🇨🇦EN

New Features

  • The Android emulator has access to the package source at SWIFTPM_PACKAGE_ROOT.

Bug Fixes

  • WindowsMain.swift uses fully qualified names.
  • HOME is set in the Android emulator so that FileManager works properly.
  • WindowsMain.swift is formatted according to the configuration.

🇩🇪DE

Neue Merkmale

  • Der Android‐Emulator hat Zugang zur Paketquellen unter SWIFTPM_PACKAGE_ROOT.

Fehlerbehebungen

  • WindowsMain.swift verwendet eindeutigeren Namen.
  • HOME wird im Android‐Emulator eingestellt, damit FileManager funktioniert.
  • WindowsMain.swift wird nach der Konfiguration formatiert.

Version 0.30.1 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Android tests launch properly.

🇩🇪DE

Fehlerbehebungen

  • Android‐Testen starten richtig.

Experimental Swift < 5.2 2020‐02‐05 -

This “release” serves only to provide persistent links to consistent artifacts from experimental Swift builds for Windows and Android. They originate from here.

Version 0.30.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

Android is supported as a target platform. (But Workspace itself cannot run on Android yet.)

🇩🇪DE

Brechende Änderungen

Android wird als Zielschicht unterstützt. (Aber Arbeitsbereich selbst läuft noch nicht auf Android.)

Version 0.29.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Windows is supported as a target platform. (But Workspace itself cannot run on Windows yet.)

🇩🇪DE

Brechende Änderungen

  • Windows wird als Zielschicht unterstützt. (Aber Arbeitsbereich selbst läuft noch nicht auf Windows.)

Version 0.28.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • GitHub Actions are complete and now replace Travis CI.
    • encryptedTravisCIDeploymentKey has been replaced with serveFromGitHubPagesBranch, a Bool.

🇩🇪DE

Brechende Änderungen

  • Die GitHub‐Vorgänge sind vollständig und haben Travis‐CI ersetzt.
    • verschlüsselterTravisCIVerteilungsschlüssel wurde durch durchGitHubSeitenVeröffentlichen, einem Bool, ersetzt.

Version 0.27.1 -

🇬🇧🇺🇸🇨🇦EN

New Features

  • Continuous integration management creates some GitHub Actions (which do not yet handle everything from the Travis CI jobs).

Bug Fixes

  • Dependency updates. (Especially compatibility with Swift 5.1.3.)
  • @exempt(from:) works with SwiftFormat rules.

🇩🇪DE

Neue Merkmale

  • Verwaltung fortlaufender Einbindung erstellt einige GitHub‐Vorgänge (“Actions”) (die noch nicht alles aus den Travis‐CI‐Aufgaben beinhalten).

Fehlerbehebungen

  • Abhängigkeitsaktualisierungen. (Hauptsächlich Verträglichkeit mit Swift 5.1.3.)
  • @ausnahme(zu:) funktioniert für Regeln von SwiftFormat.

Version 0.27.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Normalization became much more invasive with the addition of SwiftFormat. It is no longer active by default.

🇩🇪DE

Brechende Änderungen

  • Mit SwiftFormat verursacht die Normalisation nun viel größere Änderungen. Es wird nicht mehr automatisch eingeschaltet.

Version 0.26.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Normalization and proofreading include SwiftFormat. It can be configured under proofreading.swiftFormatConfiguration, or disabled completely by setting it to nil.
    • The autoindentResilience, colonSpacing and braceSpacing rules became redundant and have been removed.

🇩🇪DE

Brechende Änderungen

  • Normalisation und Korrektur beinhalten SwiftFormat. Es kann unter korrektur.swiftFormatKonfiguration konfiguriert, oder mit nil völlig ausgeschaltet werden.
    • Die Regeln widerstandGegenAutomatischenEinzug, doppelpunktabstand und abstandGeschweifterKlammern wurden überflüssig und sind entfernt worden.

Version 0.25.1 -

🇬🇧🇺🇸🇨🇦EN

Bug Fixes

  • Continuous integration uses Xcode 11.2 on macOS and Swift 5.1.1 on Linux.
  • The documentation index properly expands for the current page.

🇩🇪DE

Fehlerbehebungen

  • Fortlaufende EInbindung verwendet Xcode 11.2 auf macOS und Swift 5.1.1 auf Linux.
  • Die Dokumentationsverzeichnis wird für die aktuelle Seite aufgefaltet.

Version 0.25.0 -

🇬🇧🇺🇸🇨🇦EN

Breaking Changes

  • Xcode 11.1–2
  • Very old deprecation rules have been removed.

New Features

  • Xcode projects are not required for any task.
  • Test manifests are no longer required on Linux.
    • Proofreading rejects XCTestManifest.swift files.

🇩🇪DE

Brechende Änderungen

  • Xcode 11.1–2
  • Sehr alte Überholungsregeln wurden entfernt.

Neue Merkmale

  • Xcode‐Projekte werden für keine Aufgaben benötigt.
  • Testlisten werden auf Linux nicht mehr benötigt.
    • Korrekturlesen lehnt XCTestManifest.swift‐Dateien ab.

Version 0.24.0 -

🇬🇧🇺🇸🇨🇦EN

New Features

  • All platform restrictions have been removed.

Bug Fixes

  • Failed Xcode operations now longer spill duplicate logs.
  • Asterisks are allowed in availability checks.
  • Related projects are skipped during documentation coverage validation.

🇩🇪DE

Brechende Änderungen

  • Manche Rechtschreibungsfehler in der Programmierschnittstelle wurden korrigiert.

Neue Merkmale

  • Alle Schichtsbeschränkungen sind aufgehoben.

Fehlerbehebungen

  • Protokolle fehlgeschlagenen Xcode‐Vorgänge werden nicht mehr verdoppelt.
  • Sternchen sind in Verfügbarkeitsprüfungen erlaubt.
  • Verwandte Projekte werden übersprungen wenn Dokumentationsabdeckung geprüft wird.