All Projects → vknabel → Archery

vknabel / Archery

Licence: MIT license
Declare all your project's metadata and what you can do with it in one single place.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Archery

FakeBundle
🗄 Use Resources in your Swift Package Manager executable
Stars: ✭ 13 (-72.34%)
Mutual labels:  swift-package-manager, mint
Coregpx
A library for parsing and creation of GPX location files. Purely Swift.
Stars: ✭ 132 (+180.85%)
Mutual labels:  metadata, swift-package-manager
ModelCataloguePlugin
MetadataExchange Community Edition
Stars: ✭ 16 (-65.96%)
Mutual labels:  metadata
xavc rtmd2srt
Extract real time meta-data and GPS tracks from Sony XAVC video
Stars: ✭ 29 (-38.3%)
Mutual labels:  metadata
pymods
process MODS records from Python
Stars: ✭ 17 (-63.83%)
Mutual labels:  metadata
lunala
💎│ The official Lunala's source code! Yet a modern space exploration bot.
Stars: ✭ 24 (-48.94%)
Mutual labels:  arrow
BETL-old
BETL. Meta data driven ETL generation using T-SQL
Stars: ✭ 17 (-63.83%)
Mutual labels:  metadata
idr-metadata
Curated metadata for all studies published in the Image Data Resource
Stars: ✭ 12 (-74.47%)
Mutual labels:  metadata
js-symbol-tree
Turn any collection of objects into its own efficient tree or linked list using Symbol
Stars: ✭ 86 (+82.98%)
Mutual labels:  metadata
JellyfinJav
JAV metadata providers for Jellyfin
Stars: ✭ 66 (+40.43%)
Mutual labels:  metadata
pykafarr
A high-performance Python Kafka client. Efficiently from Kafka to Pandas and back.
Stars: ✭ 32 (-31.91%)
Mutual labels:  arrow
itemadapter
Common interface for data container classes
Stars: ✭ 47 (+0%)
Mutual labels:  metadata
MLLineChart
A simple Line Chart Lib
Stars: ✭ 28 (-40.43%)
Mutual labels:  swift-package-manager
bootstrap-directional-buttons
Directional / Arrow buttons for Bootstrap
Stars: ✭ 18 (-61.7%)
Mutual labels:  arrow
Swiftproj
A command-line tool for managing Xcode project with Swift Package Manager.
Stars: ✭ 15 (-68.09%)
Mutual labels:  swift-package-manager
iptcinfo3
iptcinfo working for python 3 finally do pip3 install iptcinfo3
Stars: ✭ 37 (-21.28%)
Mutual labels:  metadata
Conduit
Robust Swift networking for web APIs
Stars: ✭ 52 (+10.64%)
Mutual labels:  swift-package-manager
SwiftCurrent
A library for managing complex workflows in Swift
Stars: ✭ 286 (+508.51%)
Mutual labels:  swift-package-manager
intuit-spring-cloud-config-inspector
Inspection of Spring Cloud Config properties made easy using React
Stars: ✭ 18 (-61.7%)
Mutual labels:  metadata
ecs-demo
Minimal demo App for the Fireblade Entity-Component System (ECS)
Stars: ✭ 20 (-57.45%)
Mutual labels:  swift-package-manager

🏹 Archery

Archery allows you to declare all your project's metadata and what you can do with it in one single place. All fueled with the power of scripting.

Within Archery all your data is either declared as YAML in one file called Archerfile or generated by scripts, which will be passed to arrows as JSON. The whole content of that file is treated as metadata. Within scripts you declare whatever you want to run, loaders is there to generate additional metadata.

The following code shows how an Archerfile may look like. Besides the name and version of the project, it declares two scripts:

name: YourProject
help: Thanks for downloading this project and trying it out.
version: 1.0.0
loaders:
  - cat Metadata/*.yml
scripts:
  xcproj: swift package generate-xcodeproj
  generate-version:
    arrow: vknabel/StencilArrow
    help: Injects the current version into the SPM project
    template: Version.swift.stencil
    destination: Sources/ArcheryKit/Version.generated.swift
    searchPaths: [Scripts]
  • $ archery xcproj will use Mint to load vknabel/BashArrow, which executes a given command. Whenever you want to run simple scripts on the command line which do not require global installs, this is an universal way to go.
  • $ archery generate-version is based on vknabel/StencilArrow. It will pass all contents of the Archerfile to render the contents of Version.swift.stencil using the Stencil language. Whenever you need information of your Archerfile inside other files, this way should be the most convenient.

If you are new to a project, Archery will help you to get started as it acts as a project internal CLI. The generated help for the Archerfile can be accessed as below.

$ archery
Thanks for downloading this project and trying it out.

Available Commands:

    generate-version  Injects the current version into the SPM project
    xcproj            Generate the Xcode Project for the current SwiftPM project

No matter which arrow you will choose for your scripts: it comes with all dependencies it needs. No need for any additional commands.

Scripts

The script tag at root level drives the available subcommands and is interpreted as Array of scripts.

Option Default Description
arrow Required Github repository for a Swift CLI. See vknabel/ArrowKit.
version master The version that shall be used. Will be cached within .archery/mint
help None The description of the script.
nestedArrow false Treat subcommands as arrow. Allows to write arrows in different languages. See vknabel/ArrowKit.

Getting Started

In order to use Archery within your own project, either create your Archerfile by hand or let Archery create one for you.

$ archery init
🏹  Created at Archerfile

Now you can add all your metadata and scripts. Don't know where to start? Here are some examples for you:

  • If you develop a library you could generate your .podspec, Package.swift and Cartfile. All your dependencies would be declared within your Archerfile, the manifests would be generated using vknabel/StencilArrow.
  • What is your release process? Why not start it using $ archery release? As this script will be more complex, the best would be to use vknabel/ArcheryArrow. You can find a more complete list at the Available Arrows.
  • What do you need to install or configure in order to get started with your project? You could move some dependencies into arrows or guide the new users through a tutorial. You can find a more complete list at the Available Arrows.

Installation

Using Mint

$ mint run vknabel/Archery

Using Marathon

$ marathon run vknabel/archery

Swift Package Manager

$ git clone https://github.com/vknabel/Archery.git
$ cd Archery
$ swift build -c release
$ cp -f .build/release/archery /usr/local/bin/archery

Archery can also be embedded within your own CLI using SwiftPM.

Environment Variables

Archery passes the following environment variables to each script including loaders.

Name Description Example use case
ARCHERY Path to the archery executable. To run child processes $ARCHERY script-name
ARCHERY_METADATA JSON contents of all metadata. Parse metadata in your scripts.
ARCHERY_SCRIPT JSON contents of the script config. Parse config in your scripts.
ARCHERY_API_LEVEL Number of the API level. To improve backwards compatibility.
ARCHERY_LEGACY_MINT_PATH Path to the mint driver. In case your script relies on mint.

Available Legacy Arrows

Currently the following arrows are known. Feel free to add your own arrows. If you want to write your own arrow head over to vknabel/ArrowKit and feel free to add to add your own arrow here.

Archery

vknabel/ArcheryArrow Runs multiple scripts.

  • Automate complex actions by reusing small building blocks
  • Combine all steps for a new release into one command
  • Enforce code style and code format in a pre-commit hook

Bash

vknabel/BashArrow Run bash scripts.

  • Write custom arrows in other languages using the "nestedArrow": true
  • Generate your docs using jazzy

Beak

vknabel/BeakArrow Run functions inside Swift files. Based on yonaskolb/Beak.

  • Great to keep related programs together
  • Automate your project
  • Write custom arrows in Swift using "nestedArrow": true

Stencil

vknabel/StencilArrow Render your metadata. Based on kylef/Stencil.

  • Keep your versions up-to-date
  • Generate your Podfile
  • Create new models or classes

Marathon

vknabel/MarathonArrow Run Swift scripts. Based on JohnSundell/Marathon.

  • Write arrows that are specific to your project with "nestedArrow": true
  • Automate your project

Mint

vknabel/MintArrow Run CLIs written in Swift. Internally used for all arrows. Based on yonaskolb/Mint.

  • Run Swiftlint, SwiftFormat and other scripts
  • Install local dependencies when needed

Development Status

As Archery is still in early development I want every user to know as early as possible what may actually change or break in future. This project uses semantic versioning. Version 1.0.0 will be released when known bugs are fixed, all major features have been implemented and upcoming one can be implemented without breaking changes. Additional requirements are a good documentation and good error messages. Until 1.0 has been reached minor updates may break, but patches will stay patches and hence safe for updates.

Contributors

License

Archery is available under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].