A build system from the future ๐Ÿ––

Overview

Warp logo Warp logo

Contributors badge Twitter handle Discord Chat

warp is an friendly, fast, correct, and extensible build system built for polyglot monorepos that uses JavaScript for its configuration and is built in Rust.

Features

  • Faster than light. Every build action is cached and reused, and all builds are reproducible.
  • Zero configuration. All build configuration is derived from sources and existing tool config.
  • Designed to be extended. Use custom Tricorders, or write JavaScript rules and toolchains.
  • Automatically manages language installations per project for you.

Install

See the releases page.

Comments
  • feat(store): add first manifests into this repo

    feat(store): add first manifests into this repo

    Maintaining these manifests in a separate repo has become troublesome in the last few weeks of iterating across the different tricorders. Putting them into the same repo allows us to also read them directly from disk during development.

    opened by ostera 1
  • meta: add LICENSE

    meta: add LICENSE

    Hello folks ๐Ÿ‘‹๐Ÿฝ opening this issue so we can have a conversation around this. Especially interested in your legal advise here @Enkronan!

    I've tagged all of you to review this, so if you approve it you agree to having your contributions up to now and from now licensed as MPL 2.0.

    opened by ostera 1
  • The test reporter is reporting wrong counts

    The test reporter is reporting wrong counts

    When running the command below, we see all the right things are being handled BUT the counts of the different events are off.

    We have built 5 things, and we have cached 5 things, but there is no mention of the 11 tests that were ran and cached.

    ; warp test --public-store-metadata-url http://localhost:9000 --force-redownload ./test/verl_SUITE.erl
         Started http://localhost:9000/tricorder/beam/manifest.json
        Readying http://localhost:9000/tricorder/beam/manifest.json
           Ready http://localhost:9000/tricorder/beam/manifest.json
       Cache-hit https://rules.warp.build/toolchains/openssl  
       Cache-hit https://rules.warp.build/toolchains/erlang  
       Cache-hit src/verl_parser.erl  
       Cache-hit src/verl.erl  
            PASS ./test/verl_SUITE.erl parse_test (CACHED)
            PASS ./test/verl_SUITE.erl compare_test (CACHED)
            PASS ./test/verl_SUITE.erl between_test (CACHED)
            PASS ./test/verl_SUITE.erl compile_requirement_test (CACHED)
            PASS ./test/verl_SUITE.erl ./test/verl_SUITE.erl (CACHED)
            PASS ./test/verl_SUITE.erl lte_test (CACHED)
            PASS ./test/verl_SUITE.erl lt_test (CACHED)
            PASS ./test/verl_SUITE.erl gt_test (CACHED)
            PASS ./test/verl_SUITE.erl is_match_test (CACHED)
            PASS ./test/verl_SUITE.erl parse_requirement_test (CACHED)
            PASS ./test/verl_SUITE.erl eq_test (CACHED)
            PASS ./test/verl_SUITE.erl gte_test (CACHED)
        Finished ./test/verl_SUITE.erl in 865ms (5 built, 5 cached)
    

    What we'd expect to see would be:

        Finished ./test/verl_SUITE.erl in 865ms (11 passed, 0 errors, 5 built, 16 cached)
    

    And also, one specific line where we built a library (the test/verl_SUITE.erl library) reads:

            PASS ./test/verl_SUITE.erl ./test/verl_SUITE.erl (CACHED)
    

    where it should read:

       Cache-hit ./test/verl_SUITE.erl
    
    enhancement good first issue 
    opened by ostera 0
  • Core(packer): Adds `warp pack` command

    Core(packer): Adds `warp pack` command

    Adds Warp pack <target> command to the CLI. Also adds packaging capability to the core. Given an ArtifactManifest, we're now able to turn its outputs and dependencies into N tarballs and generate a PackageManifest. This work will enable a future publisher that gets these packages and publish them to a remote warp store.

    Still need to:

    • [x] write tests
    • [x] add docs
    opened by diogomqbm 0
  • Begin bootstrapping of tricorders

    Begin bootstrapping of tricorders

    Since the Mark I we've had the problem of bootstrapping of tricorders. In the Mark I we dealt with this by vendoring every dependency to avoid the resolution process. In the Mark II the resolution process is very different, so we need to come up with a new approach.

    In this PR we work to make any tricorder bootstrappable by building them in a way that allows the least amount of incrementality (and thus the least amount of signature generation), while still allowing us to add incremental build support to them once they are built.

    enhancement 
    opened by ostera 0
  • When building a single target that is skipped, the build hangs

    When building a single target that is skipped, the build hangs

    ; warp build ./Makefile
    

    This skips the Makefile since we don't have a tricorder for it yet, but it never finishes since its not pulled out of the queue correctly, and so the WorkerPool still believes there's work to do.

    bug 
    opened by ostera 0
  • WARP-110: Add end-to-end test with a sample repository

    WARP-110: Add end-to-end test with a sample repository

    Now that we're publishing binaries on every tag, we need a good way of smoke-testing if the binary will run on some sample repositories or not. This tests I'm adding will get us started on this path.

    opened by ostera 10
  • Add `warp gc` command

    Add `warp gc` command

    Since we know how often we are accessing certain artifacts in the local store, we can keep track of the last access to allow for routine cleanups of the store.

    This will help us keep our store size down to rather stable numbers.

    enhancement good first issue help wanted 
    opened by ostera 0
  • Specifying implicit toolchain versions

    Specifying implicit toolchain versions

    Some toolchains do not have a clear version that are readable from configuration files. One example of this is protoc, that usually is expected to be installed globally via brew or apt.

    To do this, we should add support in the Warpfile to define toolchain versions:

    {
      "toolchains": {
        "protobuf": "3.21.12"
      }
    }
    
    enhancement 
    opened by ostera 0
  • Warp in Warp

    Warp in Warp

    Currently we are missing a few things to get Warp to build with itself. We'll use this issue to keep track of those things.

    • [ ] #26
    • [x] #30
    • [ ] #29
    • [ ] build and release in multiple architectures
      • [x] #32
      • [ ] #35
    opened by ostera 0
  • Support for running warp from anywhere inside of the workspace

    Support for running warp from anywhere inside of the workspace

    Right now, you can only run warp and give a target from the root of the project. This needs to be extended to accept relative paths from the current directory.

    We should probably use the invocation dir and the workspace root to figure out the difference and then construct a relative path to the root of the workspace.

    enhancement good first issue help wanted 
    opened by capitanu 0
AniTUI is a CLI (and in the future a TUI) app for searching and wathching anime in MPV.

AniTUI is a CLI (and in the future a TUI) app for searching and wathching anime in MPV. This is a Rust rewrite (quite literally a rewrite) of Pystardu

null 7 Oct 31, 2022
Build Java applications without fighting your build tool. Drink some espresso.

Espresso Build Java applications without fighting your build tool. Drink some espresso. Features Modern Look & Feel Command line interface inspired by

Hunter LaFaille 5 Apr 2, 2024
Thyme -- The classy build system.

The Thyme build system. Welcome to the Thyme build system! It chops, it dices, it links, it builds and Oh my! Do I see Lua? ?? Quick introduction The

null 2 Aug 25, 2022
A CLI tool for CIs and build scripts, making file system based caching easy and correct (locking, eviction, etc.)

FS Dir Cache A CLI tool for CIs and build scripts, making file system based caching easy and correct (locking, eviction, etc.) When working on build s

Dawid Ciฤ™ลผarkiewicz 5 Aug 29, 2023
BASIC build system and package manager.

Bargo BASIC build system and package manager. Bargo is a tool to make it simpler to program in the BASIC programming language. Early versions of BASIC

Vasco Costa 3 Apr 6, 2024
First project in rust which will be to make an accounts system & Leaderboard/Score system

rust-backend this is my first project in rust which will be to make a backend for compsci project it will include: Accounts, Player Achievements (if I

NaughtyDog6000 2 Jul 13, 2023
Quickly build cool CLI apps in Rust.

QuiCLI Quickly build cool CLI apps in Rust. Getting started Read the Getting Started guide! Thanks This is only possible because of all the awesome li

Pascal Hertleif 538 Dec 5, 2022
:large_orange_diamond: Build beautiful terminal tables with automatic content wrapping

Comfy-table Comfy-table tries to provide utility for building beautiful tables, while being easy to use. Features: Dynamic arrangement of content to a

Arne Beer 525 Jan 8, 2023
Build terminal user interfaces and dashboards using Rust

tui-rs tui-rs is a Rust library to build rich terminal user interfaces and dashboards. It is heavily inspired by the Javascript library blessed-contri

Florian Dehau 9.3k Jan 4, 2023
Build terminal dashboards using ascii/ansi art and javascript

blessed-contrib Build dashboards (or any other application) using ascii/ansi art and javascript. Friendly to terminals, ssh and developers.

Yaron Naveh 15k Jan 2, 2023
A tool crate to quickly build rust command line application.

Falsework A tool crate to quickly build rust command line application.

Leon Ding 103 Dec 12, 2022
A CLI command to parse kustomize build result and notify it to GitLab

ksnotify A CLI command to parse kustomize build result and notify it to GitLab Caution This repository is under development status. What ksnotify does

null 7 Jan 2, 2023
Tool to build OSX package installers

?? Pak MacOS package installer builder What does pak do? Pak builds MacOS package installers from a project file. Since apple removed PackageBuilder f

ash 2 Feb 21, 2022
A simple CLI to build VEXCode V5 Pro projects and download them to the V5 brain.

vexer A simple CLI to build VEXCode V5 Pro projects and download them to the V5 brain. (WIP) This currently is only tested on and only works on window

null 2 May 16, 2022
โš™๏ธ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023
Helps cargo build and run apps for iOS

cargo-xcodebuild Helps cargo build and run apps for iOS. ?? โš™๏ธ ?? Setup You need to install Xcode (NOT just Command Line Tools!), xcodegen, cargo-xcod

Igor Shaposhnik 29 Nov 22, 2022
Build light & secure cross-platform applications with a web-based UI

Millennium Icon by XFaon. *Stats are from Tauri and may not be fully accurate. Millennium is a cross-platform webview framework written in Rust. With

pyke 20 Dec 29, 2022
Find and clean heavy build or cache directories.

ProjClean Find and clean heavy build or cache directories. ProjClean finds directories such as node_modules(node), target(rust), build(java) and their

null 42 Sep 25, 2022
Build some cyber security tools in Rust :crab: :rocket:

here we're trying to write some tools for cyber security in Rust because we don't have enough community for Rust in the cyber security field soo this

Khaled Nassar 42 Nov 29, 2022