diff --git a/README.md b/README.md index 9977329..d810d20 100644 --- a/README.md +++ b/README.md @@ -120,12 +120,12 @@ See also [Rust — Production](https://www.rust-lang.org/production) organizatio * [kbknapp/docli](https://github.com/kbknapp/docli-rs) — A command line utility for managing DigitalOcean infrastructure [](https://travis-ci.org/kbknapp/docli-rs) * [limonite](https://crates.io/crates/limonite) — static blog/website generator [](https://travis-ci.org/qmx/limonite) * [MaidSafe](https://maidsafe.net) — A decentralized platform. -* [mdBook](https://crates.io/crates/mdbook) — A command line utility to create books from markdown files ![Build Status](https://github.com/rust-lang/mdBook/workflows/CI/badge.svg) +* [mdBook](https://crates.io/crates/mdbook) — A command line utility to create books from markdown files [![Build Status](https://github.com/rust-lang/mdBook/workflows/CI/badge.svg?branch=master)](https://github.com/rust-lang/mdBook/actions) * [nicohman/eidolon](https://github.com/nicohman/eidolon) — A steam and drm-free game registry and launcher for linux and macosx [](https://travis-ci.org/nicohman/eidolon) * [notty](https://github.com/withoutboats/notty) — A new kind of terminal * [Pijul](https://pijul.org) — A patch-based distributed version control system * [rsign](https://crates.io/crates/rsign) — A simple command-line tool used to generate/sign/verify digital signatures designed to be compatible with Minisign ![Codeship Status for danielrangel/rsign](https://app.codeship.com/projects/60b28d80-7645-0135-4402-1639b58199d0/status?branch=master) -* [Rudr](https://github.com/oam-dev/rudr) — A Kubernetes implementation of the [Open Application Model](https://oam.dev/) specification ![](https://github.com/oam-dev/rudr/workflows/Rust/badge.svg) +* [Rudr](https://github.com/oam-dev/rudr) — A Kubernetes implementation of the [Open Application Model](https://oam.dev/) specification [![](https://github.com/oam-dev/rudr/workflows/Rust/badge.svg?branch=master)](https://github.com/oam-dev/rudr/actions) * [Sandstorm Collections App](https://github.com/sandstorm-io/collections-app) * [Servo](https://github.com/servo/servo) — A prototype web browser engine * [trust-dns](https://crates.io/crates/trust-dns) — A DNS-server [](https://travis-ci.org/bluejekyll/trust-dns) @@ -139,7 +139,7 @@ See also [Rust — Production](https://www.rust-lang.org/production) organizatio * [indiscipline/zrtstr](https://github.com/indiscipline/zrtstr) — A command line utility for checking if stereo wav files are faux-stereo (i.e. have identical channels) and converting such files to mono. [](https://travis-ci.org/indiscipline/zrtstr) * [Polaris](https://github.com/agersant/polaris) — A music streaming application. [](https://travis-ci.org/agersant/polaris) -* [Spotify TUI](https://github.com/Rigellute/spotify-tui) — A Spotify client for the terminal written in Rust. [](https://github.com/Rigellute/spotify-tui/actions?workflow=Continuous+Integration) +* [Spotify TUI](https://github.com/Rigellute/spotify-tui) — A Spotify client for the terminal written in Rust. [](https://github.com/Rigellute/spotify-tui/actions?workflow=Continuous+Integration) ### Cryptocurrencies @@ -174,7 +174,7 @@ See also [Rust — Production](https://www.rust-lang.org/production) organizatio * [indradb](https://crates.io/crates/indradb) — Rust based graph database [](https://travis-ci.org/indradb/indradb) * [noria](https://crates.io/crates/noria) — Dynamically changing, partially-stateful data-flow for web application backends [](https://travis-ci.org/mit-pdos/noria) -* [Lucid](https://github.com/lucid-kv/lucid) — High performance and distributed KV store accessible through a HTTP API. [![Build Status](https://github.com/lucid-kv/lucid/workflows/Lucid/badge.svg)](https://github.com/lucid-kv/lucid/actions?workflow=Lucid) +* [Lucid](https://github.com/lucid-kv/lucid) — High performance and distributed KV store accessible through a HTTP API. [![Build Status](https://github.com/lucid-kv/lucid/workflows/Lucid/badge.svg?branch=master)](https://github.com/lucid-kv/lucid/actions?workflow=Lucid) * [ParityDB](https://github.com/paritytech/paritydb) — Fast and reliable database, optimised for read operation * [PumpkinDB](https://github.com/PumpkinDB/PumpkinDB) — an event sourcing database engine [](https://travis-ci.org/PumpkinDB/PumpkinDB) * [seppo0010/rsedis](https://github.com/seppo0010/rsedis) — A Redis reimplementation in Rust [](https://travis-ci.org/seppo0010/rsedis) @@ -280,7 +280,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [brocode/fblog](https://github.com/brocode/fblog) — Small command-line JSON Log viewer [](https://travis-ci.org/brocode/fblog) * [buster/rrun](https://github.com/buster/rrun) — A command launcher for Linux, similar to gmrun [](https://travis-ci.org/buster/rrun) * [cristianoliveira/funzzy](https://github.com/cristianoliveira/funzzy) — A configurable filesystem watcher inspired by [entr](http://entrproject.org/) [](https://travis-ci.org/cristianoliveira/funzzy) -* [dalance/procs](https://github.com/dalance/procs) — A modern replacement for 'ps' written by Rust [](https://dev.azure.com/dalance/procs/_build/results?buildId=250) +* [dalance/procs](https://github.com/dalance/procs) — A modern replacement for 'ps' written by Rust [![Build Status](https://api.travis-ci.org/dalance/procs.svg?branch=master)](https://travis-ci.org/dalance/procs) * [dust](https://github.com/bootandy/dust) — A more intuitive version of du * [ddh](https://github.com/darakian/ddh) — Fast duplicate file finder [](https://travis-ci.org/darakian/ddh) * [fselect](https://crates.io/crates/fselect) — Find files with SQL-like queries [](https://travis-ci.org/jhspetersson/fselect) @@ -298,7 +298,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [pop-os/popsicle](https://github.com/pop-os/popsicle) — GTK3 & CLI utility for flashing multiple USB devices in parallel * [Luminarys/synapse](https://github.com/Luminarys/synapse) — Flexible and fast BitTorrent daemon. [![Build Status](https://api.travis-ci.org/Luminarys/synapse.svg?branch=master)](https://travis-ci.org/Luminarys/synapse) * [pop-os/system76-power](https://github.com/pop-os/system76-power/) — Linux power management daemon (DBus-interface) with CLI tool. -* [Ralvke/logram](https://github.com/Ralvke/logram) — Push log files' updates to Telegram [](https://travis-ci.org/Ralvke/logram) +* [Ralvke/logram](https://github.com/Ralvke/logram) — Push log files' updates to Telegram * [redox-os/ion](https://github.com/redox-os/ion) — Next-generation system shell [](https://travis-ci.org/redox-os/ion) * [unwrittenfun/hotkey-rs](https://github.com/unwrittenfun/hotkey-rs) — A library to listen to global hotkeys in Rust * [sharkdp/bat](https://github.com/sharkdp/bat) — A cat(1) clone with wings. [](https://travis-ci.org/sharkdp/bat) @@ -312,6 +312,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ ### Text editors * [gchp/iota](https://github.com/gchp/iota) — A simple text editor [](https://travis-ci.org/gchp/iota) +* [ilai-deutel/kibi](https://github.com/ilai-deutel/kibi) — A tiny (≤1024 LOC) text editor with syntax highlighting, incremental search and more. [](https://travis-ci.com/ilai-deutel/kibi) * [mathall/rim](https://github.com/mathall/rim) — Vim-like text editor written in Rust * [Remacs](https://github.com/remacs/remacs) — A community-driven port of Emacs to Rust. [](https://travis-ci.org/remacs/remacs) * [xi-editor](https://github.com/xi-editor/xi-editor) — A modern editor with a backend written in Rust. @@ -329,7 +330,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [whitfin/bytelines](https://github.com/whitfin/bytelines) — Read input lines as byte slices for high efficiency. * [vishaltelangre/ff](https://github.com/vishaltelangre/ff) — Find files (ff) by name! [](https://travis-ci.org/vishaltelangre/ff) * [xsv](https://crates.io/crates/xsv) — A fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.) [](https://travis-ci.org/BurntSushi/xsv) -* [Lispre/so_stupid_search](https://github.com/Lispre/so_stupid_search) — A simple and fast string search tool for human beings +* [Lisprez/so_stupid_search](https://github.com/Lisprez/so_stupid_search) — A simple and fast string search tool for human beings ### Image processing @@ -344,7 +345,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [arthrp/consoletimer](https://github.com/arthrp/consoleTimer) — Simple timer for your terminal. [](https://travis-ci.org/arthrp/consoleTimer) * [tversteeg/emplace](https://github.com/tversteeg/emplace) — Synchronize installed packages on multiple machines * [myfreeweb/freepass](https://github.com/myfreeweb/freepass) — The free password manager for power users. -* [raftario/licensor](https://github.com/raftario/licensor) — write licenses to stdout [![GitHub Actions](https://github.com/raftario/licensor/workflows/Build/badge.svg)](https://github.com/raftario/licensor/actions?workflowID=Build) +* [raftario/licensor](https://github.com/raftario/licensor) — write licenses to stdout [![GitHub Actions](https://github.com/raftario/licensor/workflows/Build/badge.svg?branch=master)](https://github.com/raftario/licensor/actions?workflowID=Build) * [arthrp/quick-skeleton](https://github.com/arthrp/quick-skeleton) — Project scaffolding tool, similar to Yeoman and Slush. [](https://travis-ci.org/arthrp/quick-skeleton) * [repoch](https://github.com/lucawen/repoch) — Convert epoch to datetime and datetime to epoch [](https://travis-ci.com/lucawen/repoch/) * [yaa110/rubigo](https://github.com/yaa110/rubigo) — Golang dependency tool and package manager, written in Rust [](https://travis-ci.org/yaa110/rubigo) @@ -377,7 +378,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [thecoshman/http](https://github.com/thecoshman/http) — Host These Things Please — A basic http server for hosting a folder fast and simply [](https://travis-ci.org/thecoshman/http) * [svenstaro/miniserve](https://github.com/svenstaro/miniserve) — A small, self-contained cross-platform CLI tool that allows you to just grab the binary and serve some file(s) via HTTP [](https://travis-ci.org/svenstaro/miniserve) * [TheWaWaR/simple-http-server](https://github.com/TheWaWaR/simple-http-server) — simple static http server -* [wyhaya/see](https://github.com/wyhaya/see) — Static HTTP file server [![Build Status](https://api.travis-ci.org/wyhaya/see.svg)](https://travis-ci.org/wyhaya/see) +* [wyhaya/see](https://github.com/wyhaya/see) — Static HTTP file server [![Build Status](https://api.travis-ci.org/wyhaya/see.svg?branch=master)](https://travis-ci.org/wyhaya/see) ## Development tools @@ -395,10 +396,10 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [ptags](https://github.com/dalance/ptags) — A parallel universal-ctags wrapper for git repository [![Build Status](https://api.travis-ci.org/dalance/ptags.svg?branch=master)](https://travis-ci.org/dalance/ptags) * [Racer](https://github.com/racer-rust/racer) — code completion for Rust [](https://travis-ci.org/racer-rust/racer) * [rustfmt](https://github.com/rust-lang/rustfmt) — A Rust code formatter [](https://travis-ci.com/rust-lang/rustfmt) -* [Rustup](https://github.com/rust-lang/rustup) — the Rust toolchain installer +* [Rustup](https://github.com/rust-lang/rustup) — the Rust toolchain installer [](https://github.com/rust-lang/rustup/actions) * [Rust Language Server](https://github.com/rust-lang/rls) — A server that runs in the background, providing IDEs, editors, and other tools with information about Rust programs * [Rust Regex Playground](https://2fd.github.io/rust-regex-playground/#method=find®ex=%5Cw%2B&text=abc) — Web tool to evaluate rust regular expressions -* [Rust Search Extension](https://github.com/Folyd/rust-search-extension) — A handy browser extension to search crates and docs in address bar (omnibox). ![Build Status](https://github.com/folyd/rust-search-extension/workflows/build/badge.svg) +* [Rust Search Extension](https://github.com/Folyd/rust-search-extension) — A handy browser extension to search crates and docs in address bar (omnibox). [![Build Status](https://github.com/folyd/rust-search-extension/workflows/build/badge.svg?branch=master)](https://github.com/Folyd/rust-search-extension/actions) * [artifact](https://github.com/vitiral/artifact) — the design doc tool made for developers [![Build Status](https://api.travis-ci.org/vitiral/artifact.svg?branch=master)](https://travis-ci.org/vitiral/artifact) * [semantic-rs](https://github.com/semantic-rs/semantic-rs) — automatic crate publishing [](https://travis-ci.org/semantic-rs/semantic-rs) * [fw](https://github.com/brocode/fw) — workspace productivity booster [](https://travis-ci.org/brocode/fw) @@ -410,7 +411,7 @@ See also [A comparison of operating systems written in Rust](https://github.com/ * [Cargo](https://crates.io/) — the Rust package manager * [cargo-benchcmp](https://crates.io/crates/cargo-benchcmp) — A utility to compare Rust micro-benchmarks [](https://travis-ci.org/BurntSushi/cargo-benchcmp) * [cargo-bitbake](https://crates.io/crates/cargo-bitbake) — A cargo extension that can generate BitBake recipes utilizing the classes from meta-rust [](https://travis-ci.org/cardoe/cargo-bitbake) - * [cargo-cache](https://crates.io/crates/cargo-cache) — inspect/manage/clean your cargo cache (`~/.cargo/`/`${CARGO_HOME}`), print sizes etc ![Build Status](https://github.com/matthiaskrgr/cargo-cache/workflows/ci/badge.svg) + * [cargo-cache](https://crates.io/crates/cargo-cache) — inspect/manage/clean your cargo cache (`~/.cargo/`/`${CARGO_HOME}`), print sizes etc [![Build Status](https://github.com/matthiaskrgr/cargo-cache/workflows/ci/badge.svg?branch=master)](https://github.com/matthiaskrgr/cargo-cache/actions) * [cargo-check](https://crates.io/crates/cargo-check) — A wrapper around `cargo rustc -- -Zno-trans` which can be helpful for running a faster compile if you only need correctness checks [](https://travis-ci.org/rsolomo/cargo-check) * [cargo-count](https://crates.io/crates/cargo-count) — lists source code counts and details about cargo projects, including unsafe statistics [](https://travis-ci.org/kbknapp/cargo-count) * [cargo-deb](https://crates.io/crates/cargo-deb) — Generates binary Debian packages [](https://travis-ci.org/mmstick/cargo-deb) @@ -565,7 +566,7 @@ See also [Are we (I)DE yet?](https://areweideyet.com/) and [Rust Tools](https:// * [vim-racer](https://github.com/racer-rust/vim-racer) — allows vim to use [Racer](https://github.com/racer-rust/racer) for Rust code completion and navigation. * [autozimu/LanguageClient-neovim](https://github.com/autozimu/LanguageClient-neovim) — [LSP](https://microsoft.github.io/language-server-protocol/) client. Implemented in Rust and supports rls out of the box. * Visual Studio - * [PistonDevelopers/VisualRust](https://github.com/PistonDevelopers/VisualRust) — A Visual Studio extension for Rust [](https://travis-ci.org/PistonDevelopers/VisualRust) + * [PistonDevelopers/VisualRust](https://github.com/PistonDevelopers/VisualRust) — A Visual Studio extension for Rust [![Build status](https://ci.appveyor.com/api/projects/status/5nw5no10jj0y4p3f?svg=true)](https://ci.appveyor.com/project/vosen/visualrust) * [dgriffen/rls-vs2017](https://github.com/ZoeyR/rls-vs2017) — Rust support for Visual Studio 2017 Preview [](https://ci.appveyor.com/project/dgriffen/rls-vs2017) * [Visual Studio Code](https://code.visualstudio.com/) * [rust-lang/rls-vscode](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust) — Rust support for Visual Studio Code @@ -630,7 +631,7 @@ See also [Are we (I)DE yet?](https://areweideyet.com/) and [Rust Tools](https:// * [Martin1887/oxigen](https://github.com/Martin1887/oxigen) — Fast, parallel, extensible and adaptable genetic algorithm library. A example using this library solves the N Queens problem for N = 255 in only few seconds and using less than 1 MB of RAM. * [innoave/genevo](https://github.com/innoave/genevo) — Execute genetic algorithm (GA) simulations in a customizable and extensible way. -* [willi-kappler/darwin-rs](https://github.com/willi-kappler/darwin-rs) — This library allows you to write evolutionary algorithms (EA) using the Rust programming language. Written by Willi Kappler, License: MIT — Version 0.4 (2017.06.26). +* [willi-kappler/darwin-rs](https://github.com/willi-kappler/darwin-rs) — Evolutionary algorithms with Rust [![Build Status](https://api.travis-ci.org/willi-kappler/darwin-rs.svg?branch=master)](https://travis-ci.org/willi-kappler/darwin-rs) * [m-decoster/RsGenetic](https://github.com/m-decoster/RsGenetic) — Genetic Algorithm library in Rust. In maintenance mode. * [mneumann/evo-rs](https://github.com/mneumann/evo-rs) — Evolutionary Algorithm Library for Rust. Without changes for 3 years. * [yurytsoy/revonet](https://github.com/yurytsoy/revonet) — Rust implementation of real-coded GA for solving optimization problems and training of neural networks. @@ -732,6 +733,7 @@ See also [About Rust’s Machine Learning Community](https://medium.com/@autumn_ * [docopt/docopt.rs](https://github.com/docopt/docopt.rs) [[docopt](https://crates.io/crates/docopt)] — A Rust implementation of [DocOpt](http://docopt.org) [](https://travis-ci.org/docopt/docopt.rs) * [TeXitoi/structopt](https://github.com/TeXitoi/structopt) [[structopt](https://crates.io/crates/structopt)] — parse command line argument by defining a struct [](https://travis-ci.org/TeXitoi/structopt) * [killercup/quicli](https://github.com/killercup/quicli) [[quicli](https://crates.io/crates/quicli)] — quickly build cool CLI apps in Rust [](https://travis-ci.org/killercup/quicli) + * [ksk001100/seahorse](https://github.com/ksk001100/seahorse) [[seahorse](https://crates.io/crates/seahorse)] — A minimal CLI framework written in Rust [![Build status](https://github.com/ksk001100/seahorse/workflows/CI/badge.svg?branch=master)](https://github.com/ksk001100/seahorse/actions) * Data visualization * [reugn/rspark](https://github.com/reugn/rspark) [[rspark](https://crates.io/crates/rspark)] — ▁▂▆▇▁▄█▁ Sparklines for Rust apps [](https://travis-ci.org/reugn/rspark) * Human-centered design @@ -752,7 +754,7 @@ See also [About Rust’s Machine Learning Community](https://medium.com/@autumn_ * [FGRibreau/spinners](https://github.com/FGRibreau/spinners) [[spinners](https://crates.io/crates/spinners)] — 60+ elegant terminal spinners * Prompt * [hashmismatch/terminal_cli.rs](https://github.com/hashmismatch/terminal_cli.rs) [[terminal_cli](https://crates.io/crates/terminal_cli)] — build an interactive command prompt [](https://travis-ci.org/hashmismatch/terminal_cli.rs) - * [starship/starship](https://starship.rs/) [[starship](https://crates.io/crates/starship)] — A minimal, blazing fast, and extremely customizable prompt for any shell [![Build status](https://github.com/starship/starship/workflows/Main%20workflow/badge.svg)](https://github.com/starship/starship/actions) + * [starship/starship](https://starship.rs/) [[starship](https://crates.io/crates/starship)] — A minimal, blazing fast, and extremely customizable prompt for any shell [![Build status](https://github.com/starship/starship/workflows/Main%20workflow/badge.svg?branch=master)](https://github.com/starship/starship/actions) * Style * [ogham/rust-ansi-term](https://github.com/ogham/rust-ansi-term) [[ansi_term](https://crates.io/crates/ansi_term)] — control colours and formatting on ANSI terminals [](https://travis-ci.org/ogham/rust-ansi-term) * [LukasKalbertodt/term-painter](https://github.com/LukasKalbertodt/term-painter) [[term-painter](https://crates.io/crates/term-painter)] — cross-platform styled terminal output [](https://travis-ci.org/LukasKalbertodt/term-painter) @@ -911,8 +913,8 @@ See also [About Rust’s Machine Learning Community](https://medium.com/@autumn_ * Sqlite [[sqlite](https://crates.io/keywords/sqlite)] * [jgallagher/rusqlite](https://github.com/jgallagher/rusqlite) — [Sqlite3](https://www.sqlite.org/index.html) bindings [](https://travis-ci.org/jgallagher/rusqlite) * ORM [[orm](https://crates.io/keywords/orm)] - * [diesel-rs/diesel](https://github.com/diesel-rs/diesel) — an ORM and Query builder for Rust [![Build Status](https://api.travis-ci.org/diesel-rs/diesel.svg)](https://travis-ci.org/diesel-rs/diesel) - * [ivanceras/rustorm](https://github.com/ivanceras/rustorm) — an ORM for Rust [![Build Status](https://api.travis-ci.org/ivanceras/rustorm.svg)](https://travis-ci.org/ivanceras/rustorm) + * [diesel-rs/diesel](https://github.com/diesel-rs/diesel) — an ORM and Query builder for Rust [![Build Status](https://api.travis-ci.org/diesel-rs/diesel.svg?branch=master)](https://travis-ci.org/diesel-rs/diesel) + * [ivanceras/rustorm](https://github.com/ivanceras/rustorm) — an ORM for Rust [![Build Status](https://api.travis-ci.org/ivanceras/rustorm.svg?branch=master)](https://travis-ci.org/ivanceras/rustorm) ### Data processing @@ -1235,7 +1237,7 @@ See also [Are we game yet?](https://arewegameyet.com) * [vlopes11/futures-jsonrpc](https://github.com/vlopes11/futures-jsonrpc) [[futures-jsonrpc](https://crates.io/crates/futures-jsonrpc)] — Futures implementation for JSON-RPC [](https://travis-ci.org/vlopes11/futures-jsonrpc) * Low level * [libpnet/libpnet](https://github.com/libpnet/libpnet) — A cross-platform, low level networking [](https://travis-ci.org/libpnet/libpnet) - * [m-labs/smoltcp](https://github.com/m-labs/smoltcp) — A standalone, event-driven TCP/IP stack that is designed for bare-metal, real-time systems [](https://travis-ci.org/m-labs/smoltcp) + * [smoltcp-rs/smoltcp](https://github.com/smoltcp-rs/smoltcp) — A standalone, event-driven TCP/IP stack that is designed for bare-metal, real-time systems [](https://travis-ci.org/smoltcp-rs/smoltcp) * [tokio-rs/tokio](https://github.com/tokio-rs/tokio) — A network application framework for rapid development and highly scalable production deployments of clients and servers. * [dylanmckay/protocol](https://github.com/dylanmckay/protocol) — Custom TCP/UDP protocol definitions * [actix/actix](https://github.com/actix/actix) — Actor library for Rust [](https://travis-ci.org/actix/actix) @@ -1357,7 +1359,7 @@ See also [Are we game yet?](https://arewegameyet.com) * [andylokandy/simsearch-rs](https://github.com/andylokandy/simsearch-rs) [[simsearch](https://crates.io/crates/simsearch)] — A simple and lightweight fuzzy search engine that works in memory, searching for similar strings * [BurntSushi/fst](https://github.com/BurntSushi/fst) [[fst](https://crates.io/crates/fst)] — [](https://travis-ci.org/BurntSushi/fst) -* [meilisearch/MeiliSearch](https://github.com/meilisearch/MeiliSearch) — Ultra relevant, instant and typo-tolerant full-text search API. [![Build Status](https://github.com/meilisearch/MeiliSearch/workflows/Cargo%20test/badge.svg)](https://github.com/meilisearch/MeiliSearch/actions) +* [meilisearch/MeiliSearch](https://github.com/meilisearch/MeiliSearch) — Ultra relevant, instant and typo-tolerant full-text search API. [![Build Status](https://github.com/meilisearch/MeiliSearch/workflows/Cargo%20test/badge.svg?branch=master)](https://github.com/meilisearch/MeiliSearch/actions) * [minio/minsql](https://github.com/minio/minsql) — High-performance log search engine. [](https://travis-ci.org/minio/minsql) * [CurrySoftware/perlin](https://github.com/CurrySoftware/perlin) [[perlin](https://crates.io/crates/perlin)] * [tantivy-search/tantivy](https://github.com/tantivy-search/tantivy) [[tantivy](https://crates.io/crates/tantivy)] — [](https://travis-ci.org/tantivy-search/tantivy) @@ -1378,13 +1380,13 @@ See also [Are we game yet?](https://arewegameyet.com) See also [Are we web yet?](http://www.arewewebyet.org) and [Rust web framework comparison](https://github.com/flosse/rust-web-framework-comparison). * Client-side / WASM - * [cargo-web](https://crates.io/crates/cargo-web) — A Cargo subcommand for the client-side Web [![Build Status](https://api.travis-ci.org/koute/cargo-web.svg)](https://travis-ci.org/koute/cargo-web) + * [cargo-web](https://crates.io/crates/cargo-web) — A Cargo subcommand for the client-side Web [![Build Status](https://api.travis-ci.org/koute/cargo-web.svg?branch=master)](https://travis-ci.org/koute/cargo-web) * [seed](https://seed-rs.org/) — A Rust framework for creating web apps - * [stdweb](https://crates.io/crates/stdweb) — A standard library for the client-side Web [![Build Status](https://api.travis-ci.org/koute/stdweb.svg)](https://travis-ci.org/koute/stdweb) + * [stdweb](https://crates.io/crates/stdweb) — A standard library for the client-side Web [![Build Status](https://api.travis-ci.org/koute/stdweb.svg?branch=master)](https://travis-ci.org/koute/stdweb) * [yew](https://crates.io/crates/yew) — Rust framework for making client web apps * HTTP Client * [alexcrichton/curl-rust](https://github.com/alexcrichton/curl-rust) — [libcurl](https://curl.haxx.se/libcurl/) bindings [](https://travis-ci.org/alexcrichton/curl-rust) - * [graphql-client](https://github.com/graphql-rust/graphql-client) —Typed, correct GraphQL requests and responses in Rus. [![Github actions Status](https://github.com/graphql-rust/graphql-client/workflows/CI/badge.svg)](https://github.com/graphql-rust/graphql-client/actions) + * [graphql-client](https://github.com/graphql-rust/graphql-client) — Typed, correct GraphQL requests and responses in Rust. [![Github actions Status](https://github.com/graphql-rust/graphql-client/workflows/CI/badge.svg?branch=master)](https://github.com/graphql-rust/graphql-client/actions) * [hyperium/hyper](https://github.com/hyperium/hyper) — an HTTP implementation [](https://travis-ci.org/hyperium/hyper) * [seanmonstar/reqwest](https://github.com/seanmonstar/reqwest) — an ergonomic HTTP Client for Rust. [](https://travis-ci.org/seanmonstar/reqwest) * [DoumanAsh/yukikaze](https://gitlab.com/Douman/yukikaze) — Beautiful and elegant Yukikaze is little HTTP client library based on hyper. [](https://gitlab.com/Douman/yukikaze) @@ -1415,13 +1417,14 @@ See also [Are we web yet?](http://www.arewewebyet.org) and [Rust web framework c * [snapview/tungstenite-rs](https://github.com/snapview/tungstenite-rs) — Lightweight stream-based WebSocket implementation for Rust. * [vi/websocat](https://github.com/vi/websocat) — CLI for interacting with WebSockets, with functionality of Netcat, Curl and Socat. [](https://travis-ci.org/vi/websocat) * [vityafx/urlshortener-rs](https://github.com/vityafx/urlshortener-rs) [[urlshortener](https://crates.io/crates/urlshortener)] — A very simple urlshortener library for Rust. [](https://travis-ci.org/vityafx/urlshortener-rs) - * [bitwyre/websocket_core](https://github.com/bitwyre/websocket_core) — Websocket generic server library for periodic message broadcast. [](https://github.com/bitwyre/websocket_core/actions) + * [bitwyre/websocket_core](https://github.com/bitwyre/websocket_core) — Websocket generic server library for periodic message broadcast. [](https://github.com/bitwyre/websocket_core/actions) * Miscellaneous * [cargonauts](https://github.com/cargonauts-rs/cargonauts) — A web framework intended for building maintainable, well-factored web apps. * [pyros2097/rust-embed](https://github.com/pyros2097/rust-embed) — A macro to embed static assets into the rust binary * [utkarshkukreti/select.rs](https://github.com/utkarshkukreti/select.rs) [[select](https://crates.io/crates/select)] — A library to extract useful data from HTML documents, suitable for web scraping. [![Build Status](https://api.travis-ci.org/utkarshkukreti/select.rs.svg?branch=master)](https://travis-ci.org/utkarshkukreti/select.rs) * [pwoolcoc/soup](https://gitlab.com/pwoolcoc/soup) [[soup](https://crates.io/crates/soup)] — A library similar to Pythons BeautifulSoup, designed to enable quick and easy manipulation and querying of HTML documents. [![Build Status](https://gitlab.com/pwoolcoc/soup/badges/master/pipeline.svg)](https://gitlab.com/pwoolcoc/soup/badges/master/pipeline.svg) * [softprops/openapi](https://github.com/softprops/openapi) — A library for processing openapi spec files + * [teloxide/teloxide](https://github.com/teloxide/teloxide/) - An elegant Telegram bots framework for Rust [![Build Status](https://github.com/teloxide/teloxide/workflows/Continuous%20integration/badge.svg)](https://github.com/teloxide/teloxide/actions) * Reverse Proxy * [sozu-proxy/sozu](https://github.com/sozu-proxy/sozu) [[sozu](https://crates.io/crates/sozu)] — A HTTP reverse proxy. [![Build Status](https://api.travis-ci.org/sozu-proxy/sozu.svg?branch=master)](https://travis-ci.org/sozu-proxy/sozu) * Static Site Generators diff --git a/src/main.rs b/src/main.rs index d328b33..9fbe172 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,12 @@ enum CheckerError { #[fail(display = "travis build is unknown")] TravisBuildUnknown, + + #[fail(display = "travis build image with no branch")] + TravisBuildNoBranch, + + #[fail(display = "github actions image with no branch")] + GithubActionNoBranch, } struct MaxHandles { @@ -140,9 +146,10 @@ fn get_url(url: String) -> BoxFuture<'static, (String, Result<(), CheckerError>) } } lazy_static! { - static ref TRAVIS_IMG_REGEX: Regex = Regex::new(r"https://api.travis-ci.(?:com|org)/[^/]+/.+\.svg").unwrap(); + static ref TRAVIS_IMG_REGEX: Regex = Regex::new(r"https://api.travis-ci.(?:com|org)/[^/]+/.+\.svg(\?.+)?").unwrap(); + static ref GITHUB_ACTIONS_REGEX: Regex = Regex::new(r"https://github.com/[^/]+/[^/]+/workflows/[^/]+/badge.svg(\?.+)?").unwrap(); } - if TRAVIS_IMG_REGEX.is_match(&url) { + if let Some(matches) = TRAVIS_IMG_REGEX.captures(&url) { // Previously we checked the Content-Disposition headers, but sometimes that is incorrect // We're now looking for the explicit text "unknown" in the middle of the SVG let content = ok.text().await.unwrap(); @@ -150,6 +157,19 @@ fn get_url(url: String) -> BoxFuture<'static, (String, Result<(), CheckerError>) res = Err(CheckerError::TravisBuildUnknown); break; } + let query = matches.get(1).map(|x| x.as_str()).unwrap_or(""); + if !query.starts_with("?") || query.find("branch=").is_none() { + res = Err(CheckerError::TravisBuildNoBranch); + break; + } + } + if let Some(matches) = GITHUB_ACTIONS_REGEX.captures(&url) { + debug!("Github actions match {:?}", matches); + let query = matches.get(1).map(|x| x.as_str()).unwrap_or(""); + if !query.starts_with("?") || query.find("branch=").is_none() { + res = Err(CheckerError::GithubActionNoBranch); + break; + } } debug!("Finished {}", url); res = Ok(()); @@ -255,6 +275,12 @@ async fn main() -> Result<(), Error> { CheckerError::TravisBuildUnknown => { format!("[Unknown travis build] {}", url) } + CheckerError::TravisBuildNoBranch => { + format!("[Travis build image with no branch specified] {}", url) + } + CheckerError::GithubActionNoBranch => { + format!("[Github action image with no branch specified] {}", url) + } _ => { format!("{:?}", err) }