diff options
| -rw-r--r-- | CHANGELOG | 101 | ||||
| -rw-r--r-- | Cargo.lock | 1119 | ||||
| -rw-r--r-- | Cargo.toml | 3 | ||||
| -rw-r--r-- | README.org | 70 | ||||
| -rw-r--r-- | changelog/0.2.txt | 44 | ||||
| -rw-r--r-- | documentation/mumctl.1 | 159 | ||||
| -rw-r--r-- | documentation/mumctl.txt | 107 | ||||
| -rw-r--r-- | documentation/mumd.1 | 88 | ||||
| -rw-r--r-- | documentation/mumd.txt | 45 | ||||
| -rw-r--r-- | documentation/mumdrc.5 | 87 | ||||
| -rw-r--r-- | documentation/mumdrc.txt | 55 | ||||
| -rw-r--r-- | mumctl/Cargo.toml | 12 | ||||
| -rw-r--r-- | mumctl/src/main.rs | 114 | ||||
| -rw-r--r-- | mumd/Cargo.toml | 14 | ||||
| -rw-r--r-- | mumd/src/audio.rs | 11 | ||||
| -rw-r--r-- | mumlib/Cargo.toml | 9 | ||||
| -rw-r--r-- | usage.org | 173 |
17 files changed, 1750 insertions, 461 deletions
diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..d7d0f68 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,101 @@ +Changelog +========= + +This changelog is inspired by https://keepachangelog.com/en/1.1.0/[Keep a +Changelog]. We follow https://semver.org/spec/v2.0.0.html[semver], but since +we're in 0.x it's a lawless land anyway. + ++mumctl+ and +mumd+ will follow the same version numberings at least through +0.x, which we will revisit following 1.0. + +Points under "unreleased" currently exist on main and will be part of the next +release. Generally, if it's relevant, you should add a line here when creating +a PR. + +Unreleased +---------- + +// Added +// ~~~~~ + +// Changed +// ~~~~~~~ + +// Removed +// ~~~~~~~ + +Fixed +~~~~~ + +* Informative error message instead of panic when a running mumd-process can't + be found. + +// Other +// ~~~~~ + +0.3 - 2020-12-25 +------------------ + +Added +~~~~~ + + * Published to crates.io. You can now install with +cargo install {mumctl,mumd}+! + + * Support for macOS. + + * Notifications via libnotify (behind a feature-gate). + + * List configured servers, if they're online and how many users are + connected with +mumctl status+. + + * Configure your own outgoing volume and others' ingoing volume with +mumctl config+. + + * Mute/deafen yourself with +mumctl {mute,deafen}+. + + * Locally mute others with +mumctl user <user> mute+. + + * Sound effects. + + * Short about-texts when using +--help+. + + * Man pages. + +Changed +~~~~~~~ + + * Connecting and disconnecting from servers is now done with +mumctl + {connect,disconnect}+ instead of under the +server+ subcommand. + +Fixed +~~~~~ + + * Starting an instance of mumd while another is already running now requires + the old instance to be shut down so instances aren't left running and + unreachable. + +Other +~~~~~ + + * Moved to dasp, a pure Rust digital audio signal processing library. + +0.2 - 2020-10-26 +------------------ + +Added +~~~~~ + + * Connect to and disconnect from servers with +mumctl server {connect,disconnect}+. + + * Save and reconfigure servers with +mumctl server {add,remove,rename,config}+. + + * List channels and connect to them with +mumctl channel {list,join}+. + + * Store configuration in a file. + + * Generate CLI completions for zsh, bash and fish with +mumctl completions --{zsh,bash,fish}+. + +Links +----- + +[0.3]: https://github.com/sornas/mum/tree/v0.3 +[0.2]: https://github.com/sornas/mum/tree/v0.2 @@ -1,10 +1,31 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] +name = "addr2line" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] name = "alsa" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44581add1add74ade32aca327b550342359ec00191672c23c1caa3d492b85930" +checksum = "eb213f6b3e4b1480a60931ca2035794aa67b73103d254715b1db7b70dcb3c934" dependencies = [ "alsa-sys", "bitflags", @@ -14,9 +35,9 @@ dependencies = [ [[package]] name = "alsa-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5a0559bcd3f7a482690d98be41c08a43e92f669b179433e95ddf5e8b8fd36a3" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" dependencies = [ "libc", "pkg-config", @@ -38,6 +59,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f8ebf5827e4ac4fd5946560e6a99776ea73b596d80898f357007317a7141e47" [[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] name = "async-stream" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -76,6 +103,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] +name = "backtrace" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598" +dependencies = [ + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] name = "bincode" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -87,13 +140,12 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.53.1" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99de13bb6361e01e493b3db7928085dcc474b7ba4f5481818e53a89d76b8393f" +checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" dependencies = [ "bitflags", "cexpr", - "cfg-if 0.1.10", "clang-sys", "lazy_static", "lazycell", @@ -131,15 +183,21 @@ checksum = "ad1f8e949d755f9d79112b5bb46938e0ef9d3804a0b16dfab13aafcaa5f0fa72" [[package]] name = "cc" -version = "1.0.61" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" + +[[package]] +name = "cesu8" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cexpr" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" +checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" dependencies = [ "nom", ] @@ -165,15 +223,21 @@ dependencies = [ "libc", "num-integer", "num-traits", - "time", + "time 0.1.44", "winapi 0.3.9", ] [[package]] +name = "chunked_transfer" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7477065d45a8fe57167bf3cf8bcd3729b54cfcb81cca49bda2d038ea89ae82ca" + +[[package]] name = "clang-sys" -version = "0.28.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" +checksum = "0659001ab56b791be01d4b729c44376edc6718cf389a502e579b77b758f3296c" dependencies = [ "glob", "libc", @@ -189,7 +253,7 @@ dependencies = [ "ansi_term", "atty", "bitflags", - "strsim", + "strsim 0.8.0", "textwrap", "unicode-width", "vec_map", @@ -197,15 +261,6 @@ dependencies = [ ] [[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - -[[package]] name = "colored" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -217,12 +272,68 @@ dependencies = [ ] [[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "combine" +version = "4.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01199925a18b00193570e3d70cfe57dcb647eb167c29851983e76fc39e2fee39" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "const_fn" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826" + +[[package]] +name = "cookie" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784ad0fbab4f3e9cef09f20e0aea6000ae08d2cb98ac4c0abc53df18803d702f" +dependencies = [ + "percent-encoding", + "time 0.2.23", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3818dfca4b0cb5211a659bbcbb94225b7127407b2b135e650d717bfb78ab10d3" +dependencies = [ + "cookie", + "idna", + "log", + "publicsuffix", + "serde", + "serde_json", + "time 0.2.23", + "url", +] + +[[package]] name = "core-foundation" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" dependencies = [ - "core-foundation-sys 0.7.0", + "core-foundation-sys 0.8.2", "libc", ] @@ -234,9 +345,9 @@ checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "core-foundation-sys" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" [[package]] name = "coreaudio-rs" @@ -250,34 +361,48 @@ dependencies = [ [[package]] name = "coreaudio-sys" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6570ee6e089131e928d5ec9236db9e818aa3cf850f48b0eec6ef700571271d4" +checksum = "2b7e3347be6a09b46aba228d6608386739fb70beff4f61e07422da87b0bb31fa" dependencies = [ "bindgen", ] [[package]] name = "cpal" -version = "0.12.1" -source = "git+https://github.com/RustAudio/cpal#a77758968ffac7c284422dcab5459e3de1e900c7" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05631e2089dfa5d3b6ea1cfbbfd092e2ee5deeb69698911bc976b28b746d3657" dependencies = [ "alsa", "core-foundation-sys 0.6.2", "coreaudio-rs", + "jni 0.17.0", "js-sys", "lazy_static", "libc", "mach", + "ndk", + "ndk-glue", "nix", + "oboe", "parking_lot", - "stdweb", + "stdweb 0.1.3", "thiserror", "web-sys", "winapi 0.3.9", ] [[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] name = "crossbeam-channel" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -299,6 +424,41 @@ dependencies = [ ] [[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] name = "dasp_envelope" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -390,6 +550,39 @@ dependencies = [ ] [[package]] +name = "derivative" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "backtrace", + "version_check", +] + +[[package]] name = "fern" version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -400,6 +593,29 @@ dependencies = [ ] [[package]] +name = "fetch_unroll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d44807d562d137f063cbfe209da1c3f9f2fa8375e11166ef495daab7b847f9" +dependencies = [ + "libflate", + "tar", + "ureq", +] + +[[package]] +name = "filetime" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + +[[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -421,6 +637,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] +name = "form_urlencoded" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -438,9 +664,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e" +checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" dependencies = [ "futures-channel", "futures-core", @@ -453,9 +679,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" dependencies = [ "futures-core", "futures-sink", @@ -463,15 +689,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" [[package]] name = "futures-executor" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" dependencies = [ "futures-core", "futures-task", @@ -480,15 +706,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c" +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" [[package]] name = "futures-macro" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -498,24 +724,24 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd" +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" [[package]] name = "futures-task" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" dependencies = [ "once_cell", ] [[package]] name = "futures-util" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" dependencies = [ "futures-channel", "futures-core", @@ -570,6 +796,12 @@ dependencies = [ ] [[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" + +[[package]] name = "gio-sys" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -640,6 +872,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a164bb2ceaeff4f42542bdb847c41517c78a60f5649671b2a07312b6e117549" [[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "instant" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] name = "iovec" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -659,7 +917,7 @@ dependencies = [ "fnv", "lazy_static", "libc", - "mio 0.6.22", + "mio 0.6.23", "rand", "serde", "tempfile", @@ -667,10 +925,50 @@ dependencies = [ ] [[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "jni" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1981310da491a4f0f815238097d0d43d8072732b5ae5f8bd0d8eadf5bf245402" +dependencies = [ + "cesu8", + "combine 3.8.1", + "error-chain", + "jni-sys", + "log", + "walkdir", +] + +[[package]] +name = "jni" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36bcc950632e48b86da402c5c077590583da5ac0d480103611d5374e7c967a3c" +dependencies = [ + "cesu8", + "combine 4.5.1", + "error-chain", + "jni-sys", + "log", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" dependencies = [ "wasm-bindgen", ] @@ -699,17 +997,35 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.79" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" + +[[package]] +name = "libflate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" +checksum = "389de7875e06476365974da3e7ff85d55f1972188ccd9f6020dd7c8156e17914" +dependencies = [ + "adler32", + "crc32fast", + "libflate_lz77", + "rle-decode-fast", +] + +[[package]] +name = "libflate_lz77" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3286f09f7d4926fc486334f28d8d2e6ebe4f7f9994494b6dab27ddfad2c9b11b" [[package]] name = "libloading" -version = "0.5.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +checksum = "e9367bdfa836b7e3cf895867f7a570283444da90562980ec2263d6e1569b16bc" dependencies = [ - "cc", + "cfg-if 1.0.0", "winapi 0.3.9", ] @@ -743,9 +1059,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.3.4" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" dependencies = [ "scopeguard", ] @@ -769,6 +1085,12 @@ dependencies = [ ] [[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + +[[package]] name = "maybe-uninit" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -776,15 +1098,25 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "miniz_oxide" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +dependencies = [ + "adler", + "autocfg", +] [[package]] name = "mio" -version = "0.6.22" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" dependencies = [ "cfg-if 0.1.10", "fuchsia-zircon", @@ -793,7 +1125,7 @@ dependencies = [ "kernel32-sys", "libc", "log", - "miow 0.2.1", + "miow 0.2.2", "net2", "slab", "winapi 0.2.8", @@ -814,9 +1146,9 @@ dependencies = [ [[package]] name = "miow" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" dependencies = [ "kernel32-sys", "net2", @@ -850,7 +1182,7 @@ dependencies = [ [[package]] name = "mumctl" -version = "0.2.0" +version = "0.3.0" dependencies = [ "clap", "colored", @@ -861,7 +1193,7 @@ dependencies = [ [[package]] name = "mumd" -version = "0.2.0" +version = "0.3.0" dependencies = [ "argparse", "bytes", @@ -887,7 +1219,7 @@ dependencies = [ [[package]] name = "mumlib" -version = "0.2.0" +version = "0.3.0" dependencies = [ "colored", "fern", @@ -898,9 +1230,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" +checksum = "6fcc7939b5edc4e4f86b1b4a04bb1498afaaf871b1a6691838ed06fcb48d3a3f" dependencies = [ "lazy_static", "libc", @@ -915,10 +1247,55 @@ dependencies = [ ] [[package]] +name = "ndk" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-glue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" + +[[package]] name = "net2" -version = "0.2.35" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" dependencies = [ "cfg-if 0.1.10", "libc", @@ -940,9 +1317,9 @@ dependencies = [ [[package]] name = "nom" -version = "4.2.3" +version = "5.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" dependencies = [ "memchr", "version_check", @@ -958,10 +1335,21 @@ dependencies = [ ] [[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] name = "num-integer" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", "num-traits", @@ -969,9 +1357,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] @@ -987,19 +1375,70 @@ dependencies = [ ] [[package]] +name = "num_enum" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +dependencies = [ + "derivative", + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "object" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" + +[[package]] +name = "oboe" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aadc2b0867bdbb9a81c4d99b9b682958f49dbea1295a81d2f646cca2afdd9fc" +dependencies = [ + "jni 0.14.0", + "ndk", + "ndk-glue", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ff7a51600eabe34e189eec5c995a62f151d8d97e5fbca39e87ca738bb99b82" +dependencies = [ + "fetch_unroll", +] + +[[package]] name = "once_cell" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" [[package]] name = "openssl" -version = "0.10.30" +version = "0.10.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +checksum = "038d43985d1ddca7a9900630d8cd031b56e4794eecc2e9ea39dd17aa04399a70" dependencies = [ "bitflags", - "cfg-if 0.1.10", + "cfg-if 1.0.0", "foreign-types", "lazy_static", "libc", @@ -1014,9 +1453,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6" dependencies = [ "autocfg", "cc", @@ -1047,26 +1486,25 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.9.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" dependencies = [ + "instant", "lock_api", "parking_lot_core", - "rustc_version", ] [[package]] name = "parking_lot_core" -version = "0.6.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" dependencies = [ - "cfg-if 0.1.10", - "cloudabi", + "cfg-if 1.0.0", + "instant", "libc", "redox_syscall", - "rustc_version", "smallvec", "winapi 0.3.9", ] @@ -1078,19 +1516,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] name = "pin-project" -version = "0.4.27" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" +checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "0.4.27" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" +checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f" dependencies = [ "proc-macro2", "quote", @@ -1117,15 +1561,24 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "ppv-lite86" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] [[package]] name = "proc-macro-hack" -version = "0.5.18" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" @@ -1144,34 +1597,56 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.18.0" +version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d147edb77bcccbfc81fabffdc7bd50c13e103b15ca1e27515fe40de69a5776b" +checksum = "da78e04bc0e40f36df43ecc6575e4f4b180e8156c4efd73f13d5619479b05696" [[package]] name = "protobuf-codegen" -version = "2.18.0" +version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e81f70c25aab9506f87253c55f7cdcd8917635d5597382958d20025c211bbbd" +checksum = "49b2b929363268881afe6d24351e8b711ea5a1901a5e1549d3723ebcc5d3696d" dependencies = [ "protobuf", ] [[package]] name = "protobuf-codegen-pure" -version = "2.18.0" +version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af8d72d9e14fd41a954f4d5b310396151437c83d2bfcbf19d3073af90e46288" +checksum = "02a4b843fcc85f42b9f717a34481b9a323527f1b6ac62b20776514c044fc7da9" dependencies = [ "protobuf", "protobuf-codegen", ] [[package]] +name = "publicsuffix" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" +dependencies = [ + "error-chain", + "idna", + "lazy_static", + "regex", + "url", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] name = "quote" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" dependencies = [ "proc-macro2", ] @@ -1225,18 +1700,18 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "regex" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" dependencies = [ "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" [[package]] name = "remove_dir_all" @@ -1248,6 +1723,33 @@ dependencies = [ ] [[package]] +name = "ring" +version = "0.16.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "024a1e66fea74c66c66624ee5622a7ff0e4b73a13b4f5c326ddb50c708944226" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" + +[[package]] +name = "rustc-demangle" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" + +[[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1263,6 +1765,34 @@ dependencies = [ ] [[package]] +name = "rustls" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" +dependencies = [ + "base64", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] name = "schannel" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1279,25 +1809,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] name = "security-framework" -version = "0.4.4" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" +checksum = "c1759c2e3c8580017a484a7ac56d3abc5a6c1feadf88db2f3633f12ae4268c69" dependencies = [ "bitflags", "core-foundation", - "core-foundation-sys 0.7.0", + "core-foundation-sys 0.8.2", "libc", "security-framework-sys", ] [[package]] name = "security-framework-sys" -version = "0.4.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" +checksum = "f99b9d5e26d2a71633cc4f2ebae7cc9f874044e0c351a27e17892d76dce5678b" dependencies = [ - "core-foundation-sys 0.7.0", + "core-foundation-sys 0.8.2", "libc", ] @@ -1318,18 +1858,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" +checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" dependencies = [ "proc-macro2", "quote", @@ -1337,6 +1877,23 @@ dependencies = [ ] [[package]] +name = "serde_json" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" + +[[package]] name = "shlex" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1350,12 +1907,9 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" -version = "0.6.13" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -dependencies = [ - "maybe-uninit", -] +checksum = "ae524f056d7d770e174287294f562e95044c68e88dec909a00d2094805db9d75" [[package]] name = "socket2" @@ -1369,22 +1923,92 @@ dependencies = [ ] [[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "standback" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf906c8b8fc3f6ecd1046e01da1d8ddec83e48c8b08b84dcc02b585a6bedf5a8" +dependencies = [ + "version_check", +] + +[[package]] name = "stdweb" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" [[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] name = "syn" -version = "1.0.45" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9c5432ff16d6152371f808fb5a871cd67368171b09bb21b43df8e4a47a3556" +checksum = "a9802ddde94170d186eeee5005b798d9c159fa970403f1be19976d0cfb939b72" dependencies = [ "proc-macro2", "quote", @@ -1392,6 +2016,18 @@ dependencies = [ ] [[package]] +name = "tar" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" +dependencies = [ + "filetime", + "libc", + "redox_syscall", + "xattr", +] + +[[package]] name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1416,18 +2052,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" +checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" +checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" dependencies = [ "proc-macro2", "quote", @@ -1446,10 +2082,63 @@ dependencies = [ ] [[package]] +name = "time" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb 0.4.20", + "time-macros", + "version_check", + "winapi 0.3.9", +] + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn", +] + +[[package]] +name = "tinyvec" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] name = "tokio" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4bfdcbd00fa893ac0549b38aa27080636a0104b0d0c38475a99439405e1df8" +checksum = "d258221f566b6c803c7b4714abadc080172b272090cdc5e244a6d4dd13c3a6bd" dependencies = [ "autocfg", "libc", @@ -1509,14 +2198,32 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ "serde", ] [[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606" +dependencies = [ + "tinyvec", +] + +[[package]] name = "unicode-width" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1529,6 +2236,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "294b85ef5dbc3670a72e82a89971608a1fcc4ed5c7c5a2895230d31a95f0569b" +dependencies = [ + "base64", + "chunked_transfer", + "cookie", + "cookie_store", + "log", + "once_cell", + "qstring", + "rustls", + "url", + "webpki", + "webpki-roots", +] + +[[package]] +name = "url" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] name = "uuid" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1539,9 +2292,9 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" [[package]] name = "vec_map" @@ -1551,9 +2304,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.1.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" [[package]] name = "void" @@ -1562,6 +2315,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] +name = "walkdir" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + +[[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1575,19 +2339,19 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62" dependencies = [ "bumpalo", "lazy_static", @@ -1600,9 +2364,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1610,9 +2374,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549" dependencies = [ "proc-macro2", "quote", @@ -1623,21 +2387,40 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" +dependencies = [ + "webpki", +] + +[[package]] name = "winapi" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1666,6 +2449,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1682,6 +2474,15 @@ dependencies = [ ] [[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +dependencies = [ + "libc", +] + +[[package]] name = "yaml-rust" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -7,3 +7,6 @@ members = [ "mumctl", "mumlib" ] + +[profile.release] +lto = "thin" @@ -2,22 +2,31 @@ Mumble daemon with controller (think mpd(1)/mpc(1)) written in Rust. ** Building -`mum` is [[https://aur.archlinux.org/packages/mum-git/][available on the AUR]]. -We aim to publish tagged versions to cargo, as well as binaries on Github. + +mumd and mumctl are available on crates.io and can be installed with + +#+BEGIN_SRC sh +$ cargo install mumd +$ cargo install mumctl +#+END_SRC + +They are also available +[[https://aur.archlinux.org/packages/mum-git/][available on the AUR]]. We also +publish [[https://github.com/sornas/mum/releases/][compiled binaries on Github]]. *** Requirements These are for Arch Linux. You might need other packages on other distributions and operating systems, or they might be named something different. - rust (stable) -- `alsa-lib` -- `openssl` -- `opus` -- `libnotify` (optional) +- alsa-lib +- openssl +- opus +- libnotify (optional) Windows is not currently supported but could be in the future. macOS should work. Other operating systems haven't been tested. The limiting factor on Windows -is IPC communication which is (currently) done via the crate `ipc-channel`. +is IPC communication which is (currently) done via the crate ipc-channel. *** Installation 1. Build the binaries @@ -31,21 +40,18 @@ $ ln -s $PWD/target/release/mumd $HOME/.local/bin/ #+END_SRC *** Optional features -`mum` contains optional features that are enabled by default. To compile without -them, build with `--no-default-features`. Features can then be enabled with -`--features "FEATURES"`. +mum contains optional features that are enabled by default. To compile without +them, build with --no-default-features. Features can then be enabled with +--features "FEATURES". The following features can be specified: -| Name | Needed for | Additional crates | -|--------------------+---------------+-------------------| -| mumd/notifications | Notifications | 20 | - -Note that the "additional crates" isn't continually updated and might change. -Features might also have overlapping dependencies. +| Name | Needed for | +|--------------------+---------------+ +| mumd/notifications | Notifications | -Awaiting `-Z package-features`, changing which features are compiled requires -you to compile `mumd/` separately by entering its directory and specifying +Awaiting -Z package-features, changing which features are compiled requires +you to compile mumd/ separately by entering its directory and specifying its features. To summarize with an example, the following compiles with only the @@ -58,21 +64,35 @@ $ cd ../mumctl $ cargo build --release #+END_SRC +*** man-pages + +Man-pages for mumd, mumctl and mumdrc (the configuration file) are included as +both asciidoc txt-files and already formatted groff-files. They are generated +with + +#+BEGIN_SRC +$ asciidoctor -b manpage *.txt +#+END_SRC + ** Usage This describes how to connect to a server and join different channels. -See usage.org or `$ mumctl --help` for more information. +See mumctl --help or documentation/*.txt for more information. *** mumd -Start the daemon with `$ mumd`. Currently it attaches to the terminal, so if you -want to run it in the background you can detach it with e.g. (zsh): `$ mumd -&>/dev/null &|`. Somewhere down the line we're going to support `$ mumd ---daemonize`. +Start the daemon with mumd. Currently it attaches to the terminal, so if you +want to run it in the background you can detach it with e.g. (zsh): + +#+BEGIN_SRC sh +$ mumd &>/dev/null &| +#+END_SRC + +Somewhere down the line we're aiming to have a --daemonize. *** mumctl -Interfacing with the daemon is done through `mumctl`. Some examples: +Interfacing with the daemon is done through mumctl. Some examples: #+BEGIN_SRC sh -$ mumctl server connect 127.0.0.1 spock # connect to 127.0.0.1 with username 'spock' +$ mumctl connect 127.0.0.1 spock # connect to 127.0.0.1 with username 'spock' $ mumctl channel list ServerRoot -user1 diff --git a/changelog/0.2.txt b/changelog/0.2.txt deleted file mode 100644 index d7f7200..0000000 --- a/changelog/0.2.txt +++ /dev/null @@ -1,44 +0,0 @@ -778ea0b 0.2 version bump -768fc7c Merge branch command-alias into main (eskil) -ee46fd5 Merge branch config-home into main (eskil) -cd3c1ad Merge branch tcp-event-macro into main (eskil) -64eca3b Merge branch readme into main (gustav) -161f58f Merge branch refactor-state into main (gustav) -92d64a4 Merge branch network-rework into main (gustav) -b268bec Merge branch refactor-audio into main (gustav) -685eb0e Merge branch audio-new-clients into main (gustav) -ff6103c Merge branch lock-cpal into main (gustav) -34bf730 Merge branch getters into main (gustav) -d58c2aa Merge branch config-file into main (gustav) -d688a68 Merge branch port-configuration into main (eskil) -cf25e78 Merge branch file-logging into main (eskil) -f30b372 Merge branch socket into main (eskil) -ccc5f76 Merge branch pretty-print into main (eskil) -7675171 Merge branch channel-name into main (eskil) -4e8402c Merge branch input-volume into main (gustav) -27d8b16 Merge branch error-handling into main (eskil) -18a3c0b Merge branch cli into main (gustav) -8e4eb0a Merge branch audio-refactor into main (eskil) -a40d365 Merge branch commands into main (eskil) -dd8ebae initial commit - -git diff --stat dd8ebae..v0.2 --stat=80 -- **/*.rs - mumctl/src/main.rs | 450 ++++++++++++++++++++++++++++++++++++++++++++++ - mumd/src/audio.rs | 194 ++++++++++++++++++++ - mumd/src/audio/input.rs | 52 ++++++ - mumd/src/audio/output.rs | 90 ++++++++++ - mumd/src/command.rs | 38 ++++ - mumd/src/main.rs | 92 ++++++++++ - mumd/src/network.rs | 21 +++ - mumd/src/network/tcp.rs | 370 ++++++++++++++++++++++++++++++++++++++ - mumd/src/network/udp.rs | 227 +++++++++++++++++++++++ - mumd/src/state.rs | 287 +++++++++++++++++++++++++++++ - mumd/src/state/channel.rs | 184 +++++++++++++++++++ - mumd/src/state/server.rs | 123 +++++++++++++ - mumd/src/state/user.rs | 145 +++++++++++++++ - mumlib/src/command.rs | 28 +++ - mumlib/src/config.rs | 144 +++++++++++++++ - mumlib/src/error.rs | 40 +++++ - mumlib/src/lib.rs | 49 +++++ - mumlib/src/state.rs | 200 +++++++++++++++++++++ - 18 files changed, 2734 insertions(+) diff --git a/documentation/mumctl.1 b/documentation/mumctl.1 new file mode 100644 index 0000000..3239cb4 --- /dev/null +++ b/documentation/mumctl.1 @@ -0,0 +1,159 @@ +'\" t +.\" Title: mumd +.\" Author: [see the "AUTHOR(S)" section] +.\" Generator: Asciidoctor 2.0.12 +.\" Date: 2020-12-25 +.\" Manual: \ \& +.\" Source: \ \& +.\" Language: English +.\" +.TH "MUMCTL" "1" "2020-12-25" "\ \&" "\ \&" +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.ss \n[.ss] 0 +.nh +.ad l +.de URL +\fI\\$2\fP <\\$1>\\$3 +.. +.als MTO URL +.if \n[.g] \{\ +. mso www.tmac +. am URL +. ad l +. . +. am MTO +. ad l +. . +. LINKSTYLE blue R < > +.\} +.SH "NAME" +mumctl \- mumd(1) controller +.SH "SYNOPSIS" +.sp +mumctl <subcommand> [<args>] +.SH "DESCRIPTION" +.sp +mumctl is a CLI controller for mumd(1), a client daemon for Mumble, a free and +open source voice chat system. +.SH "OPTIONS" +.sp +\-h, \-\-help +.RS 4 +Prints help information. +.RE +.sp +\-\-version +.RS 4 +Prints version information. +.RE +.sp +Subcommands contain additional options. +.SH "SUBCOMMANDS" +.sp +mumctl channel connect <name> +.RS 4 +Connect to another channel. +.RE +.sp +mumctl channel list +.RS 4 +List all channels in the connected server. +.RE +.sp +mumctl completions [\-\-bash|\-\-fish|\-\-zsh] +.RS 4 +Generate a completion file for the specified shell. +.RE +.sp +mumctl config <name> <value> +.RS 4 +Set a configuration value in the mumd(1) config\-file. +.RE +.sp +mumctl config\-reload +.RS 4 +Force a reload of the configuration file (e.g. after editing it externally. +.RE +.sp +mumctl connect [\-p|\-\-port <port>] <host> [username] +.RS 4 +Connect to a server on the specified port. The host may be either the name +of a saved server or an IP or a URL (in which case username needs to be passed +as well). +If omitted, the port defaults to 64738. +.RE +.sp +mumctl deafen <true|false|toggle> +.RS 4 +Deafen/undeafen yourself. +.RE +.sp +mumctl disconnect +.RS 4 +Disconnect from the currently connected server. +.RE +.sp +mumctl help +.RS 4 +Show a help message. +.RE +.sp +mumctl server add [\-\-password <password>] [\-\-port <port>] [\-\-username <username>] [<name>] <host> +.RS 4 +Add a saved server configuration. +.RE +.sp +mumctl server config <server> <name> <value> +.RS 4 +Configure a variable in a saved server configuration. +.RE +.sp +mumctl server list +.RS 4 +List all saved servers and how many are connected to them. +.RE +.sp +mumctl server remove <name> +.RS 4 +Remove a saved server. +.RE +.sp +mumctl server rename <old name> <new name> +.RS 4 +Rename a saved server. +.RE +.sp +mumctl status +.RS 4 +Show the currently conneced channel and server. +.RE +.sp +mumctl user <name> mute <true|false|toggle> +.RS 4 +Mute someone else locally. +.RE +.sp +mumctl volume set <volume> +.RS 4 +Set the outgoing volume level. +1.0 is the default. +.RE +.sp +mumctl volume <user> set <volume> +.RS 4 +Set the volume of another user\(cqs incoming audio. +1.0 is the default. +.RE +.SH "AUTHORS" +.sp +Gustav Sörnäs and Eskil Queseth. +.SH "REPORTING BUGS" +.sp +Please report bugs to the Github repository at \c +.URL "https://github.com/sornas/mum/" "" +or by e\-mail to \c +.MTO "gustav\(atsornas.net" "" "." +.SH "SEE ALSO" +.sp +mumd(1), mumdrc(5)
\ No newline at end of file diff --git a/documentation/mumctl.txt b/documentation/mumctl.txt new file mode 100644 index 0000000..10c325f --- /dev/null +++ b/documentation/mumctl.txt @@ -0,0 +1,107 @@ +mumd(1) +======= + +Name +---- + +mumctl - mumd(1) controller + +Synopsis +-------- + +mumctl <subcommand> [<args>] + +Description +----------- + +mumctl is a CLI controller for mumd(1), a client daemon for Mumble, a free and +open source voice chat system. + +Options +------- + +-h, --help :: + Prints help information. + +--version :: + Prints version information. + +Subcommands contain additional options. + +Subcommands +----------- + +mumctl channel connect <name> :: + Connect to another channel. + +mumctl channel list :: + List all channels in the connected server. + +mumctl completions [--bash|--fish|--zsh] :: + Generate a completion file for the specified shell. + +mumctl config <name> <value> :: + Set a configuration value in the mumd(1) config-file. + +mumctl config-reload :: + Force a reload of the configuration file (e.g. after editing it externally. + +mumctl connect [-p|--port <port>] <host> [username] :: + Connect to a server on the specified port. The host may be either the name + of a saved server or an IP or a URL (in which case username needs to be passed + as well). + If omitted, the port defaults to 64738. + +mumctl deafen <true|false|toggle> :: + Deafen/undeafen yourself. + +mumctl disconnect :: + Disconnect from the currently connected server. + +mumctl help :: + Show a help message. + +mumctl server add [--password <password>] [--port <port>] [--username <username>] [<name>] <host> :: + Add a saved server configuration. + +mumctl server config <server> <name> <value> :: + Configure a variable in a saved server configuration. + +mumctl server list :: + List all saved servers and how many are connected to them. + +mumctl server remove <name> :: + Remove a saved server. + +mumctl server rename <old name> <new name> :: + Rename a saved server. + +mumctl status :: + Show the currently conneced channel and server. + +mumctl user <name> mute <true|false|toggle> :: + Mute someone else locally. + +mumctl volume set <volume> :: + Set the outgoing volume level. + 1.0 is the default. + +mumctl volume <user> set <volume> :: + Set the volume of another user's incoming audio. + 1.0 is the default. + +Authors +------- + +Gustav Sörnäs and Eskil Queseth. + +Reporting bugs +-------------- + +Please report bugs to the Github repository at https://github.com/sornas/mum/ +or by e-mail to gustav@sornas.net. + +See also +-------- + +mumd(1), mumdrc(5) diff --git a/documentation/mumd.1 b/documentation/mumd.1 new file mode 100644 index 0000000..ffd5f96 --- /dev/null +++ b/documentation/mumd.1 @@ -0,0 +1,88 @@ +'\" t +.\" Title: mumd +.\" Author: [see the "AUTHOR(S)" section] +.\" Generator: Asciidoctor 2.0.12 +.\" Date: 2020-12-25 +.\" Manual: \ \& +.\" Source: \ \& +.\" Language: English +.\" +.TH "MUMD" "1" "2020-12-25" "\ \&" "\ \&" +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.ss \n[.ss] 0 +.nh +.ad l +.de URL +\fI\\$2\fP <\\$1>\\$3 +.. +.als MTO URL +.if \n[.g] \{\ +. mso www.tmac +. am URL +. ad l +. . +. am MTO +. ad l +. . +. LINKSTYLE blue R < > +.\} +.SH "NAME" +mumd \- Mumble client daemon +.SH "SYNOPSIS" +.sp +mumd +.SH "DESCRIPTION" +.sp +mumd is a client daemon for Mumble, a free and open source voice chat system. +It is controlled via a controller like mumctl(1). +.SH "FILES" +.sp +Configuration is stored in and read from +.sp +.RS 4 +.ie n \{\ +\h'-04' 1.\h'+01'\c +.\} +.el \{\ +. sp -1 +. IP " 1." 4.2 +.\} +$XDG_CONFIG_HOME/mumdrc if $XDG_CONFIG_HOME is set, otherwise +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 2.\h'+01'\c +.\} +.el \{\ +. sp -1 +. IP " 2." 4.2 +.\} +$HOME/.config/mumdrc if $HOME is set, otherwise +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04' 3.\h'+01'\c +.\} +.el \{\ +. sp -1 +. IP " 3." 4.2 +.\} +/etc/mumdrc. +.RE +.sp +See mumdrc(5) for information about the configuration file. +.SH "AUTHORS" +.sp +Gustav Sörnäs and Eskil Queseth. +.SH "REPORTING BUGS" +.sp +Please report bugs to the Github repository at \c +.URL "https://github.com/sornas/mum/" "" +or by e\-mail to \c +.MTO "gustav\(atsornas.net" "" "." +.SH "SEE ALSO" +.sp +mumctl(1), mumdrc(5)
\ No newline at end of file diff --git a/documentation/mumd.txt b/documentation/mumd.txt new file mode 100644 index 0000000..5beb275 --- /dev/null +++ b/documentation/mumd.txt @@ -0,0 +1,45 @@ +mumd(1) +======= + +Name +---- + +mumd - Mumble client daemon + +Synopsis +-------- + +mumd + +Description +----------- + +mumd is a client daemon for Mumble, a free and open source voice chat system. +It is controlled via a controller like mumctl(1). + +Files +----- + +Configuration is stored in and read from + +1. $XDG_CONFIG_HOME/mumdrc if $XDG_CONFIG_HOME is set, otherwise +2. $HOME/.config/mumdrc if $HOME is set, otherwise +3. /etc/mumdrc. + +See mumdrc(5) for information about the configuration file. + +Authors +------- + +Gustav Sörnäs and Eskil Queseth. + +Reporting bugs +-------------- + +Please report bugs to the Github repository at https://github.com/sornas/mum/ +or by e-mail to gustav@sornas.net. + +See also +-------- + +mumctl(1), mumdrc(5) diff --git a/documentation/mumdrc.5 b/documentation/mumdrc.5 new file mode 100644 index 0000000..b540f1b --- /dev/null +++ b/documentation/mumdrc.5 @@ -0,0 +1,87 @@ +'\" t +.\" Title: mumdrc +.\" Author: [see the "AUTHOR(S)" section] +.\" Generator: Asciidoctor 2.0.12 +.\" Date: 2020-12-25 +.\" Manual: \ \& +.\" Source: \ \& +.\" Language: English +.\" +.TH "MUMDRC" "5" "2020-12-25" "\ \&" "\ \&" +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.ss \n[.ss] 0 +.nh +.ad l +.de URL +\fI\\$2\fP <\\$1>\\$3 +.. +.als MTO URL +.if \n[.g] \{\ +. mso www.tmac +. am URL +. ad l +. . +. am MTO +. ad l +. . +. LINKSTYLE blue R < > +.\} +.SH "NAME" +mumdrc \- mumd configuration file +.SH "DESCRIPTION" +.sp +This file contains persistent configuration for mumd(1). It can be written to +using mumctl(1). +.sp +The following configuration values are supported: +.sp +audio.input_volume +.RS 4 +Default 1.0. +.RE +.sp +audio.output_volume +.RS 4 +Default 1.0. +.RE +.sp +Servers are specified as [[servers]]\-entries and support the following +variables: +.sp +host +.RS 4 +IP or URL of the server. +.RE +.sp +name +.RS 4 +Custom alias for the server. +.RE +.sp +port +.RS 4 +The port to connect to. (Optional) +.RE +.sp +username +.RS 4 +The username to connect with. (Optional) +.RE +.sp +password +.RS 4 +The password to supply to the server. (Optional) +.RE +.SH "AUTHORS" +.sp +Gustav Sörnäs and Eskil Queseth. +.SH "REPORTING BUGS" +.sp +Please report bugs to the Github repository at \c +.URL "https://github.com/sornas/mum/" "" +or by e\-mail to \c +.MTO "gustav\(atsornas.net" "" "." +.SH "SEE ALSO" +.sp +mumctl(1), mumd(1)
\ No newline at end of file diff --git a/documentation/mumdrc.txt b/documentation/mumdrc.txt new file mode 100644 index 0000000..5365e06 --- /dev/null +++ b/documentation/mumdrc.txt @@ -0,0 +1,55 @@ +mumdrc(5) +========= + +Name +---- + +mumdrc - mumd configuration file + +Description +----------- + +This file contains persistent configuration for mumd(1). It can be written to +using mumctl(1). + +The following configuration values are supported: + +audio.input_volume :: + Default 1.0. + +audio.output_volume :: + Default 1.0. + +Servers are specified as \[[servers]]-entries and support the following +variables: + +host :: + IP or URL of the server. + +name :: + Custom alias for the server. + +port :: + The port to connect to. (Optional) + +username :: + The username to connect with. (Optional) + +password :: + The password to supply to the server. (Optional) + +Authors +------- + +Gustav Sörnäs and Eskil Queseth. + +Reporting bugs +-------------- + +Please report bugs to the Github repository at https://github.com/sornas/mum/ +or by e-mail to gustav@sornas.net. + +See also +-------- + +mumctl(1), mumd(1) diff --git a/mumctl/Cargo.toml b/mumctl/Cargo.toml index 8483042..42188d2 100644 --- a/mumctl/Cargo.toml +++ b/mumctl/Cargo.toml @@ -1,15 +1,17 @@ [package] name = "mumctl" -version = "0.2.0" +version = "0.3.0" authors = ["Gustav Sörnäs <gustav@sornas.net>", "Eskil Queseth <eskilq@kth.se>"] -license = "MIT" edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +description = """ +CLI controller for mumd. +""" +repository = "https://github.com/sornas/mum" +license = "MIT" [dependencies] -mumlib = { path = "../mumlib" } +mumlib = { version = "0.3", path = "../mumlib" } clap = { version = "2.33", features = ["yaml"] } colored = "2.0" diff --git a/mumctl/src/main.rs b/mumctl/src/main.rs index 705b901..27e27c4 100644 --- a/mumctl/src/main.rs +++ b/mumctl/src/main.rs @@ -1,14 +1,15 @@ -use clap::{App, AppSettings, Arg, Shell, SubCommand}; +use clap::{App, AppSettings, Arg, Shell, SubCommand, ArgMatches}; use colored::Colorize; use ipc_channel::ipc::{self, IpcSender}; use log::{error, warn}; use log::{Record, Level, Metadata, LevelFilter}; use mumlib::command::{Command, CommandResponse}; use mumlib::config; -use mumlib::config::ServerConfig; +use mumlib::config::{ServerConfig, Config}; use mumlib::state::Channel; use std::io::BufRead; -use std::{fs, io, iter}; +use std::{fs, io, iter, fmt}; +use std::fmt::{Display, Formatter}; const INDENTATION: &str = " "; @@ -192,24 +193,51 @@ fn main() { let matches = app.clone().get_matches(); + if let Err(e) = process_matches(matches, &mut config, &mut app) { + error!("{}", e); + } + + if !config::cfg_exists() { + println!( + "Config file not found. Create one in {}? [Y/n]", + config::get_creatable_cfg_path() + ); + let stdin = std::io::stdin(); + let response = stdin.lock().lines().next(); + match response.map(|e| e.map(|e| &e == "Y")) { + Some(Ok(true)) => { + config.write_default_cfg(true).unwrap(); + } + _ => {} + } + } else { + config.write_default_cfg(false).unwrap(); + } +} + +fn process_matches(matches: ArgMatches, config: &mut Config, app: &mut App) -> Result<(), Error> { if let Some(matches) = matches.subcommand_matches("connect") { - match_server_connect(matches, &config); + match_server_connect(matches, &config)?; } else if let Some(_) = matches.subcommand_matches("disconnect") { - error_if_err!(send_command(Command::ServerDisconnect)); + match send_command(Command::ServerDisconnect) { + Ok(v) => error_if_err!(v), + Err(e) => error!("{}", e), + } + // error_if_err!(send_command(Command::ServerDisconnect)); } else if let Some(matches) = matches.subcommand_matches("server") { if let Some(matches) = matches.subcommand_matches("config") { - match_server_config(matches, &mut config); + match_server_config(matches, config); } else if let Some(matches) = matches.subcommand_matches("rename") { - match_server_rename(matches, &mut config); + match_server_rename(matches, config); } else if let Some(matches) = matches.subcommand_matches("remove") { - match_server_remove(matches, &mut config); + match_server_remove(matches, config); } else if let Some(matches) = matches.subcommand_matches("add") { - match_server_add(matches, &mut config); + match_server_add(matches, config); } else if let Some(_) = matches.subcommand_matches("list") { if config.servers.len() == 0 { warn!("No servers in config"); } - for (server, response) in config + let query = config .servers .iter() .map(|e| { @@ -217,11 +245,12 @@ fn main() { host: e.host.clone(), port: e.port.unwrap_or(mumlib::DEFAULT_PORT), }); - (e, response) + response.map(|f| (e, f)) }) + .collect::<Result<Vec<_>, _>>()?; + for (server, response) in query.into_iter() .filter(|e| e.1.is_ok()) - .map(|e| (e.0, e.1.unwrap().unwrap())) - { + .map(|e| (e.0, e.1.unwrap().unwrap())) { if let CommandResponse::ServerStatus { users, max_users, .. } = response @@ -234,7 +263,7 @@ fn main() { } } else if let Some(matches) = matches.subcommand_matches("channel") { if let Some(_matches) = matches.subcommand_matches("list") { - match send_command(Command::ChannelList) { + match send_command(Command::ChannelList)? { Ok(res) => match res { Some(CommandResponse::ChannelList { channels }) => { print_channel(&channels, 0); @@ -249,7 +278,7 @@ fn main() { })); } } else if let Some(_) = matches.subcommand_matches("status") { - match send_command(Command::Status) { + match send_command(Command::Status)? { Ok(res) => match res { Some(CommandResponse::Status { server_state }) => { parse_status(&server_state); @@ -264,13 +293,13 @@ fn main() { match name { "audio.input_volume" => { if let Ok(volume) = value.parse() { - send_command(Command::InputVolumeSet(volume)).unwrap(); + send_command(Command::InputVolumeSet(volume))?.unwrap(); config.audio.input_volume = Some(volume); } } "audio.output_volume" => { if let Ok(volume) = value.parse() { - send_command(Command::OutputVolumeSet(volume)).unwrap(); + send_command(Command::OutputVolumeSet(volume))?.unwrap(); config.audio.output_volume = Some(volume); } } @@ -279,7 +308,7 @@ fn main() { } } } else if matches.subcommand_matches("config-reload").is_some() { - send_command(Command::ConfigReload).unwrap(); + send_command(Command::ConfigReload)?.unwrap(); } else if let Some(matches) = matches.subcommand_matches("completions") { app.gen_completions_to( "mumctl", @@ -290,7 +319,6 @@ fn main() { }, &mut io::stdout(), ); - return; } else if let Some(matches) = matches.subcommand_matches("volume") { if let Some(matches) = matches.subcommand_matches("set") { let user = matches.value_of("user").unwrap(); @@ -316,7 +344,7 @@ fn main() { } else { unreachable!() }); - match send_command(command) { + match send_command(command)? { Ok(Some(CommandResponse::MuteStatus { is_muted })) => println!("{}", if is_muted { "Muted" } else { @@ -336,7 +364,7 @@ fn main() { } else { unreachable!() }); - match send_command(command) { + match send_command(command)? { Ok(Some(CommandResponse::DeafenStatus { is_deafened })) => println!("{}", if is_deafened { "Deafened" } else { @@ -363,25 +391,10 @@ fn main() { } }; - if !config::cfg_exists() { - println!( - "Config file not found. Create one in {}? [Y/n]", - config::get_creatable_cfg_path() - ); - let stdin = std::io::stdin(); - let response = stdin.lock().lines().next(); - match response.map(|e| e.map(|e| &e == "Y")) { - Some(Ok(true)) => { - config.write_default_cfg(true).unwrap(); - } - _ => {} - } - } else { - config.write_default_cfg(false).unwrap(); - } + Ok(()) } -fn match_server_connect(matches: &clap::ArgMatches<'_>, config: &mumlib::config::Config) { +fn match_server_connect(matches: &clap::ArgMatches<'_>, config: &mumlib::config::Config) -> Result<(), Error> { let host = matches.value_of("host").unwrap(); let username = matches.value_of("username"); let port = match matches.value_of("port").map(|e| e.parse()) { @@ -401,14 +414,14 @@ fn match_server_connect(matches: &clap::ArgMatches<'_>, config: &mumlib::config: .or(username); if username.is_none() { error!("no username specified"); - return; + return Ok(()); //TODO? return as error } (host, port, username.unwrap()) } None => { if username.is_none() { error!("no username specified"); - return; + return Ok(()); //TODO? return as error } (host, port, username.unwrap()) } @@ -418,7 +431,7 @@ fn match_server_connect(matches: &clap::ArgMatches<'_>, config: &mumlib::config: port, username: username.to_string(), accept_invalid_cert: true, //TODO - }) + })? .map(|e| (e, host)); match response { Ok((e, host)) => { @@ -434,6 +447,8 @@ fn match_server_connect(matches: &clap::ArgMatches<'_>, config: &mumlib::config: } }; } + + Ok(()) } fn match_server_config(matches: &clap::ArgMatches<'_>, config: &mut mumlib::config::Config) { @@ -602,17 +617,17 @@ fn parse_status(server_state: &mumlib::state::Server) { } } -fn send_command(command: Command) -> mumlib::error::Result<Option<CommandResponse>> { +fn send_command(command: Command) -> Result<mumlib::error::Result<Option<CommandResponse>>, crate::Error> { let (tx_client, rx_client) = ipc::channel::<mumlib::error::Result<Option<CommandResponse>>>().unwrap(); let server_name = fs::read_to_string(mumlib::SOCKET_PATH).unwrap(); //TODO don't panic - let tx0 = IpcSender::connect(server_name).unwrap(); + let tx0 = IpcSender::connect(server_name).map_err(|_| Error::ConnectionError)?; tx0.send((command, tx_client)).unwrap(); - rx_client.recv().unwrap() + Ok(rx_client.recv().unwrap()) } fn print_channel(channel: &Channel, depth: usize) { @@ -639,3 +654,14 @@ fn print_channel(channel: &Channel, depth: usize) { print_channel(child, depth + 1); } } + +#[derive(Debug)] +enum Error { + ConnectionError +} + +impl Display for Error { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "Unable to connect to mumd. Is mumd running?") + } +}
\ No newline at end of file diff --git a/mumd/Cargo.toml b/mumd/Cargo.toml index 4dfd515..8c6958c 100644 --- a/mumd/Cargo.toml +++ b/mumd/Cargo.toml @@ -1,12 +1,14 @@ [package] name = "mumd" -version = "0.2.0" +version = "0.3.0" authors = ["Gustav Sörnäs <gustav@sornas.net>", "Eskil Queseth <eskilq@kth.se>"] -license = "MIT" edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +description = """ +Mumble client daemon. +""" +repository = "https://github.com/sornas/mum" +license = "MIT" [features] default = ["notifications"] @@ -14,11 +16,11 @@ default = ["notifications"] notifications = ["libnotify"] [dependencies] -mumlib = { path = "../mumlib" } +mumlib = { version = "0.3", path = "../mumlib" } argparse = "0.2" +cpal = "0.13" bytes = "1.0" -cpal = { git = "https://github.com/RustAudio/cpal" } dasp_interpolate = { version = "0.11", features = ["linear"] } dasp_signal = "0.11" futures = "0.3" diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 9e8bd6e..0666268 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -231,12 +231,19 @@ impl Audio { .map(|e| cpal::Sample::to_f32(&e.unwrap())) .collect::<Vec<_>>(), }; - let mut signal = signal::from_iter(samples.iter().cloned()); + let iter: Box<dyn Iterator<Item = f32>> = match spec.channels { + 1 => Box::new(samples.into_iter().flat_map(|e| vec![e, e])), + 2 => Box::new(samples.into_iter()), + _ => unimplemented!() // TODO handle gracefully (this might not even happen) + }; + let mut signal = signal::from_interleaved_samples_iter::<_, [f32; 2]>(iter); let interp = Linear::new(signal.next(), signal.next()); let samples = signal .from_hz_to_hz(interp, spec.sample_rate as f64, SAMPLE_RATE as f64) .until_exhausted() - .collect::<Vec<_>>(); + // if the source audio is stereo and is being played as mono, discard the right audio + .flat_map(|e| if output_config.channels == 1 { vec![e[0]] } else { e.to_vec() }) + .collect::<Vec<f32>>(); (*event, samples) }) .collect(); diff --git a/mumlib/Cargo.toml b/mumlib/Cargo.toml index 74bdb32..e439e77 100644 --- a/mumlib/Cargo.toml +++ b/mumlib/Cargo.toml @@ -1,11 +1,14 @@ [package] name = "mumlib" -version = "0.2.0" +version = "0.3.0" authors = ["Gustav Sörnäs <gustav@sornas.net>", "Eskil Queseth <eskilq@kth.se>"] edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +description = """ +Exposed parts of mum. +""" +repository = "https://github.com/sornas/mum" +license = "MIT" [dependencies] colored = "2.0" diff --git a/usage.org b/usage.org deleted file mode 100644 index 952cc41..0000000 --- a/usage.org +++ /dev/null @@ -1,173 +0,0 @@ -This file contains the current targeted usage. It works as both a design document -and a feature tracker. New commands and flags go here. - -* Usage overview - -Start the daemon with either one of: - -- `$ mumd`. Writes to stdout, ignores stdin. Can easily be disowned/started in - a screen/tmux. - -We want to support / explain how to do the following at some point: - -- `$ mumd --daemon` -- systemd-service - -The daemon doesn't do anything by itself. Interfacing with it is done through -`mumctl`. - -* 0.1 -The basic commands are the smallest subset of commands that allow the user to -actually use mum for something. In this case it means connecting to a server, -listing channels and connecting to channels. -** DONE server -*** DONE connect -#+BEGIN_SRC bash -$ mumctl server connect localhost your_name -connecting to localhost... -connected as your_name -root -│ another person -│ some person -| your_name -#+END_SRC -** DONE channel -*** DONE list -#+BEGIN_SRC bash -$ mumctl channel list -root [3](4) -│ another person -│ some person -| your_name -├─ some channel [1] -│ someone alone -├─ other channel [0] -├─ third channel [0](2) -│ └─ subsubchannel [2] -│ a user -│ and another user -└─ AFK [1] - someone eating food -#+END_SRC - -**** DONE --short -#+BEGIN_SRC bash -$ mumctl channel list --short -root [3](4) -├─ some channel [1] -├─ other channel [0] -├─ third channel [0](2) -│ └─ subsubchannel [2] -└─ AFK [1] -#+END_SRC -*** DONE connect -#+BEGIN_SRC bash -$ mumctl channel connect some channel -connecting to some channel... -connected -#+END_SRC -** DONE status -#+BEGIN_SRC bash -$ mumctl status -connected to localhost:65837 as your_name -currently in root with 2 other clients: - root - │ another person - │ some person - | your_name -#+END_SRC - -#+BEGIN_SRC bash -$ mumctl status --short -your_name@localhost:65387/root (3) - another person - some person - your_name -#+END_SRC - -* 0.2 -** server -*** TODO add -**** DONE With name -#+BEGIN_SRC bash -$ mumctl server add loopback 127.0.0.1 -username: *** -password: *** -#+END_SRC - -**** TODO Without name -#+BEGIN_SRC bash -$ mumctl server add 127.0.0.1 -username: *** -password: *** -#+END_SRC - -Password can be skipped by entering blank. -*** list -#+BEGIN_SRC bash -$ mumctl server list -loopback [4 / 100] -127.0.0.1 [4 / 100] -127.0.0.3 [OFFLINE] -#+END_SRC -*** TODO config -**** DONE username -#+BEGIN_SRC bash -$ mumctl server config loopback username xX_gamerboy_Xx -#+END_SRC -**** TODO password -#+BEGIN_SRC bash -$ mumctl server config loopback password *** -#+END_SRC - -Optionally ask stdin -#+BEGIN_SRC bash -$ mumctl server config loopback password -enter password: *** -#+END_SRC -*** TODO connect: handle invalid keys -#+BEGIN_SRC bash -server offered invalid key. what do you want to do? -[I]nspect, [A]ccept, [D]eny, [C]ompare, [T]emporarily trust (default D): -#+END_SRC -- Inspect: Print the key digest and ask again. -- Accept: Accept the key, connect to the server and trust the key. -- Deny: Abort the connection. Do not trust the key. -- Compare: Compare the key to a file to confirm legitimacy and ask again. -- Temporarily trust: Accept the key and connect, but do not trust the key. -*** DONE rename -#+BEGIN_SRC bash -$ mumctl server rename loopback my_server -#+END_SRC -** TODO config -#+BEGIN_SRC bash -$ mumctl config audio.input_volume 1.1 -$ mumctl config audio.input_volume -$ mumctl config audio.input_volume --help -#+END_SRC -** TODO volume -#+BEGIN_SRC bash -$ mumctl volume set User1 1.1 -$ mumctl volume User1 -110% -#+END_SRC - -* 0.3 -** mute -#+BEGIN_SRC bash -$ mumctl mute true -$ mumctl mute false -$ mumctl mute toggle -#+END_SRC -** deafen -#+BEGIN_SRC bash -$ mumctl deafen true -$ mumctl deafen false -$ mumctl deafen toggle -#+END_SRC -** user -#+BEGIN_SRC bash -$ mumctl user Username mute true -$ mumctl user Username mute false -$ mumctl user Username mute toggle -#+END_SRC |
