Giter Site home page Giter Site logo

michaelo / prosit Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 1.32 MB

A simple project setup tool.

Home Page: https://twitter.com/miodden/status/1348972358992846850

License: MIT License

Zig 100.00%
scm package-manager project-manager downstream downstream-tasks

prosit's Introduction

prosit

ATT! The WIP is strong with this one, but it's running now. Tested building for macOS, Windows 10 and Ubuntu (via WSL1).

The gist:

prosit update # Update all dependencies as specifed in the manifest
# prosit init # Set up a new best-effort prosit.manifest in the current working directory <- not yet implemented
prosit --help

What it is

This is a minimalistic tool to help maintain your dependencies, with a high degree of flexibility with regards to their data source and how they are put in your workspace.

The manifest-file

A file in the current working directory (most likely the root-folder of your project).

Name: prosit.manifest

Contents-syntax (Att! subject to changes):

# Comments are supported. Here we pull a repo and checkout e.g. a tag
git: https://github.com/some/repo#v1.0 > my/local/path

# You can also specify branch or exact revision
git: https://github.com/other/repo#main > otherrepo

# Some files from somewhere else could be relevant
file: /etc/hosts > local/hosts.txt

# File from web
https: http://michaelodden.com/robots.txt > robots.txt

# File from web w/ basic auth and env-variables
https: https://$(USERNAME):$(PASSWORD)@my.com/protected_file > protected_file

Assuming all sources are available, and any rights etc are OK, this shall result in a directory structure like this:

./prosit.manifest <- the file as described above
./my/local/path/
    .git/
    <checked out repo contents>
./otherrepo/
    .git/
    <checked out repo contents>
./local/
    hosts.txt

Supported data sources

Supported for v1.0:

  • git
  • file
  • https/http (with basic auth)

Future possibilities:

  • hg
  • dir
  • https (with other auths)
  • orthogonal to file and https: extraction of archive

Build and install

It builds using the Zig build system.

Prerequisite: libcurl-dev - TBD: vendor it and deps directly?

  • Clone repo
  • Enter repo
  • Build: zig build
  • Install: zig build install --prefix /usr/local
  • Integration tests: zig build itest

Prerequisites

  • zig - development is currently done on a fairly recent 0.11-build

Design goals

  • High performant (to the degree possible for an network/io-bound application)
  • Get out of the way as fast as possible
  • Flexible with regards to supported data sources and their in-workspace residency
  • Support/encourage accuracy
  • Minimal runtime dependencies (currently requiring git executable and libcurl)
  • Minimal compile-time dependencies

Target platforms

  • x64 macOS (developed on)
  • x64 Windows
  • x64 Linux
  • ARM64 Linux
  • ARM64 macOS

FAQ

Add it and they will come, right?

License

See LICENSE.

prosit's People

Contributors

michaelo avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.