A Modern And Secure CLI Tool For Managing Environment Variables

Overview

envio Logo

A Modern And Secure CLI Tool For Managing Environment Variables

CICD Version info

AboutProfilesInstallationUsageContributingLicense


Demo

To see the GPG encryption demo go here

About

envio is an open source CLI tool that helps make managing environment variables a breeze. With envio, users can create encrypted profiles that contain a collection of environment variables associated with a specific project or use case. envio ensures security and simplifies the development process by allowing users to easily switch between profiles as needed and load them in their current terminal session for immediate use.

Some key features of envio include:

  • Encrypted profiles through passphrase or GPG encryption
  • Load profiles into your terminal sessions
  • Persistent environment variables that are available in future sessions
  • Run programs with your profiles
  • Importing profiles from a file
  • Downloading profiles and then importing them
  • Exporting profiles to a file

Profiles

In envio, a profile is a collection of environment variables that are associated with a specific project, application, or use case. Users can create multiple profiles, each with their own set of environment variables, and easily switch between them as needed.

For example, a developer might create a profile for a web development project that includes environment variables for the database connection, API keys, and other project-specific settings. They could then switch to a different profile for a mobile app project that requires a different set of environment variables.

The benefit of using profiles is that users can easily manage and switch between different sets of environment variables without having to manually set and unset them every time they switch tasks. Additionally, in envio, profiles are encrypted, so users can rest assured that their sensitive environment variables are secure and require a key to access them.

Installation

You can install envio through a few methods

Releases

You can head over to the releases page and download the official envio binaries from there for your target operating system. Windows MSI installers are also available

Cargo Repository

You can install envio through the Cargo repository using the following command:

$ cargo install envio

Source

Go here to see how

More methods of installation will be added in the future!

Usage

Go here to see how to use the tool

Development

In addition to the command-line tool, envio can also be used as a library in Rust programs to manage environment variables. To use envio in your program, add it as a dependency in your Cargo.toml file:

Please note that the envio library is not stable right now and can be subjected to many changes!

[dependencies]
envio = "0.5.0"

Then, in your Rust code, you can use the envio crate to read and write environment variables Here's a simple example:

"); return; } let profile_name = args[1].to_string(); let key = args[2].to_string(); // All profiles have a key that is used to encrypt the environment variables, this ensures that the environment variables are secure // We use the age encryption type here // If the profile was encrypted with a different encryption type you can use the encryption type that was used to encrypt the profile // For example if the profile was encrypted with the GPG encryption type you would use the following line instead: // let encryption_type = envio::crypto::create_encryption_type(key, "gpg"); -- Over here key would be the fingerprint of the GPG key used to encrypt the profile let encryption_type = envio::crypto::create_encryption_type(key, "age"); // print the environment variables in that profile for (env_var, value) in &envio::get_profile(profile_name, encryption_type) .unwrap() .envs { println!("{}: {}", env_var, value); } }">
// In this example we get the profile passed as an argument to the program and then print the environment variables in that profile

fn main() {
    let args: Vec<String> = std::env::args().collect();

    if args.len() != 3 {
        println!("Usage:  ");
        return;
    }

    let profile_name = args[1].to_string();
    let key = args[2].to_string(); // All profiles have a key that is used to encrypt the environment variables, this ensures that the environment variables are secure

    // We use the age encryption type here
    // If the profile was encrypted with a different encryption type you can use the encryption type that was used to encrypt the profile
    // For example if the profile was encrypted with the GPG encryption type you would use the following line instead:
    // let encryption_type = envio::crypto::create_encryption_type(key, "gpg"); -- Over here key would be the fingerprint of the GPG key used to encrypt the profile
    let encryption_type = envio::crypto::create_encryption_type(key, "age");

    // print the environment variables in that profile
    for (env_var, value) in &envio::get_profile(profile_name, encryption_type)
        .unwrap()
        .envs
    {
        println!("{}: {}", env_var, value);
    }
}

For more examples check out the examples directory

Currently, envio is only available as a Rust library

Contributors

Vojtch
Vojtch

📖
Erjan Kalybek
Erjan Kalybek

📖

Contributing

Contributions to envio are always welcome! Please see the Contributing Guidelines for more information.

License

This project is licensed under the MIT License and the Apache License

Comments
  • Support Fish

    Support Fish

    Hi, do you have any plans to support the fish shell? When I run envio I get prompted that this shell is not supported and I should source the unencrypted file instead (which makes this program useless) Would be really great!

    opened by matthias-Q 13
  • Crash upon first attempt to use

    Crash upon first attempt to use

    Describe the bug I tried to follow the steps from the usage.md but it crashed out on step 1

    To Reproduce Steps to reproduce the behavior:

    
    zsh ❯ cargo install envio
        Updating crates.io index
      Downloaded envio v0.4.1
      Downloaded 1 crate (121.1 KB) in 0.51s
      Installing envio v0.4.1
        Updating crates.io index
      ...
      ...
    
    zsh ❯ envio create me
        Creating config directory
        Creating shellscript
        thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', /home/mosthated/.cargo/registry/src/index.crates.io-6f17d22bba15001f/envio-0.4.1/src/bin/envio/main.rs:66:18
        note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    

    Device (please complete the following information):

    • OS: Pop_os 22.04
    • Shell: zsh
    • CLI Version: envio v0.4.1

    Note I ran the command again and it asked me for an encryption key. So hopefully things are fine, but I did want to make sure to report this issue.

    opened by MostHated 4
  • Command `import` doesn't work on Windows

    Command `import` doesn't work on Windows

    The lib looks interesting for me. I tried to use it in my project, but got an error while importing my .env file to envoi profile. I cleaned up the file and kept only one variable just for an example.

    I have a test .env file:

    FEATURE_CUSTOM_AUTH_POPUP=true
    

    I run envoi import .env my-profile

    I get an error:

    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 3, kind: NotFound, message: "The system cannot find the path specified." }', src/lib.rs:438:10
    stack backtrace:
       0:           0x8af440 - std::backtrace_rs::backtrace::dbghelp::trace::h0dc1cf386a5df1cd
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\..\..\backtrace\src\backtrace/dbghelp.rs:98:5
       1:           0x8af440 - std::backtrace_rs::backtrace::trace_unsynchronized::h36721138064e13f0
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\..\..\backtrace\src\backtrace/mod.rs:66:5
       2:           0x8af440 - std::sys_common::backtrace::_print_fmt::ha9b27eb44c93d960
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:65:5
       3:           0x8af440 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h79886c501d528d51
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:44:22
       4:           0x90f04b - core::fmt::write::h29f886d793a3c470
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src\fmt/mod.rs:1213:17
       5:           0x8a1ff5 - std::io::Write::write_fmt::h4af9d02caf84da95
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\io/mod.rs:1682:15
       6:           0x8af194 - std::sys_common::backtrace::_print::h7bc8b91c42c6b465
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:47:5
       7:           0x8af194 - std::sys_common::backtrace::print::h5c02d637f1374aec
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:34:9
       8:           0x8b24df - std::panicking::default_hook::{{closure}}::hb4ad508e3ca0b358
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:267:22
       9:           0x8b21b3 - std::panicking::default_hook::hdb151db9713cfc98
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:286:9
      10:           0x8b2e29 - std::panicking::rust_panic_with_hook::h4550c1124a1c8a4f
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:688:13
      11:           0x8b2b96 - std::panicking::begin_panic_handler::{{closure}}::haadeea136a4af3b4
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:579:13
      12:           0x8aff6f - std::sys_common::backtrace::__rust_end_short_backtrace::hc224062df081731d
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:137:18
      13:           0x8b28a0 - rust_begin_unwind
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:575:5
      14:           0x90b835 - core::panicking::panic_fmt::h1ae32e95b4b1a788
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src/panicking.rs:64:14
      15:           0x90be16 - core::result::unwrap_failed::h8bd87678b87bb845
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src/result.rs:1790:5
      16:           0x438a6c - envio::import_profile::he337f85fe6110813
      17:           0x41bc1e - envio::commands::<impl envio::cli::Command>::run::hd47f498cbd5a07b8
      18:           0x42064f - envio::main::h203bc3a3b9c07d92
      19:           0x427806 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf7689d81c8e323c8
      20:           0x409dec - std::rt::lang_start::{{closure}}::h37a55eb61948c28a
      21:           0x893bf5 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h10e6b3810a97f594
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src\ops/function.rs:287:13
      22:           0x893bf5 - std::panicking::try::do_call::hc0c08aef0d307148
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:483:40
      23:           0x893bf5 - std::panicking::try::hf8b174b6af1ac35c
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:447:19
      24:           0x893bf5 - std::panic::catch_unwind::h85d6d1a0b4671865
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panic.rs:140:14
      25:           0x893bf5 - std::rt::lang_start_internal::{{closure}}::h7ca5722ac975c7be
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/rt.rs:148:48
      26:           0x893bf5 - std::panicking::try::do_call::h741061858f588bf2
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:483:40
      27:           0x893bf5 - std::panicking::try::h6abad9e74e6bdc5f
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:447:19
      28:           0x893bf5 - std::panic::catch_unwind::hf171c5a39891248d
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panic.rs:140:14
      29:           0x893bf5 - std::rt::lang_start_internal::h1fbc7ed3cff5c2a6
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/rt.rs:148:20
      30:           0x420b9d - main
      31:           0x4013c7 - __tmainCRTStartup
      32:           0x4014fb - mainCRTStartup
      33:     0x7ffc994855a0 - <unknown>
      34:     0x7ffc9abc485b - <unknown>
     SurfyII C:\project\speed-dating  fix-lobby-timer  npx cross-env RUST_BACKTRACE=full envio import .\.env speed-dating
    
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 3, kind: NotFound, message: "The system cannot find the path specified." }', src/lib.rs:438:10
    stack backtrace:
       0:           0x8af440 - std::backtrace_rs::backtrace::dbghelp::trace::h0dc1cf386a5df1cd
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\..\..\backtrace\src\backtrace/dbghelp.rs:98:5
       1:           0x8af440 - std::backtrace_rs::backtrace::trace_unsynchronized::h36721138064e13f0
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\..\..\backtrace\src\backtrace/mod.rs:66:5
       2:           0x8af440 - std::sys_common::backtrace::_print_fmt::ha9b27eb44c93d960
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:65:5
       3:           0x8af440 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h79886c501d528d51
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:44:22
       4:           0x90f04b - core::fmt::write::h29f886d793a3c470
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src\fmt/mod.rs:1213:17
       5:           0x8a1ff5 - std::io::Write::write_fmt::h4af9d02caf84da95
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\io/mod.rs:1682:15
       6:           0x8af194 - std::sys_common::backtrace::_print::h7bc8b91c42c6b465
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:47:5
       7:           0x8af194 - std::sys_common::backtrace::print::h5c02d637f1374aec
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:34:9
       8:           0x8b24df - std::panicking::default_hook::{{closure}}::hb4ad508e3ca0b358
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:267:22
       9:           0x8b21b3 - std::panicking::default_hook::hdb151db9713cfc98
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:286:9
      10:           0x8b2e29 - std::panicking::rust_panic_with_hook::h4550c1124a1c8a4f
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:688:13
      11:           0x8b2b96 - std::panicking::begin_panic_handler::{{closure}}::haadeea136a4af3b4
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:579:13
      12:           0x8aff6f - std::sys_common::backtrace::__rust_end_short_backtrace::hc224062df081731d
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src\sys_common/backtrace.rs:137:18
      13:           0x8b28a0 - rust_begin_unwind
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:575:5
      14:           0x90b835 - core::panicking::panic_fmt::h1ae32e95b4b1a788
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src/panicking.rs:64:14
      15:           0x90be16 - core::result::unwrap_failed::h8bd87678b87bb845
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src/result.rs:1790:5
      16:           0x438a6c - envio::import_profile::he337f85fe6110813
      17:           0x41bc1e - envio::commands::<impl envio::cli::Command>::run::hd47f498cbd5a07b8
      18:           0x42064f - envio::main::h203bc3a3b9c07d92
      19:           0x427806 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf7689d81c8e323c8
      20:           0x409dec - std::rt::lang_start::{{closure}}::h37a55eb61948c28a
      21:           0x893bf5 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h10e6b3810a97f594
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\core\src\ops/function.rs:287:13
      22:           0x893bf5 - std::panicking::try::do_call::hc0c08aef0d307148
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:483:40
      23:           0x893bf5 - std::panicking::try::hf8b174b6af1ac35c
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:447:19
      24:           0x893bf5 - std::panic::catch_unwind::h85d6d1a0b4671865
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panic.rs:140:14
      25:           0x893bf5 - std::rt::lang_start_internal::{{closure}}::h7ca5722ac975c7be
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/rt.rs:148:48
      26:           0x893bf5 - std::panicking::try::do_call::h741061858f588bf2
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:483:40
      27:           0x893bf5 - std::panicking::try::h6abad9e74e6bdc5f
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panicking.rs:447:19
      28:           0x893bf5 - std::panic::catch_unwind::hf171c5a39891248d
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/panic.rs:140:14
      29:           0x893bf5 - std::rt::lang_start_internal::h1fbc7ed3cff5c2a6
                                   at /rustc/8460ca823e8367a30dda430efda790588b8c84d3/library\std\src/rt.rs:148:20
      30:           0x420b9d - main
      31:           0x4013c7 - __tmainCRTStartup
      32:           0x4014fb - mainCRTStartup
      33:     0x7ffc994855a0 - <unknown>
      34:     0x7ffc9abc485b - <unknown>
    
    opened by barinbritva 3
  • When using subcommand it's unclear how to list out profiles

    When using subcommand it's unclear how to list out profiles

    When I try to using the command envio list I get an Error: Invalid number of arguments exception.

    The command works properly when listing the variables in an existing environment but I cannot figure out how to get is to list the available profiles.

    opened by ccastleberry 3
  • use age for crypto

    use age for crypto

    https://github.com/magiclen/rust-magiccrypt gives me really weird vibes, should use age instead this way you can use public keys from other members of your org easily

    https://crates.io/crates/age

    opened by matthiasdebernardini 2
  • Latest version not installed after a fresh installation

    Latest version not installed after a fresh installation

    I just installed using cargo install envio but it seems that I have 0.4.0 while the latest version is 0.4.1. I am not familiar with Rust tooling, so is it a cargo error that the latest version wasn't installed, or something that needs to be done on envio's side for cargo to install the latest version?

    opened by arunsathiya 1
  • Bump inquire from 0.6.0 to 0.6.1

    Bump inquire from 0.6.0 to 0.6.1

    Bumps inquire from 0.6.0 to 0.6.1.

    Release notes

    Sourced from inquire's releases.

    v0.6.1

    • Fix incorrect highlighting of lists when filtered. #110. Thanks to @​prime31 for reporting on #106.
    Changelog

    Sourced from inquire's changelog.

    [0.6.1] - 2023-04-08

    • Fix incorrect highlighting of lists when filtered. #110. Thanks to @​prime31 for reporting on #106.
    Commits
    • 2e5dc2c chore: Release inquire version 0.6.1
    • 04c7924 Change order of versions for release workflow
    • 7cdeeb7 Remove custom commit message for releases
    • 38334b0 Remove sign commit step from release PR workflow
    • c1fa060 Add one more needed replace for release.toml
    • a1228a6 Add release workflow (#118)
    • 7a0143a Add launch action to use LLDB to attach to existing process (#111)
    • 1c86107 Fix Find+Replace of CHANGELOG on Unreleased links (#116)
    • 9dc831b Require or not changelog based on label (#117)
    • fdcf97b Fix CI once again
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Add GPG support

    Add GPG support

    Currently, envio allows users to encrypt and decrypt profiles using custom encryption keys. However, some users may prefer to use GPG encryption instead.

    I propose that we add support for GPG encryption and decryption alongside custom encryption keys. This will allow users to choose the encryption method that best suits their needs.

    This feature will improve the flexibility and usability of envio and make it more accessible to users who prefer GPG encryption.

    enhancement 
    opened by humblepenguinn 0
  • Bump tokio from 1.26.0 to 1.27.0

    Bump tokio from 1.26.0 to 1.27.0

    Bumps tokio from 1.26.0 to 1.27.0.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.27.0

    1.27.0 (March 27th, 2023)

    This release bumps the MSRV of Tokio to 1.56. (#5559)

    Added

    • io: add async_io helper method to sockets (#5512)
    • io: add implementations of AsFd/AsHandle/AsSocket (#5514, #5540)
    • net: add UdpSocket::peek_sender() (#5520)
    • sync: add RwLockWriteGuard::{downgrade_map, try_downgrade_map} (#5527)
    • task: add JoinHandle::abort_handle (#5543)

    Changed

    • io: use memchr from libc (#5558)
    • macros: accept path as crate rename in #[tokio::main] (#5557)
    • macros: update to syn 2.0.0 (#5572)
    • time: don't register for a wakeup when Interval returns Ready (#5553)

    Fixed

    • fs: fuse std iterator in ReadDir (#5555)
    • tracing: fix spawn_blocking location fields (#5573)
    • time: clean up redundant check in Wheel::poll() (#5574)

    Documented

    • macros: define cancellation safety (#5525)
    • io: add details to docs of tokio::io::copy[_buf] (#5575)
    • io: refer to ReaderStream and StreamReader in module docs (#5576)

    #5512: tokio-rs/tokio#5512 #5514: tokio-rs/tokio#5514 #5520: tokio-rs/tokio#5520 #5525: tokio-rs/tokio#5525 #5527: tokio-rs/tokio#5527 #5540: tokio-rs/tokio#5540 #5543: tokio-rs/tokio#5543 #5553: tokio-rs/tokio#5553 #5555: tokio-rs/tokio#5555 #5557: tokio-rs/tokio#5557 #5558: tokio-rs/tokio#5558 #5559: tokio-rs/tokio#5559 #5572: tokio-rs/tokio#5572 #5573: tokio-rs/tokio#5573 #5574: tokio-rs/tokio#5574 #5575: tokio-rs/tokio#5575 #5576: tokio-rs/tokio#5576

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump reqwest from 0.11.14 to 0.11.16

    Bump reqwest from 0.11.14 to 0.11.16

    Bumps reqwest from 0.11.14 to 0.11.16.

    Release notes

    Sourced from reqwest's releases.

    v0.11.16

    What's Changed

    v0.11.15

    What's Changed

    • Add RequestBuilder methods to split and reconstruct from its parts.
    • Add experimental HTTP/3 support. 🧪3️🎉
    • Fix connection_verbose to log write_vectored calls.
    • (wasm) Make requests actually cancel if the future is dropped.

    New Contributors

    Full Changelog: https://github.com/seanmonstar/reqwest/compare/v0.11.14...v0.11.15

    Changelog

    Sourced from reqwest's changelog.

    v0.11.16

    • Chore: set MSRV in Cargo.toml.
    • Docs: fix build on docs.rs

    v0.11.15

    • Add RequestBuilder methods to split and reconstruct from its parts.
    • Add experimental HTTP/3 support.
    • Fix connection_verbose to log write_vectored calls.
    • (wasm) Make requests actually cancel if the future is dropped.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump clap_complete from 4.1.5 to 4.2.0

    Bump clap_complete from 4.1.5 to 4.2.0

    Bumps clap_complete from 4.1.5 to 4.2.0.

    Release notes

    Sourced from clap_complete's releases.

    v4.2.0

    [4.2.0] - 2023-03-28

    Compatibility

    • Removed the languishing unstable-replace feature (open to discussion at #2836)
    • Removed the stablized unstable-grouped feature

    Features

    • Allow any StyledStr to accept text styled with ANSI escape codes
    • Respect CLICOLOR, CLICOLOR_FORCE

    Fixes

    • Lighten the tone for "unexpected argument" errors (open to discussion at #4638)

    v4.1.14

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    v4.1.13

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    v4.1.12

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency

    v4.1.11

    [4.1.11] - 2023-03-17

    ... (truncated)

    Changelog

    Sourced from clap_complete's changelog.

    [4.2.0] - 2023-03-28

    Compatibility

    • Removed the languishing unstable-replace feature (open to discussion at #2836)
    • Removed the stablized unstable-grouped feature

    Features

    • Allow any StyledStr to accept text styled with ANSI escape codes
    • Respect CLICOLOR, CLICOLOR_FORCE

    Fixes

    • Lighten the tone for "unexpected argument" errors (open to discussion at #4638)

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency

    [4.1.11] - 2023-03-17

    Internal

    • Update bitflags

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Not clear how to use

    Not clear how to use "list" subcommand, or what it effectively does

    It'd be helpful to describe how the "list" subcommand is used/what it actually does.

    At this time, envio list --help says List all the environment variables in a profile or all the profiles which gives me the impression that it lists out all the environment variables associated with all profiles, but it actually does the following:

    • envio list alone results in Invalid number of arguments error, because the command expects a profile name, or the string profiles to list out all the profiles. This improvement is being explored in https://github.com/humblepenguinn/envio/issues/2
    • envio list profileName or envio list profiles results in listing of environment variables associated with the particular profile (in this example, named profileName) or all profile names.

    I think, overall, it'd be helpful to branch out list into two different commands; list-profiles to list all the profiles, and list-envvars profileName to list envvars associated with a profile name.

    If it's decided to retain the current approach, it'd perhaps be helpful to explore improving the Arguments part of the --help output:

    image
    opened by arunsathiya 1
Releases(v0.5.0)
Owner
Humble Penguin
bored out of my mind
Humble Penguin
A Rust-based Garry's Mod module for fetching environment variables.

gm_environ Using Environment Variables in Garry's Mod. Installation Download a copy of the module from the releases (or compile from source) Move the

Joshua Piper 2 Jan 4, 2022
Set Shell Environment Variables across multiple shells with a single configuration file.

Xshe – Cross-Shell Environment Vars xshe allows for setting Shell Environment Variables across multiple shells with a single TOML configuration file.

Ethan Kinnear 9 Dec 16, 2022
Scriptable tool to read and write UEFI variables from EFI shell. View, save, edit and restore hidden UEFI (BIOS) Setup settings faster than with the OEM menu forms.

UEFI Variable Tool (UVT) UEFI Variable Tool (UVT) is a command-line application that runs from the UEFI shell. It can be launched in seconds from any

null 4 Dec 11, 2023
Cuprate, an upcoming experimental, modern & secure monero node. Written in Rust

Cuprate an upcoming experimental, modern & secure monero node. Written in Rust (there is nothing working at the moment, stay tuned if you want to see

Someone Else 16 Feb 20, 2023
Command line tool to convert env variables beginning with user to a htpasswd file

envhtp This command line tool converts environment variables whose keys start with "user_" into htpasswd compatible username/password pairs. The goal

Florian Neumann 1 Apr 5, 2022
A fast and robust MLOps tool for managing data and pipelines

xvc A Fast and Robust MLOps Swiss-Army Knife in Rust ⌛ When to use xvc? Machine Learning Engineers: When you manage large quantities of unstructured d

Emre Sahin 6 Dec 15, 2022
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
A Yocto setup and management tool that helps you keep your environment up-to-date and in-sync with your team

yb (Yocto Buddy) yb is designed to make it easy to setup and (perhaps more importantly) keep Yocto environments up-to-date and in-sync with your team.

null 13 Oct 31, 2022
A simple crate, that protects some variables from being modified by memory tampering tools.

Crate: protected_integer A simple crate, that protects some variables from being modified by memory tampering tools. Usage Add this crate to dependenc

lihe 5 Nov 30, 2022
A minimalist tool for managing block-lists from the terminal.

Block List A minimalist hosts-based tool for managing block lists and ad-blocking. This project uses the excellent and regularly updated Unified Hosts

Oliver Brotchie 7 Aug 14, 2022
Tool for managing dotfiles directories; Heavily based on rcm.

Paro paro : to prepare, get ready / set, put / furnish, supply. Tool for managing dotfiles directories; Heavily based on rcm. TODO Rust Boilerplate CI

Rafael Delboni 7 Nov 20, 2022
booky is a minimalstic Tui tool for managing your growing book collection.

booky booky is a minimalistic TUI tool for managing your growing book collection. It is writtin in Rust and uses diesel as it's orm together with sqli

null 3 Jul 21, 2023
Navigate in the world of ESP32 with easy. Tool for maintaining development environment.

ESP Helm Get all important information for Embedded Development with ESP32 and mainitain the development environment. Check out releases for binary ve

Juraj Michálek 4 Aug 7, 2023
A secure CLI password generator written in rust.

Rust CLI Password Generator Overview This Project is a secure CLI password generator written in rust. This generates a secure password with three diff

pouyan shalbafan 12 Nov 9, 2023
An interface for managing collections of labeled items and generating random subsets with specified restrictions

An interface for managing collections of labeled items and generating random subsets with specified restrictions

Kaio Vieira 3 Oct 30, 2022
A utility for managing cargo dependencies from the command line.

cargo edit This tool extends Cargo to allow you to add, remove, and upgrade dependencies by modifying your Cargo.toml file from the command line. Curr

Pascal Hertleif 2.7k Jan 6, 2023
An utility application to help managing your C++ OI workspaces.

oi_helper oi_helper is an utility application to help managing your C++ OI workspaces. Why oi_helper We all know that we often need a project manager

27Onion Nebell 11 Aug 24, 2022
Work-in-progress software for managing the Azeron keypad on any operating system.

azeron-cli A small, unfinished CLI application intended to manage the Azeron Cyborg. The code is still in a very messy state and doesn't look very rus

cozyGalvinism 5 Nov 24, 2022
🛜 TUI for managing bluetooth devices

TUI for managing bluetooth devices ?? Prerequisites A Linux based OS with bluez installed. ?? Installation ?? Binary release You can download the pre-

BADR 99 Mar 24, 2024