All Projects → summerlabs → punic

summerlabs / punic

Licence: other
Punic is a remote cache CLI built for Carthage and Apple .xcframework

Programming Languages

rust
11053 projects
Makefile
30231 projects

Projects that are alternatives of or similar to punic

Rome
Carthage cache for S3, Minio, Ceph, Google Storage, Artifactory and many others
Stars: ✭ 724 (+2796%)
Mutual labels:  apple, cache, aws-s3, carthage, s3
Cash
HTTP response caching for Koa. Supports Redis, in-memory store, and more!
Stars: ✭ 122 (+388%)
Mutual labels:  caching, amazon, cache, s3
Aws.s3
Amazon Simple Storage Service (S3) API Client
Stars: ✭ 302 (+1108%)
Mutual labels:  amazon, aws-s3, s3
django-s3file
A lightweight file upload input for Django and Amazon S3
Stars: ✭ 66 (+164%)
Mutual labels:  amazon, aws-s3, s3
NumPad
Number Pad (inspired by Square)
Stars: ✭ 81 (+224%)
Mutual labels:  apple, carthage
reaction-file-collections-sa-s3
An S3 storage adapter for Reaction Commerce's reaction-file-collections
Stars: ✭ 14 (-44%)
Mutual labels:  aws-s3, s3
cachegrand
cachegrand is an open-source fast, scalable and secure Key-Value store, also fully compatible with Redis protocol, designed from the ground up to take advantage of modern hardware vertical scalability, able to provide better performance and a larger cache at lower cost, without losing focus on distributed systems.
Stars: ✭ 87 (+248%)
Mutual labels:  caching, s3
terraform-remote-state
A Terraform module that configures an s3 bucket for use with Terraform's remote state feature
Stars: ✭ 21 (-16%)
Mutual labels:  s3, remote
BlobHelper
BlobHelper is a common, consistent storage interface for Microsoft Azure, Amazon S3, Komodo, Kvpbase, and local filesystem written in C#.
Stars: ✭ 23 (-8%)
Mutual labels:  aws-s3, s3
terraform-aws-s3-object
Terraform module which creates S3 object resources on AWS
Stars: ✭ 15 (-40%)
Mutual labels:  aws-s3, s3
fss3
FSS3 is an S3 filesystem abstraction layer for Golang
Stars: ✭ 52 (+108%)
Mutual labels:  aws-s3, s3
s3-edit
Edit directly a file on Amazon S3 in CLI
Stars: ✭ 69 (+176%)
Mutual labels:  aws-s3, s3
infraform
Creating infrastructure and running applications using different platforms
Stars: ✭ 31 (+24%)
Mutual labels:  infrastructure, infra
flask-drive
A simple Flask app to upload and download files off Amazon's S3
Stars: ✭ 23 (-8%)
Mutual labels:  aws-s3, s3
simple-flask-s3-uploader
Simple and easy to use Flask app to upload files to Amazon S3. Based on Python, Flask, and using Boto3. Securely storing your AWS credentials as environment variables. Quick AWS S3 Flask uploader example.
Stars: ✭ 24 (-4%)
Mutual labels:  aws-s3, s3
Bucket-Flaws
Bucket Flaws ( S3 Bucket Mass Scanner ): A Simple Lightweight Script to Check for Common S3 Bucket Misconfigurations
Stars: ✭ 43 (+72%)
Mutual labels:  aws-s3, s3
storage-abstraction
Provides an abstraction layer for interacting with a storage; the storage can be local or in the cloud.
Stars: ✭ 36 (+44%)
Mutual labels:  amazon, aws-s3
brewfile
🍎 Brewfile to install softwares in macOS for engineers
Stars: ✭ 37 (+48%)
Mutual labels:  homebrew, apple
SwiftUIFormValidator
Declarative form validator for SwiftUI.
Stars: ✭ 34 (+36%)
Mutual labels:  apple, carthage
ionic-image-upload
Ionic Plugin for Uploading Images to Amazon S3
Stars: ✭ 26 (+4%)
Mutual labels:  aws-s3, s3

Punic

elephant

Punic is a remote caching CLI built for Carthage that exclusively supports Apple's .xcframeworks.

Features

  • Easy remote caching via AWS S3
  • Easy CI/CD integration
  • Support for versioned dependencies

Please give us a ⭐️ if you find this CLI useful!

Example Usage

elephant

Installation

brew tap summerlabs/homebrew-punic
brew install punic

AWS Credentials

Make sure you have your AWS config and credentials setup.

They are keys that Punic uses to upload your frameworks into AWS and will be automatically setup for you when you run aws configure.

Here is an example after you run the setup successfully.

~/.aws/config

[default]
region = us-west-1
output = json

~/.aws/credentials

[default]
aws_access_key_id = {SOME_ACCESS_KEY_ID}
aws_secret_access_key = {SOME_SECRET_KEY}

Documentation

Punfile

Punic looks for a Punfile in your top-level project to determine which dependencies to download as well as configuring the path of your local cache.

Example Punfile

# Configure Punic
configuration:
  # save dependencies into this AWS bucket directory
  #
  # ie. //some-remote-bucket/1.0.1/Alamofire/Alamofire.xcframework
  #
  # defaults to `output`
  #
  prefix: 1.0.1
  # local cache location
  local: ~/Library/Caches/Punic
  # output cache location
  output: Carthage/Build
  # aws bucket location
  s3Bucket: some-remote-bucket
  
# Search your output directory for these .xcframeworks
dependencies:
# single framework definition
- AlamoFire:
  - name: AlamoFire
  # support for explicit versioning
    version: 0.1.9
# multiple frameworks definition sometimes created by one library
- CocoaLumberjack:  
  # having no version defaults to a versionless dependency cache
  - name: CocoaLumberjack
  - name: CocoaLumberjackSwift
  - name: CocoaAsyncSocket
    version: {COCOA_VERSION}

we also support basic templating with environment variables the best way to do this is create a .env file and source it before running punfile

Commands

After building your .xcframeworks using

carthage update --use-xcframeworks

They will be located in the top level Carthage/Build directory.

Download .xcframeworks

punic download

Upload .xcframeworks

punic upload

Miscellaneous

# The `output cache` is the Carthage/Build folder

# ignore the local cache and zip directly from the output cache 
punic upload --ignore-local

# ignore the local cache and download anyway then copy
punic download --ignore-local

# ignore the output cache and copy anyway
punic download --ignore-output

# use an override cache prefix
punic {command} --cache-prefix {some_other_path_key}

# target specific dependencies
punic {command} --dependencies Alamofre,CocoaLumberjack

Carthage-less Support

Punic is capable of copying the downloaded/cached frameworks into a separate folder, you don't have to necessarily use Carthage/Build if you want to copy the files into a separate directory for your own reasons.

Feel free to change the output key in the Punfile to achieve this.

Developer Support

Punic is a new framework that was made to help our team achieve remote caching with Apple's latest .xcframework change. If you find any issues using the CLI, don't hesitate to open one up to help us bug splash.

For all you Rust developers, feel free to contribute to this framework and help us grow the CLI.

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].