Simple but convenient CLI-based Matrix client app for sending and receiving (in Rust)

Overview

crates.io - Version crates.io - Downloads

MC logo

matrix-commander-rs

simple but convenient CLI-based Matrix client app for sending and receiving

Help create this Rust program!

This project is currently only a vision. The Python package matrix-commander exists. See matrix-commander. The vision is to have a compatible program in Rust. I cannot do it myself, but I can coordinate and merge your pull requests. This project depends on you. The project will only advance if you provide the code. Have a look at the repo matrix-commander-rs. Please help! πŸ™ Please contribute code to make this vision a reality, and to one day have a functional matrix-commander crate. Safe!

❀️ πŸ‘ πŸ™

What works so far

  • Login with password
  • Login with access token (restore login)
  • Encryption
  • Emoji verification
  • Sending a text message
  • Sending a file
  • Listing devices
  • Logout and removal of device
  • Things like argument parsing, logging, etc.

What you can do

  • Give a ⭐ on Github. The more stars on Github, the more people will see the project. Do it now, thanks. πŸ‘
  • Talk about it to your friends, post it in chatrooms, Hacker News, etc. This will give exposure and help find people willing to provide code, contributions, and PRs.
  • Write code yourself. πŸš€

Ideas

  • Make it compatible with the Python version of matrix-commander, i.e. same config file, same CLI, etc. The user should be able to run the Python matrix-commander in the morning, and the Rust matrix-commander in the afternoon.
  • Use similar modules as used in Python, e.g. argparse.
  • Use matrix-rust-sdk.
  • Use ruma if and where needed.
  • Make it so as much as possible can be done in a single call. Currently the send-and-forget is already working: matrix-commander-rs --login password --user-login @john:some.homeserver.org --password secret --device matrix-commander-rs --room-default \!someRoomId:some.homeserver.org --message Hello --logout me.

Immediate action items

  • revise existing code, where is it inefficient?
  • improve the quality of the existing code. Make it more Rust-esque while keeping it simple.
  • re-create the argparse interface in Rust, making it as similar as possible to the Python argparse CLI code
  • create Github workflow so that the crate on crates.io gets generated automatically on pull request or push.
  • implement login via SSO
  • implement various listen (receive) methods
  • make output (e.g. list of devices in JSON in addition to text)
  • ...

Contributors πŸ‘

  • Add your name here.
  • Who will be the first?

Usage

Usage:
  matrix-commander-rs [OPTIONS]

Welcome to "matrix-commander", a Matrix CLI client. ─── On first run use
--login to log in, to authenticate. On second run we suggest to use --verify to
get verified. Emoji verification is built-in which can be used to verify
devices. On further runs this program implements a simple Matrix CLI client
that can send messages, verify devices, operate on rooms, etc. ───
─── This project is currently only a vision. The Python package
"matrix-commander" exists. The vision is to have a compatible program in Rust.
I cannot do it myself, but I can coordinate and merge your pull requests. Have
a look at the repo "https://github.com/8go/matrix-commander-rs/". Please help!
Please contribute code to make this vision a reality, and to one day have a
functional "matrix-commander" crate. Safe!

Optional arguments:
  -h,--help             Show this help message and exit
  --contribute          Please contribute.
  -v,--version          Print version number.
  -d,--debug            Overwrite the default log level. If not used, then the
                        default log level set with environment variable
                        'RUST_LOG' will be used. If used, log level will be set
                        to 'DEBUG' and debugging information will be printed.
                        '-d' is a shortcut for '--log-level DEBUG'. See also
                        '--log-level'. '-d' takes precedence over
                        '--log-level'. Additionally, have a look also at the
                        option '--verbose'.
  --log-level LOG_LEVEL Set the log level by overwriting the default log level.
                        If not used, then the default log level set with
                        environment variable 'RUST_LOG' will be used. Possible
                        values are 'DEBUG', 'INFO', 'WARN', and 'ERROR'. See
                        also '--debug' and '--verbose'.
  --verbose             Set the verbosity level. If not used, then verbosity
                        will be set to low. If used once, verbosity will be
                        high. If used more than once, verbosity will be very
                        high. Verbosity only affects the debug information. So,
                        if '--debug' is not used then '--verbose' will be
                        ignored.
  --login LOGIN         Login to and authenticate with the Matrix homeserver.
                        This requires exactly one argument, the login method.
                        Currently two choices are offered: 'password' and
                        'sso'. Provide one of these methods. If you have chosen
                        'password', you will authenticate through your account
                        password. You can optionally provide these additional
                        arguments: --homeserver to specify the Matrix
                        homeserver, --user-login to specify the log in user id,
                        --password to specify the password, --device to specify
                        a device name, --room-default to specify a default room
                        for sending/listening. If you have chosen 'sso', you
                        will authenticate through Single Sign-On. A web-browser
                        will be started and you authenticate on the webpage.
                        You can optionally provide these additional arguments:
                        --homeserver to specify the Matrix homeserver,
                        --user-login to specify the log in user id, --device to
                        specify a device name, --room-default to specify a
                        default room for sending/listening. See all the extra
                        arguments for further explanations. ----- SSO (Single
                        Sign-On) starts a web browser and connects the user to
                        a web page on the server for login. SSO will only work
                        if the server supports it and if there is access to a
                        browser. So, don't use SSO on headless homeservers
                        where there is no browser installed or accessible.
  --verify              Perform verification. By default, no verification is
                        performed. Verification is done via Emojis. If
                        verification is desired, run this program in the
                        foreground (not as a service) and without a pipe. While
                        verification is optional it is highly recommended, and
                        it is recommended to be done right after (or together
                        with) the --login action. Verification is always
                        interactive, i.e. it required keyboard input.
                        Verification questions will be printed on stdout and
                        the user has to respond via the keyboard to accept or
                        reject verification. Once verification is complete, the
                        program may be run as a service. Verification is best
                        done as follows: Perform a cross-device verification,
                        that means, perform a verification between two devices
                        of the *same* user. For that, open (e.g.) Element in a
                        browser, make sure Element is using the same user
                        account as the matrix-commander user (specified with
                        --user-login at --login). Now in the Element webpage go
                        to the room that is the matrix-commander default room
                        (specified with --room-default at --login). OK, in the
                        web-browser you are now the same user and in the same
                        room as matrix-commander. Now click the round 'i' 'Room
                        Info' icon, then click 'People', click the appropriate
                        user (the matrix-commander user), click red 'Not
                        Trusted' text which indicated an untrusted device, then
                        click the square 'Interactively verify by Emoji' button
                        (one of 3 button choices). At this point both web-page
                        and matrix-commander in terminal show a set of emoji
                        icons and names. Compare them visually. Confirm on both
                        sides (Yes, They Match, Got it), finally click OK. You
                        should see a green shield and also see that the
                        matrix-commander device is now green and verified in
                        the webpage. In the terminal you should see a text
                        message indicating success. You should now be verified
                        across all devices and across all users.
  -m,--message MESSAGE  Send this message. Message data must not be binary
                        data, it must be text. Input piped via stdin can
                        additionally be specified with the special character
                        '-'. If you want to feed a text message into the
                        program via a pipe, via stdin, then specify the special
                        character '-'. If '-' is specified as message, then the
                        program will read the message from stdin. If your
                        message is literally '-' then use '\-' as message in
                        the argument. In some shells this needs to be escaped
                        requiring a '\-'. If you want to read the message from
                        the keyboard use '-' and do not pipe anything into
                        stdin, then a message will be requested and read from
                        the keyboard. Keyboard input is limited to one line.
  --logout LOGOUT       Logout this or all devices from the Matrix homeserver.
                        This requires exactly one argument. Two choices are
                        offered: 'me' and 'all'. Provide one of these choices.
                        If you choose 'me', only the one device
                        matrix-commander is currently using will be logged out.
                        If you choose 'all', all devices of the user used by
                        matrix-commander will be logged out. While --logout
                        neither removes the credentials nor the store, the
                        logout action removes the device and makes the
                        access-token stored in the credentials invalid. Hence,
                        after a --logout, one must manually remove creditials
                        and store, and then perform a new --login to use
                        matrix-commander again. You can perfectly use
                        matrix-commander without ever logging out. --logout is
                        a cleanup if you have decided not to use this (or all)
                        device(s) ever again.
  --homeserver HOMESERVER
                        Specify a homeserver for use by certain actions. It is
                        an optional argument. By default --homeserver is
                        ignored and not used. It is used by '--login' action.
                        If not provided for --login the user will be queried
                        via keyboard.
  --user-login USER_LOGIN
                        Optional argument to specify the user for --login. This
                        gives the otion to specify the user id for login. For
                        '--login sso' the --user-login is not needed as user id
                        can be obtained from server via SSO. For '--login
                        password', if not provided it will be queried via
                        keyboard. A full user id like '@john:example.com', a
                        partial user name like '@john', and a short user name
                        like 'john' can be given. --user-login is only used by
                        --login and ignored by all other actions.
  --password PASSWORD   Specify a password for use by certain actions. It is an
                        optional argument. By default --password is ignored and
                        not used. It is used by '--login password' and
                        '--delete-device' actions. If not provided for --login
                        the user will be queried via keyboard.
  --device DEVICE       Specify a device name, for use by certain actions. It
                        is an optional argument. By default --device is ignored
                        and not used. It is used by '--login' action. If not
                        provided for --login the user will be queried via
                        keyboard. If you want the default value specify ''.
                        Multiple devices (with different device id) may have
                        the same device name. In short, the same device name
                        can be assigned to multiple different devices if
                        desired.
  --room-default ROOM_DEFAULT
                        Optionally specify a room as the default room for
                        future actions. If not specified for --login, it will
                        be queried via the keyboard. --login stores the
                        specified room as default room in your credentials
                        file. This option is only used in combination with
                        --login. A default room is needed. Specify a valid room
                        either with --room-default or provide it via keyboard.
  --devices             Print the list of devices. All device of this account
                        will be printed, one device per line.
  --timeout TIMEOUT     Set the timeout of the calls to the Matrix server. By
                        default they are set to 60 seconds. Specify the timeout
                        in seconds. Use 0 for infinite timeout.
  --markdown            There are 3 message formats for '--message'. Plain
                        text, MarkDown, and Code. By default, if no command
                        line options are specified, 'plain text' will be used.
                        Use '--markdown' or '--code' to set the format to
                        MarkDown or Code respectively. '--markdown' allows
                        sending of text formatted in MarkDown language.
                        '--code' allows sending of text as a Code block.
  --code                There are 3 message formats for '--message'. Plain
                        text, MarkDown, and Code. By default, if no command
                        line options are specified, 'plain text' will be used.
                        Use '--markdown' or '--code' to set the format to
                        MarkDown or Code respectively. '--markdown' allows
                        sending of text formatted in MarkDown language.
                        '--code' allows sending of text as a Code block.
  -r,--room ROOM        Optionally specify a room by room id. '--room' is used
                        by by various options like '--message'. If no '--room'
                        is provided the default room from the credentials file
                        will be used. If a room is provided in the '--room'
                        argument, then it will be used instead of the one from
                        the credentials file. The user must have access to the
                        specified room in order to send messages there or
                        listen on the room. Messages cannot be sent to
                        arbitrary rooms. When specifying the room id some
                        shells require the exclamation mark to be escaped with
                        a backslash.
  -f,--file FILE        Send this file (e.g. PDF, DOC, MP4). First files are
                        sent, then text messages are sent.
  --notice              There are 3 message types for '--message'. Text,
                        Notice, and Emote. By default, if no command line
                        options are specified, 'Text' will be used. Use
                        '--notice' or '--emote' to set the type to Notice or
                        Emote respectively. '--notice' allows sending of text
                        as a notice. '--emote' allows sending of text as an
                        emote.
  --emote               There are 3 message types for '--message'. Text,
                        Notice, and Emote. By default, if no command line
                        options are specified, 'Text' will be used. Use
                        '--notice' or '--emote' to set the type to Notice or
                        Emote respectively. '--notice' allows sending of text
                        as a notice. '--emote' allows sending of text as an
                        emote.
  --sync SYNC           This option decides on whether the program synchronizes
                        the state with the server before a 'send' action.
                        Currently two choices are offered: 'Full' and 'Off'.
                        Provide one of these choices. The default is 'Full'. If
                        you want to use the default, then there is no need to
                        use this option. If you have chosen 'Full', the full
                        state, all state events will be synchronized between
                        this program and the server before a 'send'. If you
                        have chosen 'Off', synchronization will be skipped
                        entirely before the 'send' which will improve
                        performance.
Comments
  • Create GitHub release

    Create GitHub release

    Hi! I just saw this project after creating a similar project that was basically gonna be matrix-commander in Rust, but then I saw this and I didn't see much point in it anymore.

    Anyway, I definitely would prefer to just use this, but I'd like to package it up first, and doing so would require a release to download from. Would it be possible to create a release so I could do such?

    enhancement 
    opened by hwittenborn 16
  • Bug: Room alias instead of full room id in credentials file

    Bug: Room alias instead of full room id in credentials file

    RUST_BACKTRACE=FULL matrix-commander-rs -m "test"  
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: MissingLeadingSigil', src/mclient.rs:1959:45
    stack backtrace:
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    

    same command works just fine with the python implementation

    bug solved 
    opened by MatthiasGrandl 7
  • Bump clap from 4.0.29 to 4.0.32

    Bump clap from 4.0.29 to 4.0.32

    Bumps clap from 4.0.29 to 4.0.32.

    Release notes

    Sourced from clap's releases.

    v4.0.32

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    v4.0.31

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)

    v4.0.30

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand
    Changelog

    Sourced from clap's changelog.

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand
    Commits
    • ec4ccf0 chore: Release
    • 13fdb83 docs: Update changelog
    • b877345 Merge pull request #4573 from epage/conflict
    • 85ecb3e fix(parser): Override required when parent group has conflict
    • d145b8b test(parser): Demonstrate required-overload bug
    • 0eccd55 chore: Release
    • 1e37c25 docs: Update changelog
    • dcd5fec Merge pull request #4572 from epage/group
    • dde22e7 style: Update for latest clippy
    • dd8435d perf(parser): Reduce duplicate lookups
    • 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] 1
  • Bump thiserror from 1.0.37 to 1.0.38

    Bump thiserror from 1.0.37 to 1.0.38

    Bumps thiserror from 1.0.37 to 1.0.38.

    Release notes

    Sourced from thiserror's releases.

    1.0.38

    • Documentation improvements
    Commits
    • 74bfe75 Release 1.0.38
    • cfc7d8c Update build status badge
    • db78fa2 Update ui test suite to nightly-2022-12-15
    • c25a710 Time out workflows after 45 minutes
    • 464e2e7 Merge pull request #200 from dtolnay/displayattr
    • 4b06a3e Add test of Display impl nested inside display attribute
    • 29ee95e Ui test changes for trybuild 1.0.66
    • See full diff 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] 1
  • Bump serde_json from 1.0.89 to 1.0.91

    Bump serde_json from 1.0.89 to 1.0.91

    Bumps serde_json from 1.0.89 to 1.0.91.

    Release notes

    Sourced from serde_json's releases.

    v1.0.90

    • Documentation improvements
    Commits
    • 26f147f Release 1.0.91
    • d9cdb98 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 331511d Release 1.0.90
    • 8753829 Replace ancient CI service provider in readme
    • 0a43394 Update build status badge
    • 8794844 Prevent build.rs rerunning unnecessarily on all source changes
    • 0b54871 Time out workflows after 45 minutes
    • ecad462 Fix renamed let_underscore_drop lint
    • 9295c96 Resolve needless_borrowed_reference clippy lints
    • See full diff 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] 1
  • Bump serde from 1.0.150 to 1.0.151

    Bump serde from 1.0.150 to 1.0.151

    Bumps serde from 1.0.150 to 1.0.151.

    Release notes

    Sourced from serde's releases.

    v1.0.151

    • Update serde::{ser,de}::StdError to re-export core::error::Error when serde is built with feature="std" off and feature="unstable" on (#2344)
    Commits
    • 44bf363 Release 1.0.151
    • f261184 Merge pull request #2344 from dtolnay/coreerror
    • df40f80 Make StdError identical to core::error::Error on feature="unstable"
    • e7060ba Merge pull request #2342 from atouchet/badges
    • d98f0ee Update build status badge
    • 4f157a8 Prevent build.rs rerunning unnecessarily on all source changes
    • See full diff 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] 1
  • Bump tokio from 1.22.0 to 1.23.0

    Bump tokio from 1.22.0 to 1.23.0

    Bumps tokio from 1.22.0 to 1.23.0.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.23.0

    Fixed

    • net: fix Windows named pipe connect (#5208)
    • io: support vectored writes for ChildStdin (#5216)
    • io: fix async fn ready() false positive for OS-specific events (#5231)

    Changed

    • runtime: yield_now defers task until after driver poll (#5223)
    • runtime: reduce amount of codegen needed per spawned task (#5213)
    • windows: replace winapi dependency with windows-sys (#5204)

    #5208: tokio-rs/tokio#5208 #5216: tokio-rs/tokio#5216 #5213: tokio-rs/tokio#5213 #5204: tokio-rs/tokio#5204 #5223: tokio-rs/tokio#5223 #5231: tokio-rs/tokio#5231

    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] 1
  • Bump serde from 1.0.147 to 1.0.148

    Bump serde from 1.0.147 to 1.0.148

    Bumps serde from 1.0.147 to 1.0.148.

    Release notes

    Sourced from serde's releases.

    v1.0.148

    • Support remote derive for generic types that have private fields (#2327)
    Commits
    • 7766103 Release 1.0.148
    • 30f7c71 Merge pull request #2331 from dtolnay/remote
    • 50354c2 Improve error message on remote derive duplicate generics
    • c4f67e6 Add ui test of duplicate generics in remote derive
    • 0daafe4 Merge pull request #2330 from dtolnay/remote
    • 3702191 Fix Into conversion involving generic remote derive with getter
    • 7328b34 Add test of generic remote derive with getter
    • fabbd2b Merge pull request #2329 from dtolnay/safety
    • 6814f97 Revert Buf::as_str safety change from PR 2319
    • 4ea403c Merge pull request #2328 from dtolnay/remote
    • 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] 1
  • Bump serde_json from 1.0.88 to 1.0.89

    Bump serde_json from 1.0.88 to 1.0.89

    Bumps serde_json from 1.0.88 to 1.0.89.

    Release notes

    Sourced from serde_json's releases.

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)
    Commits
    • d2f9368 Release 1.0.89
    • 0b89836 Merge pull request #956 from dtolnay/decimal
    • 9d94e92 Require at least one digit after decimal point
    • c27b023 Add regression test for issue 953
    • 586fefb Resolve semicolon_if_nothing_returned pedantic clippy lint
    • See full diff 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] 1
  • Leave `Cargo.lock` file in repository

    Leave `Cargo.lock` file in repository

    I think this should be left in since a binary is being distributed (the .gitignore file also has a comment about it). This would help to audit the dependency versions in packaged releases of this package, which would aid in things like vulnerability status of the package.

    enhancement 
    opened by hwittenborn 1
  • Bump serde from 1.0.148 to 1.0.150

    Bump serde from 1.0.148 to 1.0.150

    Bumps serde from 1.0.148 to 1.0.150.

    Release notes

    Sourced from serde's releases.

    v1.0.150

    • Relax some trait bounds from the Serialize impl of HashMap and BTreeMap (#2334)
    • Enable Serialize and Deserialize impls of std::sync::atomic types on more platforms (#2337, thanks @​badboy)

    v1.0.149

    • Relax some trait bounds from the Serialize impl of BinaryHeap, BTreeSet, and HashSet (#2333, thanks @​jonasbb)
    Commits
    • d493649 Release 1.0.150
    • 0e947e6 Merge pull request #2338 from serde-rs/atomic
    • 9249dab Deduplicate atomic_impl macro calls
    • 7440e56 Deduplicate atomic_impl macro implementations
    • 0d79306 Update atomic_impl macros to have same input syntax in all cfgs
    • 37faaf2 Mention target_has_atomic stabilization
    • 650358f Replace obsolete comment about target_has_atomic support
    • 6159ead Invert use_target_has_atomic cfg
    • 692ac99 Format PR 2337 with rustfmt
    • 86161ce Adjust spacing in some macro matchers
    • 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
Releases(v0.1.24)
Owner
null
Command-line HTTP client for sending a POST request to specified URI on each stdin line.

line2httppost Simple tool to read lines from stdin and post each line as separate POST request to a specified URL (TCP connection is reused though). G

Vitaly Shukela 3 Jan 3, 2023
CLI program for sending one-off requests to the VTube Studio API

vtubestudio-cli (vts) CLI program for sending one-off requests to the VTube Studio API. It connects to the websocket, authenticates, performs one or t

null 2 Nov 24, 2021
dhcpm is a CLI tool for constructing & sending DHCP messages

dhcpm Sponsor Thank you to Bluecat for sponsoring this work! dhcpm leverages dhcproto check that out for the DHCP protocol. About A cli tool (and dhcp

Evan Cameron 12 Mar 28, 2022
A user-friendly TUI client for Matrix written in Rust!

Konoha A user-friendly TUI client for Matrix written in Rust! Notice: The client is currently not usable and is only hosted on GitHub for version cont

L3af 9 Jan 5, 2022
A simple yet convenient cross-platform ARP spoofer

ruuf - A simple yet convenient cross-platform ARP spoofer Poison the ARP cache of the given victim, thereby redirecting the traffic to the target ther

null 6 Feb 19, 2023
Small and simple CLI app to generate .editorconfig based on a given settings.

add-editorconfig Small and simple CLI app to generate .editorconfig based on a given settings. Usage # Will create an .editorconfig in the current dir

Reinaldy Rafli 3 Jan 16, 2022
A convenient macro for building PathBufs in Rust.

pathbuf pathbuf is a simple crate which provides the pathbuf macro to conveniently construct the Rust PathBuf type. Example use pathbuf::pathbuf; use

Andrew Lilley Brinker 6 Jan 16, 2023
Irx-config - The library provides convenient way to represent/parse configuration from different sources

The irx-config library provides convenient way to represent/parse configuration from different sources. The main goals is to be very easy to use and t

Andriy Bakay 2 Sep 14, 2022
`matchable` provides a convenient enum for checking if a piece of text is matching a string or a regex.

matchable matchable provides a convenient enum for checking if a piece of text is matching a string or a regex. The common usage of this crate is used

Pig Fang 6 Dec 19, 2022
A more convenient `#[target_feature]` replacement

A more convenient #[target_feature] replacement To get good performance out of SIMD everything on the SIMD codepath must be inlined. With how SIMD is

Koute 3 Apr 10, 2023
This library provides a convenient derive macro for the standard library's std::error::Error trait.

derive(Error) This library provides a convenient derive macro for the standard library's std::error::Error trait. [dependencies] therror = "1.0" Compi

Sebastian Thiel 5 Oct 23, 2023
A Python package written in Rust for email verification without sending any emails.

PyRustify PyRustify is a Python package written in Rust that verifies the email addresses. Features Feature Description Syntax validation Checks if th

Mng 8 Apr 16, 2023
Core Lightning plugin for sending zap (NIP-57) notes

Core Lightning plugin for sending zap events You can add the plugin by copying it to CLN's plugin directory or by adding the following line to your co

null 8 Mar 13, 2023
A cli based pastebin in Rust, but very insecure

pasta A cli based pastebin in Rust, but very insecure Use nightly toolchain to build rustup override set nightly When this program is running, you can

Snehit Sah 3 Mar 25, 2022
A Turing-complete but dead-simple spaced repetition CLI that helps you learn stuff.

Forne β€” Learn Stuff Forne is a Turing-complete spaced repetition engine to help you learn stuff your way. What does that mean? Well, there are a few p

Sam Brew 9 May 12, 2023
A simple (but really fast!) CLI tool to convert an epub into a text file.

epub_to_txt A simple (but really fast!) CLI tool written in Rust to convert an epub into a text file (in Markdown format). Usage epub_to_txt filename.

Darren Mothersele 3 Jul 30, 2023
a simple program that you can scrap, is shit and really simple but is cool.

if you want to run it you need to have installed curl by default scrap youtube, but you can change it, also change the number of threads and run: carg

pai 7 Oct 15, 2021
A todo list app that indexes your app to find TODO:'s

forgot A todo list app that indexes your app to find TODO:'s Usage to list all your todos forgot list list all your todos ignoring search in ./target,

null 2 Oct 6, 2022
Simple test app based on rust-psp

PSP Test App Simple test app based on rust-psp. Demonstrating the usage of C libs. Build Download and unzip the prebuilt PSPSDK (built from clang-psp)

Yifeng Wang 4 Nov 28, 2022