Compare commits

...

226 Commits
v1.0.2 ... main

Author SHA1 Message Date
0c8cc665c8
chore(README): archive 2023-08-28 23:29:40 +05:30
9586a22519
chore: update Garnix badges 2023-08-27 20:51:34 +05:30
GitHub Actions
96d5232e9b flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/ae12a8f93fb93d447f7b4ba3bb157c66568a5a05' (2023-08-19)
  → 'github:rustsec/advisory-db/d401af5af8e74d61872688d6228d067c553db2c9' (2023-08-25)
• Updated input 'crane':
    'github:ipetkov/crane/7809d369710abb17767b624f9e72b500373580bc' (2023-08-12)
  → 'github:ipetkov/crane/ef5d11e3c2e5b3924eb0309dba2e1fea2d9062ae' (2023-08-23)
• Updated input 'devshell':
    'github:numtide/devshell/f9238ec3d75cefbb2b42a44948c4e8fb1ae9a205' (2023-07-03)
  → 'github:numtide/devshell/2aa26972b951bc05c3632d4e5ae683cb6771a7c6' (2023-08-23)
• Updated input 'fenix':
    'github:nix-community/fenix/ce22ab2b2c8aec8593713d077bbce8f0e3fe8d3e' (2023-08-19)
  → 'github:nix-community/fenix/e66fa0e97106af71be1b26917fba281a27a653a3' (2023-08-26)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/c0f6ece3c47b6486731367153a66be0790d13dec' (2023-08-18)
  → 'github:rust-lang/rust-analyzer/f5b7c60ff7a79bfb3e10f3e98c81b7bb4cb53c68' (2023-08-23)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11)
  → 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783' (2023-08-19)
  → 'github:NixOS/nixpkgs/c66ccfa00c643751da2fd9290e096ceaa30493fc' (2023-08-26)
2023-08-27 06:01:48 +00:00
renovate[bot]
81de1dd24d
chore(deps): lock file maintenance 2023-08-27 00:58:31 +00:00
renovate[bot]
764098c5e1
fix(deps): update serde to 1.0.188 2023-08-26 05:34:27 +00:00
renovate[bot]
3c0e6490e2
chore(deps): lock file maintenance 2023-08-26 01:25:40 +00:00
renovate[bot]
d6c39197a8
fix(deps): update serde to 1.0.187 2023-08-25 18:23:24 +00:00
renovate[bot]
d8db87d367
chore(deps): lock file maintenance 2023-08-25 04:47:07 +00:00
renovate[bot]
ec203dca55
chore(deps): update dependency ubuntu to v22 2023-08-25 02:06:53 +00:00
renovate[bot]
6a7c8eef42
fix(deps): update rust crate clap to 4.4.0 2023-08-24 23:40:36 +00:00
b3aa3eda8c
chore(release): bump twt to version 1.2.5 2023-08-25 05:09:57 +05:30
e33da6ee89
feat(ci): upgrade to cargo-dist 0.2.0-prerelease.5 2023-08-25 05:09:47 +05:30
4d74ac1eac
flake.lock: Update
Flake lock file updates:

• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/7f5998077786b9280cc07c36f6d90d0e2618b5ea' (2023-08-18)
  → 'github:msfjarvis/custom-nixpkgs/3b29b3378dc3f5abb36d670ca16aa566ea17a47d' (2023-08-24)
• Updated input 'custom-nixpkgs/rust-manifest':
    'https://static.rust-lang.org/dist/2023-06-10/channel-rust-nightly.toml?narHash=sha256-9OMI8u%2B0LF0qAKlC3X0kr79BO6LqJEP4%2BOwhQff23D4%3D'
  → 'https://static.rust-lang.org/dist/2023-07-08/channel-rust-nightly.toml?narHash=sha256-emILH39kZmz9D2cquaobdM55EakoGkUxn1sY3r1iYNg%3D'
2023-08-25 05:08:49 +05:30
2e3fdf0e0d
chore: fix Clippy lints 2023-08-25 04:03:15 +05:30
a9a80dc1bc
chore(rust): upgrade to 1.72.0 stable 2023-08-25 03:54:42 +05:30
renovate[bot]
334aaed4a2
fix(deps): update serde to 1.0.186 2023-08-24 03:38:50 +00:00
renovate[bot]
5a969d4c6d
chore(deps): lock file maintenance 2023-08-24 01:54:11 +00:00
renovate[bot]
0a56d56cd3
fix(deps): update rust crate clap to 4.3.24 2023-08-23 14:53:55 +00:00
renovate[bot]
577756aa14
chore(deps): lock file maintenance 2023-08-23 00:11:05 +00:00
renovate[bot]
5a7a2c7f16
chore(deps): lock file maintenance 2023-08-22 01:50:43 +00:00
renovate[bot]
abb7f64f59
fix(deps): update serde to 1.0.185 2023-08-21 06:26:38 +00:00
renovate[bot]
d49f01ebf9
chore(deps): lock file maintenance 2023-08-21 03:44:08 +00:00
renovate[bot]
d30c85daab
chore(deps): lock file maintenance 2023-08-21 02:08:00 +00:00
GitHub Actions
cea87e0d88 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/15e3b1b0712d465c6b5ef12fdc2a1716ec73d84d' (2023-08-07)
  → 'github:rustsec/advisory-db/ae12a8f93fb93d447f7b4ba3bb157c66568a5a05' (2023-08-19)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/1a87d30e79ff0e578201c44408848ccedfa0ce8f' (2023-08-06)
  → 'github:msfjarvis/custom-nixpkgs/7f5998077786b9280cc07c36f6d90d0e2618b5ea' (2023-08-18)
• Updated input 'fenix':
    'github:nix-community/fenix/f8800cb5a572fcdf25ea6fccf89d5ff25f6ad053' (2023-08-12)
  → 'github:nix-community/fenix/ce22ab2b2c8aec8593713d077bbce8f0e3fe8d3e' (2023-08-19)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/1fde334195f0a8ac43d242bc871e6723e963620d' (2023-08-11)
  → 'github:rust-lang/rust-analyzer/c0f6ece3c47b6486731367153a66be0790d13dec' (2023-08-18)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f0451844bbdf545f696f029d1448de4906c7f753' (2023-08-12)
  → 'github:NixOS/nixpkgs/ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783' (2023-08-19)
2023-08-20 06:01:39 +00:00
renovate[bot]
eca2a3c49b
chore(deps): lock file maintenance 2023-08-19 04:04:29 +00:00
renovate[bot]
dcb2f2b04d
fix(deps): update rust crate clap to 4.3.23 2023-08-19 00:50:07 +00:00
renovate[bot]
57c8fa3672
chore(deps): lock file maintenance 2023-08-18 01:19:12 +00:00
renovate[bot]
9608701836
fix(deps): update rust crate clap to 4.3.22 2023-08-17 17:24:20 +00:00
renovate[bot]
e78f7e28d1
chore(deps): lock file maintenance 2023-08-17 01:44:09 +00:00
renovate[bot]
d8ce3c6b3c
fix(deps): update rust crate tokio to 1.32.0 2023-08-16 21:22:49 +00:00
870076b3b8
chore: rebuild docs 2023-08-16 15:28:12 +05:30
5eead6d934
chore(release): bump twt to version 1.2.4 2023-08-16 15:15:37 +05:30
renovate[bot]
efc97d5038
chore(deps): lock file maintenance 2023-08-16 01:30:37 +00:00
renovate[bot]
9001c457e3
chore(deps): lock file maintenance 2023-08-15 00:47:54 +00:00
renovate[bot]
1458f36cdc
chore(deps): lock file maintenance 2023-08-14 02:00:04 +00:00
GitHub Actions
6256eda1b4 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/98e8483ac17d42eeeeee51d4d02ad8a690bd12c7' (2023-07-29)
  → 'github:rustsec/advisory-db/15e3b1b0712d465c6b5ef12fdc2a1716ec73d84d' (2023-08-07)
• Updated input 'crane':
    'github:ipetkov/crane/1a551ae11bff91521cbeaebb8ca59a101c9f33f8' (2023-08-03)
  → 'github:ipetkov/crane/7809d369710abb17767b624f9e72b500373580bc' (2023-08-12)
• Updated input 'crane/rust-overlay':
    'github:oxalica/rust-overlay/99df4908445be37ddb2d332580365fce512a7dcf' (2023-08-03)
  → 'github:oxalica/rust-overlay/b520a3889b24aaf909e287d19d406862ced9ffc9' (2023-08-07)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/85ba6439eb957cf24ad29c0160d03fe18aeb42f9' (2023-08-02)
  → 'github:msfjarvis/custom-nixpkgs/1a87d30e79ff0e578201c44408848ccedfa0ce8f' (2023-08-06)
• Updated input 'fenix':
    'github:nix-community/fenix/accce4f7f29327614501543c79dd421a6ac6f0fc' (2023-08-05)
  → 'github:nix-community/fenix/f8800cb5a572fcdf25ea6fccf89d5ff25f6ad053' (2023-08-12)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/86b6b6f705eb0c29691c3b2f7f5ac71df0e8caae' (2023-08-04)
  → 'github:rust-lang/rust-analyzer/1fde334195f0a8ac43d242bc871e6723e963620d' (2023-08-11)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0d2fb29f5071a12d7983319c2c2576be6a130582' (2023-08-05)
  → 'github:NixOS/nixpkgs/f0451844bbdf545f696f029d1448de4906c7f753' (2023-08-12)
2023-08-13 06:01:50 +00:00
renovate[bot]
d1648c757f
chore(deps): lock file maintenance 2023-08-13 01:28:15 +00:00
renovate[bot]
121b11f579
fix(deps): update rust crate tokio to 1.31.0 2023-08-12 18:31:00 +00:00
renovate[bot]
cd93856847
chore(deps): lock file maintenance 2023-08-12 01:07:28 +00:00
renovate[bot]
671c31eee6
chore(deps): lock file maintenance 2023-08-11 01:43:46 +00:00
renovate[bot]
abfa233680
chore(deps): lock file maintenance 2023-08-10 03:31:28 +00:00
renovate[bot]
425e3ff6d5
chore(deps): lock file maintenance 2023-08-10 00:45:03 +00:00
renovate[bot]
b588dcd3fb
fix(deps): update rust crate tokio to 1.30.0 2023-08-09 18:08:40 +00:00
renovate[bot]
0a3161d486
fix(deps): update rust crate clap to 4.3.21 2023-08-08 03:14:10 +00:00
renovate[bot]
e4af62eaf7
chore(deps): lock file maintenance 2023-08-08 01:39:55 +00:00
renovate[bot]
7f51df92f0
fix(deps): update serde to 1.0.183 2023-08-07 04:41:15 +00:00
renovate[bot]
23ce871f65
fix(deps): update serde to 1.0.182 2023-08-06 07:30:22 +00:00
GitHub Actions
78abe6e4cb flake.lock: Update
Flake lock file updates:

• Updated input 'crane':
    'github:ipetkov/crane/8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e' (2023-07-07)
  → 'github:ipetkov/crane/1a551ae11bff91521cbeaebb8ca59a101c9f33f8' (2023-08-03)
• Updated input 'crane/rust-overlay':
    'github:oxalica/rust-overlay/f9b92316727af9e6c7fee4a761242f7f46880329' (2023-07-03)
  → 'github:oxalica/rust-overlay/99df4908445be37ddb2d332580365fce512a7dcf' (2023-08-03)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/16f8050adaea5dd57c0fae38d845a916d4de1a30' (2023-07-28)
  → 'github:msfjarvis/custom-nixpkgs/85ba6439eb957cf24ad29c0160d03fe18aeb42f9' (2023-08-02)
• Updated input 'fenix':
    'github:nix-community/fenix/4253a8cb191d91dcf88d15966c3574f2460bad85' (2023-07-29)
  → 'github:nix-community/fenix/accce4f7f29327614501543c79dd421a6ac6f0fc' (2023-08-05)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/f442c4aad61668d622d8d8817dbd3dfaaa576068' (2023-07-28)
  → 'github:rust-lang/rust-analyzer/86b6b6f705eb0c29691c3b2f7f5ac71df0e8caae' (2023-08-04)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d2b52322f35597c62abf56de91b0236746b2a03d' (2023-07-29)
  → 'github:NixOS/nixpkgs/0d2fb29f5071a12d7983319c2c2576be6a130582' (2023-08-05)
2023-08-06 06:01:41 +00:00
renovate[bot]
4ca2bdee90
fix(deps): update serde to 1.0.181 2023-08-04 02:24:54 +00:00
renovate[bot]
fa8455b2b5
chore(deps): lock file maintenance 2023-08-03 01:35:08 +00:00
renovate[bot]
a5366e4440
chore(deps): lock file maintenance 2023-08-02 00:24:01 +00:00
renovate[bot]
be046836db
fix(deps): update serde to 1.0.180 2023-07-31 22:59:59 +00:00
renovate[bot]
f2e06b3a57
fix(deps): update serde to 1.0.179 2023-07-31 03:16:16 +00:00
renovate[bot]
ce18179944
chore(deps): lock file maintenance 2023-07-31 00:48:44 +00:00
GitHub Actions
b6300f8c58 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/4aa517564d1d06f0e79784c8ad973a59d68aa9c8' (2023-07-18)
  → 'github:rustsec/advisory-db/98e8483ac17d42eeeeee51d4d02ad8a690bd12c7' (2023-07-29)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/a2d04156f31d510167d81769b40ca2d484d561e3' (2023-07-27)
  → 'github:msfjarvis/custom-nixpkgs/16f8050adaea5dd57c0fae38d845a916d4de1a30' (2023-07-28)
• Updated input 'fenix':
    'github:nix-community/fenix/90ce0d205450fceeea30b295810c8fd8b2325f18' (2023-07-22)
  → 'github:nix-community/fenix/4253a8cb191d91dcf88d15966c3574f2460bad85' (2023-07-29)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/899dd84b4dbc53bab02553f77f6d7c3187d33637' (2023-07-21)
  → 'github:rust-lang/rust-analyzer/f442c4aad61668d622d8d8817dbd3dfaaa576068' (2023-07-28)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f465da166263bc0d4b39dfd4ca28b777c92d4b73' (2023-07-22)
  → 'github:NixOS/nixpkgs/d2b52322f35597c62abf56de91b0236746b2a03d' (2023-07-29)
2023-07-30 06:01:30 +00:00
renovate[bot]
805efa15db
chore(deps): lock file maintenance 2023-07-30 00:01:54 +00:00
renovate[bot]
437dc5cf6d
fix(deps): update serde to 1.0.178 2023-07-29 01:12:10 +00:00
renovate[bot]
12b9dbba79
fix(deps): update serde to 1.0.177 2023-07-27 19:51:18 +00:00
4af3d21625
chore: rebuild docs for v1.2.3 2023-07-28 01:20:42 +05:30
2c576e8605
chore(release): bump twt to version 1.2.3 2023-07-28 01:09:01 +05:30
8ddbd24e2f
docs: rebuild with oranda 0.3.0-prerelease.3 2023-07-28 01:07:53 +05:30
f3e92187a9
flake.lock: Update
Flake lock file updates:

• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/3cdfb4ea9ce5a1097289ebd547d428778a36c846' (2023-07-20)
  → 'github:msfjarvis/custom-nixpkgs/a2d04156f31d510167d81769b40ca2d484d561e3' (2023-07-27)
2023-07-28 01:04:38 +05:30
renovate[bot]
98765bd9b1
chore(deps): lock file maintenance 2023-07-27 00:29:11 +00:00
renovate[bot]
f9f29a5f8e
fix(deps): update serde to 1.0.176 2023-07-26 21:32:24 +00:00
renovate[bot]
bfaf872f83
chore(deps): lock file maintenance 2023-07-25 00:42:49 +00:00
renovate[bot]
d9daebfa4d
fix(deps): update serde to 1.0.175 2023-07-24 03:37:24 +00:00
renovate[bot]
ff7f194597
chore(deps): lock file maintenance 2023-07-24 00:50:51 +00:00
renovate[bot]
a804b839a0
fix(deps): update rust crate clap to 4.3.19 2023-07-23 07:04:01 +00:00
GitHub Actions
9b900e899f flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/1d12a1c2e3ca4109d64c3ac684159f891f846141' (2023-07-15)
  → 'github:rustsec/advisory-db/4aa517564d1d06f0e79784c8ad973a59d68aa9c8' (2023-07-18)
• Updated input 'fenix':
    'github:nix-community/fenix/f8b538725b6622407884bb0b5bc906410e1de842' (2023-07-15)
  → 'github:nix-community/fenix/90ce0d205450fceeea30b295810c8fd8b2325f18' (2023-07-22)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/789dfd2a256e2725d2bcf50cca3e73f0397b91f8' (2023-07-14)
  → 'github:rust-lang/rust-analyzer/899dd84b4dbc53bab02553f77f6d7c3187d33637' (2023-07-21)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/46ed466081b9cad1125b11f11a2af5cc40b942c7' (2023-07-15)
  → 'github:NixOS/nixpkgs/f465da166263bc0d4b39dfd4ca28b777c92d4b73' (2023-07-22)
2023-07-23 06:01:45 +00:00
renovate[bot]
6efbb84d12
chore(deps): lock file maintenance 2023-07-22 01:03:16 +00:00
renovate[bot]
82be669d0b
fix(deps): update serde to 1.0.174 2023-07-21 08:25:41 +00:00
renovate[bot]
bff2263b64
chore(deps): lock file maintenance 2023-07-21 01:56:09 +00:00
55abcc13ef chore(docs): rebuild with oranda v0.2.0 2023-07-20 10:58:12 +00:00
aac27bdbf4 flake.lock: Update
Flake lock file updates:

• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/e96d2d2d132014e30ea8bd91dfedbdc9205ab75b' (2023-07-15)
  → 'github:msfjarvis/custom-nixpkgs/3cdfb4ea9ce5a1097289ebd547d428778a36c846' (2023-07-20)
2023-07-20 10:45:35 +00:00
renovate[bot]
cabc777a00
fix(deps): update serde to 1.0.173 2023-07-20 00:05:00 +00:00
renovate[bot]
49f6f291a7
fix(deps): update rust crate clap to 4.3.17 2023-07-19 17:10:14 +00:00
renovate[bot]
4490497520
fix(deps): update rust crate clap to 4.3.16 2023-07-18 21:39:53 +00:00
renovate[bot]
de49ffd003
fix(deps): update rust crate clap to 4.3.15 2023-07-18 04:05:55 +00:00
renovate[bot]
79b6c20df9
fix(deps): update rust crate clap to 4.3.14 2023-07-17 17:04:53 +00:00
GitHub Actions
e02d8fb312 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/5ceeefcbbabf4b510ef8ede121d6dc57d1a1f7f8' (2023-07-08)
  → 'github:rustsec/advisory-db/1d12a1c2e3ca4109d64c3ac684159f891f846141' (2023-07-15)
• Updated input 'fenix':
    'github:nix-community/fenix/207c664b137bf699b276481614d176b9bbe9f537' (2023-07-08)
  → 'github:nix-community/fenix/f8b538725b6622407884bb0b5bc906410e1de842' (2023-07-15)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/db0add1ce92af58a92b2a80990044ae21713ae29' (2023-07-07)
  → 'github:rust-lang/rust-analyzer/789dfd2a256e2725d2bcf50cca3e73f0397b91f8' (2023-07-14)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25)
  → 'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/ed6afb10dfdfc97b6bcf0703f1bad8118e9e961b' (2023-07-08)
  → 'github:NixOS/nixpkgs/46ed466081b9cad1125b11f11a2af5cc40b942c7' (2023-07-15)
2023-07-16 06:02:00 +00:00
ed1f5123f2
chore(docs): rebuild with oranda 0.2.0-prerelease.1 2023-07-15 11:50:30 +05:30
5659a496cf
flake.lock: Update
Flake lock file updates:

• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/f95eb58775da0be4105d8ac7a0a6797d239880fd' (2023-07-08)
  → 'github:msfjarvis/custom-nixpkgs/e96d2d2d132014e30ea8bd91dfedbdc9205ab75b' (2023-07-15)
2023-07-15 11:49:09 +05:30
renovate[bot]
51d273c3dd
fix(deps): update rust crate clap to 4.3.12 2023-07-14 18:53:42 +00:00
renovate[bot]
53f4cdff77
fix(deps): update serde to 1.0.171 2023-07-10 01:50:37 +00:00
091d8b66f7
chore(docs): rebuild with oranda v0.1.1 2023-07-10 04:39:27 +05:30
8dce8650d9
chore(readme): use headings consistently 2023-07-10 04:39:27 +05:30
renovate[bot]
dce81c4634
fix(deps): update serde to 1.0.170 2023-07-09 21:26:27 +00:00
renovate[bot]
6ef4362467
fix(deps): update serde to 1.0.169 2023-07-09 06:32:23 +00:00
GitHub Actions
e75ccf61d2 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/1f538e6f3b8ad37e89b1386e06be080fbe474b3c' (2023-06-29)
  → 'github:rustsec/advisory-db/5ceeefcbbabf4b510ef8ede121d6dc57d1a1f7f8' (2023-07-08)
• Updated input 'crane':
    'github:ipetkov/crane/4d350bb94fdf8ec9d2e22d68bb13e136d73aa9d8' (2023-06-29)
  → 'github:ipetkov/crane/8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e' (2023-07-07)
• Updated input 'crane/rust-overlay':
    'github:oxalica/rust-overlay/c535b4f3327910c96dcf21851bbdd074d0760290' (2023-06-03)
  → 'github:oxalica/rust-overlay/f9b92316727af9e6c7fee4a761242f7f46880329' (2023-07-03)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/4529b62830d6730de32f3e8a61462f689317c89d' (2023-07-03)
  → 'github:msfjarvis/custom-nixpkgs/f95eb58775da0be4105d8ac7a0a6797d239880fd' (2023-07-08)
• Updated input 'devshell':
    'github:numtide/devshell/3864857b2754ab0e16c7c7c626f0e5a1d4e42f38' (2023-06-28)
  → 'github:numtide/devshell/f9238ec3d75cefbb2b42a44948c4e8fb1ae9a205' (2023-07-03)
• Updated input 'fenix':
    'github:nix-community/fenix/1b25873f884bb9db4924d98b3ec46a378ed60920' (2023-07-01)
  → 'github:nix-community/fenix/207c664b137bf699b276481614d176b9bbe9f537' (2023-07-08)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/46cd8b849590a18c3e4f2eb8a0ade486d1c855a8' (2023-06-30)
  → 'github:rust-lang/rust-analyzer/db0add1ce92af58a92b2a80990044ae21713ae29' (2023-07-07)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8277b539d371bf4308fc5097911aa58bfac1794f' (2023-07-01)
  → 'github:NixOS/nixpkgs/ed6afb10dfdfc97b6bcf0703f1bad8118e9e961b' (2023-07-08)
2023-07-09 06:01:49 +00:00
renovate[bot]
75f2d39be3
chore(deps): lock file maintenance 2023-07-08 03:22:23 +00:00
renovate[bot]
214c48faab
chore(deps): lock file maintenance 2023-07-08 00:52:44 +00:00
renovate[bot]
32f798123c
chore(deps): lock file maintenance 2023-07-07 03:01:32 +00:00
renovate[bot]
1af73d280b
fix(deps): update serde to 1.0.167 2023-07-07 01:37:58 +00:00
renovate[bot]
f492c29b2e
chore(deps): lock file maintenance 2023-07-06 01:10:35 +00:00
renovate[bot]
c9e59fdcf3
fix(deps): update rust crate toml to 0.7.6 2023-07-05 21:16:20 +00:00
renovate[bot]
57c66f9f11
fix(deps): update rust crate clap to 4.3.11 2023-07-05 17:08:05 +00:00
renovate[bot]
ca6d98ce85
chore(deps): lock file maintenance 2023-07-05 00:19:47 +00:00
renovate[bot]
31d5c88bd4
chore(deps): lock file maintenance 2023-07-04 01:58:30 +00:00
renovate[bot]
febb11c049
fix(deps): update serde to 1.0.166 2023-07-03 19:49:51 +00:00
9a7798fffc
chore(docs): rebuild with oranda v0.1.0 2023-07-04 01:19:09 +05:30
deae6168af
flake.lock: Update
Flake lock file updates:

• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/a1a8558d904da3f447ab1509a5aa6303ea98d2e4' (2023-06-28)
  → 'github:msfjarvis/custom-nixpkgs/4529b62830d6730de32f3e8a61462f689317c89d' (2023-07-03)
2023-07-04 01:18:01 +05:30
renovate[bot]
8f34282b4f
fix(deps): update serde to 1.0.165 2023-07-03 14:31:50 +00:00
renovate[bot]
1551519e86
chore(deps): lock file maintenance (#30)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-02 12:08:27 +05:30
GitHub Actions
b67bb6ac1d flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/9cf72357c8c52629d22edd8b4b8d7f7cdeea2504' (2023-06-22)
  → 'github:rustsec/advisory-db/1f538e6f3b8ad37e89b1386e06be080fbe474b3c' (2023-06-29)
• Updated input 'crane':
    'github:ipetkov/crane/116b32c30b5ff28e49f4fcbeeb1bbe3544593204' (2023-06-21)
  → 'github:ipetkov/crane/4d350bb94fdf8ec9d2e22d68bb13e136d73aa9d8' (2023-06-29)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/4c7652ab85a28f416fc34bcbfb430145aa2e2c74' (2023-06-26)
  → 'github:msfjarvis/custom-nixpkgs/a1a8558d904da3f447ab1509a5aa6303ea98d2e4' (2023-06-28)
• Updated input 'devshell':
    'github:numtide/devshell/2cf83bb31720fcc29a999aee28d6da101173e66a' (2023-06-19)
  → 'github:numtide/devshell/3864857b2754ab0e16c7c7c626f0e5a1d4e42f38' (2023-06-28)
• Updated input 'fenix':
    'github:nix-community/fenix/a25163cf5b40656b45d9363d6404564272d8f6e5' (2023-06-24)
  → 'github:nix-community/fenix/1b25873f884bb9db4924d98b3ec46a378ed60920' (2023-07-01)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/6ba2590541fb284555596e8b7967b05aaa576c22' (2023-06-23)
  → 'github:rust-lang/rust-analyzer/46cd8b849590a18c3e4f2eb8a0ade486d1c855a8' (2023-06-30)
• Updated input 'flake-compat':
    'github:nix-community/flake-compat/95e78dc12268c5e4878621845c511077f3798729' (2023-04-03)
  → 'github:nix-community/flake-compat/8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c' (2023-06-29)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c' (2023-06-19)
  → 'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3d8a93602bc54ece7a4e689d9aea1a574e2bbc24' (2023-06-23)
  → 'github:NixOS/nixpkgs/8277b539d371bf4308fc5097911aa58bfac1794f' (2023-07-01)
2023-07-02 06:01:37 +00:00
renovate[bot]
a9d45bbe3d chore(deps): lock file maintenance 2023-07-01 07:54:29 +00:00
renovate[bot]
68adee42e6
fix(deps): update rust crate clap to 4.3.10 2023-06-30 05:08:04 +00:00
renovate[bot]
30b3cb10fe
fix(deps): update rust crate tokio to 1.29.1 2023-06-29 22:16:33 +00:00
renovate[bot]
b4294d1d9e
chore(deps): lock file maintenance 2023-06-29 02:14:00 +00:00
renovate[bot]
0be9303f74
fix(deps): update rust crate clap to 4.3.9 2023-06-28 16:10:27 +00:00
renovate[bot]
0e8e0263c6
fix(deps): update rust crate tokio to 1.29.0 2023-06-27 22:25:04 +00:00
5614082daa
chore(docs): remove fake installation options 2023-06-27 12:20:58 +05:30
renovate[bot]
823939ee2b
chore(deps): lock file maintenance 2023-06-27 00:17:03 +00:00
f4cc583c59
Revert "chore(docs): rebuild with oranda 0.1.0-prerelease.8 to reproduce bug"
The relevant PR has been merged, the reproducer is no longer necessary.

This reverts commit e184cdc21c.
2023-06-26 15:57:47 +05:30
e184cdc21c
chore(docs): rebuild with oranda 0.1.0-prerelease.8 to reproduce bug 2023-06-26 14:59:14 +05:30
60583b3abe
chore(docs): rebuild 2023-06-26 12:51:04 +05:30
4d4d00f30a
chore: cleanup README 2023-06-26 12:27:17 +05:30
7a609bb094
fix(flakes): use custom-nixpkgs as a package overlay 2023-06-26 12:18:55 +05:30
renovate[bot]
d9d546b6c9
chore(deps): lock file maintenance 2023-06-26 00:23:08 +00:00
67dee1b902
feat(flakes): use numtide/devshell for Flake devShell 2023-06-26 01:02:49 +05:30
db12e7e919
feat(flakes): adopt nix-systems for flake systems 2023-06-26 01:01:49 +05:30
8f65a28444
chore: reformat TOML files with Taplo 2023-06-26 00:33:51 +05:30
5d7272f32c
fix(flakes): adjust flake-compat URL 2023-06-25 12:27:53 +05:30
GitHub Actions
8c3921a6fb flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/37abf6e46378cb80ef43902a6bd9dcef2d9dfccc' (2023-06-15)
  → 'github:rustsec/advisory-db/9cf72357c8c52629d22edd8b4b8d7f7cdeea2504' (2023-06-22)
• Updated input 'crane':
    'github:ipetkov/crane/75f7d715f8088f741be9981405f6444e2d49efdd' (2023-06-13)
  → 'github:ipetkov/crane/116b32c30b5ff28e49f4fcbeeb1bbe3544593204' (2023-06-21)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/fb91d682f8205f3309201fa7a43d4e10e8ef7df7' (2023-06-17)
  → 'github:msfjarvis/custom-nixpkgs/eaad05366b73b0c9f46e8a29a18a9177b4bb7518' (2023-06-22)
• Updated input 'fenix':
    'github:nix-community/fenix/df0a6e4ec44b4a276acfa5a96d2a83cb2dfdc791' (2023-06-17)
  → 'github:nix-community/fenix/a25163cf5b40656b45d9363d6404564272d8f6e5' (2023-06-24)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/a5a71c75e62a0eaa1b42a376f7cf3d348cb5dec6' (2023-06-16)
  → 'github:rust-lang/rust-analyzer/6ba2590541fb284555596e8b7967b05aaa576c22' (2023-06-23)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31)
  → 'github:numtide/flake-utils/abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c' (2023-06-19)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2c09e8eb8717e240ef9c5727c1cc9186db9fb309' (2023-06-17)
  → 'github:NixOS/nixpkgs/3d8a93602bc54ece7a4e689d9aea1a574e2bbc24' (2023-06-23)
2023-06-25 06:01:36 +00:00
renovate[bot]
8423660cfa
fix(deps): update rust crate toml to 0.7.5 2023-06-24 07:10:28 +00:00
renovate[bot]
5703372352
fix(deps): update rust crate clap to 4.3.8 2023-06-24 03:42:21 +00:00
renovate[bot]
69818ee862
fix(deps): update rust crate clap to 4.3.6 2023-06-23 20:02:08 +00:00
renovate[bot]
bda0a8b75c
chore(deps): lock file maintenance 2023-06-21 00:19:09 +00:00
renovate[bot]
22c049cfab
fix(deps): update rust crate clap to 4.3.5 2023-06-20 18:45:00 +00:00
21a490c675
fix(flakes): switch flake-compat to nix-community fork 2023-06-20 23:51:37 +05:30
6eb291ba56
fix: allow serde and serde_derive to compile in parallel 2023-06-19 15:12:35 +05:30
GitHub Actions
8880969f65 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/af3f3d503f82056785841bee49997bae65eba1c0' (2023-06-03)
  → 'github:rustsec/advisory-db/37abf6e46378cb80ef43902a6bd9dcef2d9dfccc' (2023-06-15)
• Updated input 'crane':
    'github:ipetkov/crane/057d95721ee67d421391dda7031977d247ddec28' (2023-06-08)
  → 'github:ipetkov/crane/75f7d715f8088f741be9981405f6444e2d49efdd' (2023-06-13)
• Updated input 'custom-nixpkgs':
    'github:msfjarvis/custom-nixpkgs/8e42905205d7118b305d20ec85dde708fa750ea8' (2023-06-13)
  → 'github:msfjarvis/custom-nixpkgs/fb91d682f8205f3309201fa7a43d4e10e8ef7df7' (2023-06-17)
• Updated input 'custom-nixpkgs/rust-manifest':
    'https://static.rust-lang.org/dist/2023-02-22/channel-rust-nightly.toml?narHash=sha256-lUC138KTHSwfGqf3bL9ug7v4%2fIY3Y0uA9+hBAqM%2fiW4='
  → 'https://static.rust-lang.org/dist/2023-06-10/channel-rust-nightly.toml?narHash=sha256-9OMI8u+0LF0qAKlC3X0kr79BO6LqJEP4+OwhQff23D4='
• Updated input 'fenix':
    'github:nix-community/fenix/d6f69b3caa16f2de0ceb2f991e5e45fd80e17a52' (2023-06-10)
  → 'github:nix-community/fenix/df0a6e4ec44b4a276acfa5a96d2a83cb2dfdc791' (2023-06-17)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/5f8a6f67b955056070ba5d0675ff59d2305fbace' (2023-06-09)
  → 'github:rust-lang/rust-analyzer/a5a71c75e62a0eaa1b42a376f7cf3d348cb5dec6' (2023-06-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a30520bf8eabf8a5c37889d661e67a2dbcaa59e6' (2023-06-10)
  → 'github:NixOS/nixpkgs/2c09e8eb8717e240ef9c5727c1cc9186db9fb309' (2023-06-17)
2023-06-18 06:01:36 +00:00
renovate[bot]
57571bfb3f
chore(deps): lock file maintenance 2023-06-18 01:19:12 +00:00
9baa66c87d
feat(rust): upgrade to 1.70.0 2023-06-16 11:26:49 +05:30
7c34dec8e2
chore: fix broken link in webpage 2023-06-15 10:41:11 +05:30
7ec37ab477
chore: refresh website 2023-06-15 01:02:00 +05:30
cebc4f4d25
chore(release): bump twt to version 1.2.2 2023-06-15 00:18:38 +05:30
2c6cfcd409
chore(docs): rebuild pages 2023-06-15 00:18:26 +05:30
4d3994ef2c
chore(flakes): add oranda to devShell 2023-06-15 00:16:29 +05:30
renovate[bot]
d769a359f5
fix(deps): update rust crate clap to 4.3.4 2023-06-14 16:31:34 +00:00
GitHub Actions
8e9ef6c905 flake.lock: Update
Flake lock file updates:

• Updated input 'crane':
    'github:ipetkov/crane/35110cccf28823320f4fd697fcafcb5038683982' (2023-05-25)
  → 'github:ipetkov/crane/057d95721ee67d421391dda7031977d247ddec28' (2023-06-08)
• Updated input 'crane/rust-overlay':
    'github:oxalica/rust-overlay/d59c3fa0cba8336e115b376c2d9e91053aa59e56' (2023-05-03)
  → 'github:oxalica/rust-overlay/c535b4f3327910c96dcf21851bbdd074d0760290' (2023-06-03)
• Updated input 'fenix':
    'github:nix-community/fenix/09380d8560af38fffc04d95951b981f5b754ff48' (2023-06-03)
  → 'github:nix-community/fenix/d6f69b3caa16f2de0ceb2f991e5e45fd80e17a52' (2023-06-10)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/7f3bfc6ae75a47e1fd8d79b4dde79956cdd98093' (2023-06-02)
  → 'github:rust-lang/rust-analyzer/5f8a6f67b955056070ba5d0675ff59d2305fbace' (2023-06-09)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/ed7bbf16855a9ec919e5c6372ba3a297ec1df550' (2023-06-03)
  → 'github:NixOS/nixpkgs/a30520bf8eabf8a5c37889d661e67a2dbcaa59e6' (2023-06-10)
2023-06-11 06:01:36 +00:00
renovate[bot]
c46c748418
chore(deps): lock file maintenance (#29)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-11 09:49:21 +05:30
renovate[bot]
05f7092948
fix(deps): update rust crate clap to 4.3.3 2023-06-09 16:37:18 +00:00
renovate[bot]
461e8d606a
fix(deps): update rust crate serde to 1.0.164 2023-06-08 06:10:15 +00:00
renovate[bot]
d2d1deead1
fix(deps): update rust crate clap to 4.3.2 2023-06-05 21:55:29 +00:00
renovate[bot]
9ab1cfae51
fix(deps): update rust crate url to 2.4.0 2023-06-05 10:46:34 +00:00
GitHub Actions
caa8871ae7 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/e162556b9e8c1542c187290453cbd322e8905f0c' (2023-05-23)
  → 'github:rustsec/advisory-db/af3f3d503f82056785841bee49997bae65eba1c0' (2023-06-03)
• Updated input 'fenix':
    'github:nix-community/fenix/cd56ae0389d59084fad87be375bc480e3874cade' (2023-05-27)
  → 'github:nix-community/fenix/09380d8560af38fffc04d95951b981f5b754ff48' (2023-06-03)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/1b5523a8cdc46dfdc5170203cf6bc4e65f4515f6' (2023-05-26)
  → 'github:rust-lang/rust-analyzer/7f3bfc6ae75a47e1fd8d79b4dde79956cdd98093' (2023-06-02)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/cfacdce06f30d2b68473a46042957675eebb3401' (2023-04-11)
  → 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/aeb75dba965e790de427b73315d5addf91a54955' (2023-05-25)
  → 'github:NixOS/nixpkgs/ed7bbf16855a9ec919e5c6372ba3a297ec1df550' (2023-06-03)
2023-06-04 06:01:35 +00:00
renovate[bot]
763afe0c5c
fix(deps): update rust crate clap to 4.3.1 2023-06-02 17:06:13 +00:00
GitHub Actions
17ff2a3e1d flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/0e97e6e71f0dd52b4b4e0ab3fa6e5e5dd72f852a' (2023-05-17)
  → 'github:rustsec/advisory-db/e162556b9e8c1542c187290453cbd322e8905f0c' (2023-05-23)
• Updated input 'crane':
    'github:ipetkov/crane/99de890b6ef4b4aab031582125b6056b792a4a30' (2023-05-19)
  → 'github:ipetkov/crane/35110cccf28823320f4fd697fcafcb5038683982' (2023-05-25)
• Updated input 'fenix':
    'github:nix-community/fenix/73d13a8c584a2f8b35677a38e86ba148dc99d2f3' (2023-05-20)
  → 'github:nix-community/fenix/cd56ae0389d59084fad87be375bc480e3874cade' (2023-05-27)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/bb78059be4d090571bd70de57831f84eee5be678' (2023-05-19)
  → 'github:rust-lang/rust-analyzer/1b5523a8cdc46dfdc5170203cf6bc4e65f4515f6' (2023-05-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/eea79d584eff53bf7a76aeb63f8845da6d386129' (2023-05-20)
  → 'github:NixOS/nixpkgs/aeb75dba965e790de427b73315d5addf91a54955' (2023-05-25)
2023-05-28 06:01:43 +00:00
renovate[bot]
a182ef8133
fix(deps): update rust crate tokio to 1.28.2 2023-05-28 00:33:53 +00:00
GitHub Actions
b99fc6cb02 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/50bed3ba4066e6255dab434dc845e7f655812ce1' (2023-05-05)
  → 'github:rustsec/advisory-db/0e97e6e71f0dd52b4b4e0ab3fa6e5e5dd72f852a' (2023-05-17)
• Updated input 'crane':
    'github:ipetkov/crane/7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c' (2023-05-08)
  → 'github:ipetkov/crane/99de890b6ef4b4aab031582125b6056b792a4a30' (2023-05-19)
• Updated input 'crane/rust-overlay':
    'github:oxalica/rust-overlay/4679872d2dd3e94ffef75efcbf77ea11549d90a7' (2023-05-15)
  → 'github:oxalica/rust-overlay/d59c3fa0cba8336e115b376c2d9e91053aa59e56' (2023-05-03)
• Updated input 'fenix':
    'github:nix-community/fenix/7c8be7e3312ba06dc95491a44c3c9ba71a175bc4' (2023-05-14)
  → 'github:nix-community/fenix/73d13a8c584a2f8b35677a38e86ba148dc99d2f3' (2023-05-20)
• Updated input 'fenix/rust-analyzer-src':
    'github:rust-lang/rust-analyzer/cbd14e98403dc5e19f19fdf913808656d81a0516' (2023-05-13)
  → 'github:rust-lang/rust-analyzer/bb78059be4d090571bd70de57831f84eee5be678' (2023-05-19)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/ea11a3977f4cba013d8680667616be827c967ac0' (2023-05-13)
  → 'github:NixOS/nixpkgs/eea79d584eff53bf7a76aeb63f8845da6d386129' (2023-05-20)
2023-05-21 06:01:30 +00:00
renovate[bot]
2f8706e330
fix(deps): update rust crate clap to 4.3.0 (#28)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-21 10:56:21 +05:30
cacbb422e0
fix(flakes): remove unnecessary src 2023-05-20 03:48:54 +05:30
renovate[bot]
651816de44
fix(deps): update rust crate toml to 0.7.4 2023-05-18 19:26:19 +00:00
fed17af201
chore(cargo): update dependencies 2023-05-18 17:50:54 +05:30
97eb7f96b2
docs: rebuild with oranda 0.1.0-prerelease.2 2023-05-18 10:08:03 +05:30
ff41971c07
feat(nix): switch to provisioning toolchains using fenix
rust-overlay's `fromRustupToolchainFile` does not provision the provided
components from the `rust-toolchain.toml` file which makes the experience
subpar compared to fenix that treats `rust-toolchain.toml` similar to rustup.
2023-05-15 11:16:45 +05:30
GitHub Actions
9b48a6701f flake.lock: Update
Flake lock file updates:

• Updated input 'crane':
    'github:ipetkov/crane/8708b19627b2dfc2d1ac332b74383b8abdd429f0' (2023-05-03)
  → 'github:ipetkov/crane/7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c' (2023-05-08)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/16b3b0c53b1ee8936739f8c588544e7fcec3fc60' (2023-05-06)
  → 'github:NixOS/nixpkgs/ea11a3977f4cba013d8680667616be827c967ac0' (2023-05-13)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/546a8209ce0965475495dd422e4ab3c6de7a268c' (2023-05-07)
  → 'github:oxalica/rust-overlay/aa1480f16bec7dda3c62b8cdb184c7e823331ba2' (2023-05-14)
2023-05-14 06:01:37 +00:00
b4cbba1b2a
chore: generate a basic webpage via oranda 2023-05-14 02:50:11 +05:30
renovate[bot]
15d82e2f5b
fix(deps): update rust crate serde to 1.0.163 2023-05-11 04:39:16 +00:00
renovate[bot]
0e4b849efa
fix(deps): update rust crate tokio to 1.28.1 2023-05-10 11:18:46 +00:00
GitHub Actions
3d43676562 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/d72795ee51634b8c5bcf6b3bc98d08ec5888d191' (2023-04-25)
  → 'github:rustsec/advisory-db/50bed3ba4066e6255dab434dc845e7f655812ce1' (2023-05-05)
• Updated input 'crane':
    'github:ipetkov/crane/db21a44eb056ef65a33d9d2648ecc964b4acaddc' (2023-04-29)
  → 'github:ipetkov/crane/8708b19627b2dfc2d1ac332b74383b8abdd429f0' (2023-05-03)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/54abe781c482f51ff4ff534ebaba77db5bd97442' (2023-04-29)
  → 'github:NixOS/nixpkgs/16b3b0c53b1ee8936739f8c588544e7fcec3fc60' (2023-05-06)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/1be440e9119e69b68151cd9c84876ff3063a2e45' (2023-04-30)
  → 'github:oxalica/rust-overlay/546a8209ce0965475495dd422e4ab3c6de7a268c' (2023-05-07)
2023-05-07 06:01:51 +00:00
renovate[bot]
941c954c52
fix(deps): update rust crate serde to 1.0.162 2023-05-05 02:53:04 +00:00
renovate[bot]
67e269a8de
fix(deps): update rust crate clap to 4.2.7 2023-05-02 20:31:35 +00:00
renovate[bot]
ff7c45b549
fix(deps): update rust crate dirs to 5.0.1 2023-05-01 00:04:50 +00:00
GitHub Actions
78c8ce1ab1 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/cab69cc909dad84ca9409fb538bc95077ae9de0f' (2023-04-20)
  → 'github:rustsec/advisory-db/d72795ee51634b8c5bcf6b3bc98d08ec5888d191' (2023-04-25)
• Updated input 'crane':
    'github:ipetkov/crane/54b63c8eae4c50172cb50b612946ff1d2bc1c75c' (2023-04-16)
  → 'github:ipetkov/crane/db21a44eb056ef65a33d9d2648ecc964b4acaddc' (2023-04-29)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2362848adf8def2866fabbffc50462e929d7fffb' (2023-04-21)
  → 'github:NixOS/nixpkgs/54abe781c482f51ff4ff534ebaba77db5bd97442' (2023-04-29)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/7e938508fee57a0c0603329f63ec0509c1ae9aad' (2023-04-23)
  → 'github:oxalica/rust-overlay/1be440e9119e69b68151cd9c84876ff3063a2e45' (2023-04-30)
2023-04-30 06:01:49 +00:00
renovate[bot]
6fc23bb4d4
fix(deps): update rust crate clap to 4.2.5 2023-04-28 03:57:59 +00:00
renovate[bot]
b2389786b8
fix(deps): update rust crate tokio to 1.28.0 2023-04-26 04:48:54 +00:00
7ef4656302 fix(deps): update rust crate h2 to 0.3.18 2023-04-26 04:45:00 +00:00
f53eb72b12 refactor(flakes): refactor out common args 2023-04-26 04:38:02 +00:00
GitHub Actions
f02cba45de flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/23ff35f8259aca16ff14e4ce0da0f54cd496a26c' (2023-04-13)
  → 'github:rustsec/advisory-db/cab69cc909dad84ca9409fb538bc95077ae9de0f' (2023-04-20)
• Updated input 'crane':
    'github:ipetkov/crane/0c9f468ff00576577d83f5019a66c557ede5acf6' (2023-04-11)
  → 'github:ipetkov/crane/54b63c8eae4c50172cb50b612946ff1d2bc1c75c' (2023-04-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/29176972b4be60f7d3eb3101f696c99f2e6ada57' (2023-04-15)
  → 'github:NixOS/nixpkgs/2362848adf8def2866fabbffc50462e929d7fffb' (2023-04-21)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/18cdcb7b4017f266117a4d164f9d71c0535ef5ec' (2023-04-16)
  → 'github:oxalica/rust-overlay/7e938508fee57a0c0603329f63ec0509c1ae9aad' (2023-04-23)
2023-04-23 06:01:42 +00:00
renovate[bot]
02ae903893
fix(deps): update rust crate clap to 4.2.4 2023-04-19 18:54:29 +00:00
renovate[bot]
1272fed0be
fix(deps): update rust crate clap to 4.2.3 2023-04-19 00:06:57 +00:00
GitHub Actions
62f263e7c8 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/e6600338c880d882655a3bf7e5085fde4bb95e1f' (2023-04-08)
  → 'github:rustsec/advisory-db/23ff35f8259aca16ff14e4ce0da0f54cd496a26c' (2023-04-13)
• Updated input 'crane':
    'github:ipetkov/crane/65d3f6a3970cd46bef5eedfd458300f72c56b3c5' (2023-04-04)
  → 'github:ipetkov/crane/0c9f468ff00576577d83f5019a66c557ede5acf6' (2023-04-11)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/946da791763db1c306b86a8bd3828bf5814a1247' (2023-04-08)
  → 'github:numtide/flake-utils/cfacdce06f30d2b68473a46042957675eebb3401' (2023-04-11)
• Added input 'flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/431bf1e6cdd494e5230fbb72884afb4ca612c578' (2023-04-09)
  → 'github:NixOS/nixpkgs/29176972b4be60f7d3eb3101f696c99f2e6ada57' (2023-04-15)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/9e55ff64c777f05310d83be0a0cbf0c7e299f63a' (2023-04-09)
  → 'github:oxalica/rust-overlay/18cdcb7b4017f266117a4d164f9d71c0535ef5ec' (2023-04-16)
2023-04-16 06:01:27 +00:00
renovate[bot]
978cfe68c7
fix(deps): update rust crate clap to 4.2.2 2023-04-13 16:24:15 +00:00
renovate[bot]
c8d711eab6
fix(deps): update rust crate serde to 1.0.160 2023-04-11 09:09:44 +00:00
GitHub Actions
54ddfc2634 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/719587479aa1814df822a3a4dd4067cd4b37a8ab' (2023-03-25)
  → 'github:rustsec/advisory-db/e6600338c880d882655a3bf7e5085fde4bb95e1f' (2023-04-08)
• Updated input 'crane':
    'github:ipetkov/crane/9297a5fde10e3dc1edb377037182ab4489db21c5' (2023-04-02)
  → 'github:ipetkov/crane/65d3f6a3970cd46bef5eedfd458300f72c56b3c5' (2023-04-04)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15)
  → 'github:numtide/flake-utils/946da791763db1c306b86a8bd3828bf5814a1247' (2023-04-08)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3364b5b117f65fe1ce65a3cdd5612a078a3b31e3' (2023-03-31)
  → 'github:NixOS/nixpkgs/431bf1e6cdd494e5230fbb72884afb4ca612c578' (2023-04-09)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/9b8632040df6f2218fd01bf79c0589379ac39584' (2023-04-02)
  → 'github:oxalica/rust-overlay/9e55ff64c777f05310d83be0a0cbf0c7e299f63a' (2023-04-09)
2023-04-09 06:01:44 +00:00
GitHub Actions
70753fe66e flake.lock: Update
Flake lock file updates:

• Updated input 'crane':
    'github:ipetkov/crane/ec69da697357cfe7d9e8653b0cfbe73eaecca34b' (2023-03-22)
  → 'github:ipetkov/crane/9297a5fde10e3dc1edb377037182ab4489db21c5' (2023-04-02)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0cd51a933d91078775b300cf0f29aa3495231aa2' (2023-03-26)
  → 'github:NixOS/nixpkgs/3364b5b117f65fe1ce65a3cdd5612a078a3b31e3' (2023-03-31)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/7f38143d19432a0f9780197febe3fac9d3b0773a' (2023-03-26)
  → 'github:oxalica/rust-overlay/9b8632040df6f2218fd01bf79c0589379ac39584' (2023-04-02)
2023-04-02 06:01:32 +00:00
9fc16f0c7f chore(release): bump twt to version 1.2.1 2023-03-30 05:25:18 +00:00
renovate[bot]
5bdb3de2f2
fix(deps): update rust crate clap to 4.2.1 2023-03-29 22:02:33 +00:00
renovate[bot]
97586fcbe0
fix(deps): update rust crate clap to 4.2.0 2023-03-28 19:23:19 +00:00
renovate[bot]
467913959c
fix(deps): update rust crate serde to 1.0.159 2023-03-28 06:50:47 +00:00
renovate[bot]
d5a063b0bc
fix(deps): update rust crate clap to 4.1.14 2023-03-28 00:59:06 +00:00
renovate[bot]
4bf58ea8ef
fix(deps): update rust crate tokio to 1.27.0 2023-03-27 22:29:07 +00:00
GitHub Actions
d4340dfa60 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/0888b44843e3c86db9fd56334c7f5261ea00dc19' (2023-03-15)
  → 'github:rustsec/advisory-db/719587479aa1814df822a3a4dd4067cd4b37a8ab' (2023-03-25)
• Updated input 'crane':
    'github:ipetkov/crane/2552a2d1ccf33d43259a9e00f93dbacb9e6d6bed' (2023-03-20)
  → 'github:ipetkov/crane/ec69da697357cfe7d9e8653b0cfbe73eaecca34b' (2023-03-22)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/194c2aa446b2b059886bb68be15ef6736d5a8c31' (2023-03-16)
  → 'github:NixOS/nixpkgs/0cd51a933d91078775b300cf0f29aa3495231aa2' (2023-03-26)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/32e4b1bf80cf99b7c72d2892198d40558828e6a1' (2023-03-19)
  → 'github:oxalica/rust-overlay/7f38143d19432a0f9780197febe3fac9d3b0773a' (2023-03-26)
2023-03-26 06:01:44 +00:00
renovate[bot]
33560a9923
fix(deps): update rust crate clap to 4.1.13 2023-03-24 00:17:05 +00:00
renovate[bot]
8aa161a18a
fix(deps): update rust crate clap to 4.1.12 2023-03-23 18:08:10 +00:00
renovate[bot]
964d500bdd
fix(deps): update rust crate serde to 1.0.158 2023-03-20 13:17:08 +00:00
84168575a0 chore(nix): bump to crane 0.12.0 2023-03-20 05:25:43 +00:00
renovate[bot]
f2fa75a3f7
fix(deps): update rust crate dirs to v5 2023-03-19 16:17:04 +00:00
GitHub Actions
1f0badd338 flake.lock: Update
Flake lock file updates:

• Updated input 'advisory-db':
    'github:rustsec/advisory-db/b170dda7f803efa789489985bf4d1b1e324ab675' (2023-03-04)
  → 'github:rustsec/advisory-db/0888b44843e3c86db9fd56334c7f5261ea00dc19' (2023-03-15)
• Updated input 'crane':
    'github:ipetkov/crane/105e27adb70a9890986b6d543a67761cbc1964a2' (2023-03-04)
  → 'github:ipetkov/crane/5291dd0aa7a52d607fc952763ef60714e4c881d4' (2023-03-07)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)
  → 'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a1240f6b4a0bcc84fc48008b396a140d9f3638f6' (2023-03-05)
  → 'github:NixOS/nixpkgs/194c2aa446b2b059886bb68be15ef6736d5a8c31' (2023-03-16)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/695b8bb0af23d4ad3826fe7a372a5d677ad5c2bd' (2023-03-06)
  → 'github:oxalica/rust-overlay/32e4b1bf80cf99b7c72d2892198d40558828e6a1' (2023-03-19)
2023-03-19 06:02:01 +00:00
renovate[bot]
011ee01792
fix(deps): update rust crate clap to 4.1.11 2023-03-19 03:34:43 +00:00
renovate[bot]
8014bcc295
fix(deps): update rust crate serde to 1.0.157 2023-03-18 03:02:50 +00:00
renovate[bot]
2b46ffda42
fix(deps): update rust crate clap to 4.1.10 2023-03-18 00:43:05 +00:00
renovate[bot]
cc92802047
fix(deps): update rust crate clap to 4.1.9 2023-03-16 21:32:43 +00:00
renovate[bot]
49d784aee2
fix(deps): update rust crate serde to 1.0.156 2023-03-14 17:17:11 +00:00
47276cdc25 feat(ci): add GHA workflow for updating flake.lock every weekend 2023-03-14 10:40:28 +00:00
renovate[bot]
fcc6cdc17a
fix(deps): update rust crate toml to 0.7.3 2023-03-13 23:08:44 +00:00
renovate[bot]
e030ee5938
fix(deps): update rust crate serde to 1.0.155 2023-03-11 21:27:01 +00:00
renovate[bot]
fae83793d8
fix(deps): update rust crate serde to 1.0.154 2023-03-08 20:53:48 +00:00
renovate[bot]
8fa8b8b475
fix(deps): update rust crate serde to 1.0.153 2023-03-07 20:36:18 +00:00
d3d7914800 chore(release): bump twt to version 1.2.0 2023-03-06 20:42:33 +00:00
c8e4e4856e feat: put videos command behind a Cargo feature
Sadly Twitter appears to have broken it
2023-03-06 20:42:05 +00:00
87f7721348 fix(flakes): use filtered Rust sources 2023-03-06 19:53:30 +00:00
799599982f chore: add Nix result dir to gitignore 2023-03-06 19:53:30 +00:00
5bfafd62d6 fix: switch to cargo-audit 2023-03-06 19:53:30 +00:00
4f46b536de chore(nix): bump flake inputs 2023-03-06 19:53:24 +00:00
renovate[bot]
50b9a577fc
fix(deps): update rust crate tokio to 1.26.0 2023-03-02 01:58:48 +00:00
renovate[bot]
384ab6a6b3
fix(deps): update rust crate clap to 4.1.8 2023-02-28 18:12:30 +00:00
renovate[bot]
ddc5142751
fix(deps): update rust crate clap to 4.1.7 2023-02-27 21:12:45 +00:00
d583a2666d chore(git): add Alejandra reformat to blame ignore revs 2023-02-22 18:29:18 +00:00
80df0b0108 chore: reformat Nix files with alejandra 2023-02-22 18:25:02 +00:00
ca04c4696a chore(nix): bump flake inputs 2023-02-20 03:27:26 +00:00
22235c7dd6 chore(deps): bump cargo deps 2023-02-16 14:23:18 +00:00
06e2bee01f chore(nix): bump flake inputs 2023-02-16 14:14:27 +00:00
3a40de9966 chore(readme): add Built With Garnix badge 2023-02-16 14:13:02 +00:00
renovate[bot]
e22f2f0eab
fix(deps): update rust crate clap to 4.1.6 2023-02-15 18:24:27 +00:00
renovate[bot]
479a1379af
fix(deps): update rust crate toml to 0.7.2 2023-02-07 21:51:11 +00:00
renovate[bot]
83dfa4c84e
fix(deps): update rust crate egg-mode to 0.16.1 2023-02-03 05:23:58 +00:00
b9b12bea01
fix(readme): fix installer URLs 2023-02-02 20:45:45 +05:30
523dd0e8aa chore(release): bump twt to version 1.1.0 2023-02-02 11:07:28 +00:00
5862646aa3 chore: refresh README 2023-02-02 11:07:07 +00:00
805d22e68a fix(release): build both sh and pwsh installers 2023-02-02 10:50:59 +00:00
ee16546de2 feat(config): use a bearer token for auth
This allows us to easily sidestep the incoming API restrictions
and just use Twitter's own API keys.
2023-02-02 10:47:20 +00:00
fcec95cc7e feat(ci): also build installer scripts 2023-02-01 05:26:08 +00:00
83496e4c49 chore(release): bump twt to version 1.0.3 2023-01-31 20:51:43 +00:00
2acc76d6a3 feat: init cargo-dist 2023-01-31 20:46:06 +00:00
26 changed files with 2262 additions and 650 deletions

2
.cargo/audit.toml Normal file
View File

@ -0,0 +1,2 @@
[advisories]
ignore = ["RUSTSEC-2020-0071"]

2
.git-blame-ignore-revs Normal file
View File

@ -0,0 +1,2 @@
# Reformat Nix files with Alejandra
80df0b0108b23286ea2a8ff84ef82691784d0075

View File

@ -0,0 +1,14 @@
name: Update flake.lock
on:
workflow_dispatch:
schedule:
- cron: '0 6 * * 0'
permissions:
contents: write
jobs:
update-flake-lock:
uses: msfjarvis/shared-workflows/.github/workflows/update-flake-lock.yml@main
secrets:
github-token: ${{ secrets.GITHUB_TOKEN }}

211
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,211 @@
# Copyright 2022-2023, axodotdev
# SPDX-License-Identifier: MIT or Apache-2.0
#
# CI that:
#
# * checks for a Git Tag that looks like a release
# * creates a Github Release™ and fills in its text
# * builds artifacts with cargo-dist (executable-zips, installers)
# * uploads those artifacts to the Github Release™
#
# Note that the Github Release™ will be created before the artifacts,
# so there will be a few minutes where the release has no artifacts
# and then they will slowly trickle in, possibly failing. To make
# this more pleasant we mark the release as a "draft" until all
# artifacts have been successfully uploaded. This allows you to
# choose what to do with partial successes and avoids spamming
# anyone with notifications before the release is actually ready.
name: Release
permissions:
contents: write
# This task will run whenever you push a git tag that looks like a version
# like "v1", "v1.2.0", "v0.1.0-prerelease01", "my-app-v1.0.0", etc.
# The version will be roughly parsed as ({PACKAGE_NAME}-)?v{VERSION}, where
# PACKAGE_NAME must be the name of a Cargo package in your workspace, and VERSION
# must be a Cargo-style SemVer Version.
#
# If PACKAGE_NAME is specified, then we will create a Github Release™ for that
# package (erroring out if it doesn't have the given version or isn't cargo-dist-able).
#
# If PACKAGE_NAME isn't specified, then we will create a Github Release™ for all
# (cargo-dist-able) packages in the workspace with that version (this is mode is
# intended for workspaces with only one dist-able package, or with all dist-able
# packages versioned/released in lockstep).
#
# If you push multiple tags at once, separate instances of this workflow will
# spin up, creating an independent Github Release™ for each one.
#
# If there's a prerelease-style suffix to the version then the Github Release™
# will be marked as a prerelease.
on:
push:
tags:
- '*-?v[0-9]+*'
jobs:
# Create the Github Release™ so the packages have something to be uploaded to
create-release:
runs-on: ubuntu-latest
outputs:
has-releases: ${{ steps.create-release.outputs.has-releases }}
releases: ${{ steps.create-release.outputs.releases }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install cargo-dist
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.2.0-prerelease.5/cargo-dist-installer.sh | sh"
- id: create-release
run: |
cargo dist plan --tag=${{ github.ref_name }} --output-format=json > dist-manifest.json
echo "dist plan ran successfully"
cat dist-manifest.json
# Create the Github Release™ based on what cargo-dist thinks it should be
ANNOUNCEMENT_TITLE=$(jq --raw-output ".announcement_title" dist-manifest.json)
IS_PRERELEASE=$(jq --raw-output ".announcement_is_prerelease" dist-manifest.json)
jq --raw-output ".announcement_github_body" dist-manifest.json > new_dist_announcement.md
gh release create ${{ github.ref_name }} --draft --prerelease="$IS_PRERELEASE" --title="$ANNOUNCEMENT_TITLE" --notes-file=new_dist_announcement.md
echo "created announcement!"
# Upload the manifest to the Github Release™
gh release upload ${{ github.ref_name }} dist-manifest.json
echo "uploaded manifest!"
# Disable all the upload-artifacts tasks if we have no actual releases
HAS_RELEASES=$(jq --raw-output ".releases != null" dist-manifest.json)
echo "has-releases=$HAS_RELEASES" >> "$GITHUB_OUTPUT"
echo "releases=$(jq --compact-output ".releases" dist-manifest.json)" >> "$GITHUB_OUTPUT"
# Build and packages all the platform-specific things
upload-local-artifacts:
# Let the initial task tell us to not run (currently very blunt)
needs: create-release
if: ${{ needs.create-release.outputs.has-releases == 'true' }}
strategy:
fail-fast: false
matrix:
# For these target platforms
include:
- os: "macos-11"
dist-args: "--artifacts=local --target=aarch64-apple-darwin"
install-dist: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.2.0-prerelease.5/cargo-dist-installer.sh | sh"
- os: "macos-11"
dist-args: "--artifacts=local --target=x86_64-apple-darwin"
install-dist: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.2.0-prerelease.5/cargo-dist-installer.sh | sh"
- os: "windows-2019"
dist-args: "--artifacts=local --target=x86_64-pc-windows-msvc"
install-dist: "irm https://github.com/axodotdev/cargo-dist/releases/download/v0.2.0-prerelease.5/cargo-dist-installer.ps1 | iex"
- os: "ubuntu-20.04"
dist-args: "--artifacts=local --target=x86_64-unknown-linux-gnu"
install-dist: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.2.0-prerelease.5/cargo-dist-installer.sh | sh"
runs-on: ${{ matrix.os }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install cargo-dist
run: ${{ matrix.install-dist }}
- name: Run cargo-dist
# This logic is a bit janky because it's trying to be a polyglot between
# powershell and bash since this will run on windows, macos, and linux!
# The two platforms don't agree on how to talk about env vars but they
# do agree on 'cat' and '$()' so we use that to marshal values between commands.
run: |
# Actually do builds and make zips and whatnot
cargo dist build --tag=${{ github.ref_name }} --output-format=json ${{ matrix.dist-args }} > dist-manifest.json
echo "dist ran successfully"
cat dist-manifest.json
# Parse out what we just built and upload it to the Github Release™
jq --raw-output ".artifacts[]?.path | select( . != null )" dist-manifest.json > uploads.txt
echo "uploading..."
cat uploads.txt
gh release upload ${{ github.ref_name }} $(cat uploads.txt)
echo "uploaded!"
# Build and packages all the platform-agnostic(ish) things
upload-global-artifacts:
needs: upload-local-artifacts
runs-on: "ubuntu-22.04"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install cargo-dist
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.2.0-prerelease.5/cargo-dist-installer.sh | sh"
# Get all the local artifacts for the global tasks to use (for e.g. checksums)
- name: Fetch local artifacts
run: |
gh release download ${{ github.ref_name }} --dir target/distrib/
- name: Run cargo-dist
# This logic is a bit janky because it's trying to be a polyglot between
# powershell and bash since this will run on windows, macos, and linux!
# The two platforms don't agree on how to talk about env vars but they
# do agree on 'cat' and '$()' so we use that to marshal values between commands.
run: |
cargo dist build --tag=${{ github.ref_name }} --output-format=json "--artifacts=global" > dist-manifest.json
echo "dist ran successfully"
cat dist-manifest.json
# Parse out what we just built and upload it to the Github Release™
jq --raw-output ".artifacts[]?.path | select( . != null )" dist-manifest.json > uploads.txt
echo "uploading..."
cat uploads.txt
gh release upload ${{ github.ref_name }} $(cat uploads.txt)
echo "uploaded!"
upload-homebrew-formula:
needs: [create-release, upload-global-artifacts]
runs-on: "ubuntu-22.04"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASES: ${{ needs.create-release.outputs.releases }}
GITHUB_USER: "axo bot"
GITHUB_EMAIL: "admin+bot@axo.dev"
steps:
- uses: actions/checkout@v3
with:
repository: "msfjarvis/homebrew-tap"
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
# So we have access to the formula
- name: Fetch local artifacts
run: |
gh release download ${{ github.ref_name }} --dir Formula --repo ${GITHUB_REPOSITORY} --clobber
- name: Commit formula files
run: |
git config --global user.name "${GITHUB_USER}"
git config --global user.email "${GITHUB_EMAIL}"
for release in $(echo "$RELEASES" | jq --compact-output '.[]'); do
name=$(echo "$release" | jq .app_name --raw-output)
version=$(echo "$release" | jq .app_version --raw-output)
git add Formula/${name}.rb
git commit -m "${name} ${version}"
done
git push
# Mark the Github Release™ as a non-draft now that everything has succeeded!
publish-release:
# Only run after all the other tasks, but it's ok if upload-artifacts was skipped
needs: [create-release, upload-local-artifacts, upload-global-artifacts]
if: ${{ always() && needs.create-release.result == 'success' && (needs.upload-local-artifacts.result == 'skipped' || needs.upload-local-artifacts.result == 'success') && (needs.upload-global-artifacts.result == 'skipped' || needs.upload-global-artifacts.result == 'success') }}
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: mark release as non-draft
run: |
gh release edit ${{ github.ref_name }} --draft=false

1
.gitignore vendored
View File

@ -1 +1,2 @@
/target
/result

807
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
[package]
name = "twt"
version = "1.0.2"
version = "1.2.5"
edition = "2021"
authors = ["Harsh Shandilya <me@msfjarvis.dev>"]
license = "MIT/Apache-2.0"
@ -13,13 +13,47 @@ publish = false
include = ["src/main.rs", "LICENSE-*", "README.md"]
[dependencies]
clap = { version = "4.1.4", features = [ "color", "deprecated", "derive", "env" ] }
clap = { version = "4.4.0", features = [
"color",
"deprecated",
"derive",
"env",
] }
color-eyre = { version = "0.6.2", default-features = false }
dirs = "4.0.0"
egg-mode = { version = "0.16.0", features = ["rustls_webpki"], default-features = false }
dirs = "5.0.1"
egg-mode = { version = "0.16.1", features = [
"rustls_webpki",
], default-features = false }
mime = "0.3"
mime_guess = "2.0.4"
serde = { version = "1.0.152", features = ["serde_derive"] }
tokio = { version = "1.25.0", features = ["rt-multi-thread", "macros"] }
toml = "0.7.1"
url = "2.3.1"
serde = "1.0.188"
serde_derive = "1.0.188"
tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros"] }
toml = "0.7.6"
url = "2.4.0"
[features]
videos = []
# generated by 'cargo dist init'
[profile.dist]
inherits = "release"
debug = true
split-debuginfo = "packed"
# Config for 'cargo dist'
[workspace.metadata.dist]
# The preferred cargo-dist version to use in CI (Cargo.toml SemVer syntax)
cargo-dist-version = "0.2.0-prerelease.5"
# CI backends to support (see 'cargo dist generate-ci')
ci = ["github"]
# The installers to generate for each app
installers = ["shell", "powershell", "homebrew"]
# A GitHub repo to push Homebrew formulas to
tap = "msfjarvis/homebrew-tap"
# Target platforms to build apps for (Rust target-triple syntax)
targets = ["x86_64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", "aarch64-apple-darwin"]
# Publish jobs to run in CI
publish-jobs = ["homebrew"]
# Whether to consider the binaries in a package for distribution (defaults true)
dist = true

View File

@ -1,48 +1,50 @@
# twt [![No Maintenance Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/)
> [!WARNING]
> Due to Twitter's complete decimation of its API, `twt` no longer works for most use cases and is thus not going to be maintained going forward.
# twt [![Built with Garnix](https://img.shields.io/endpoint?url=https%3A%2F%2Fgarnix.io%2Fapi%2Fbadges%2Fmsfjarvis%2Ftwt%3Fbranch%3Dmain)](https://garnix.io)
CLI tool to extract metadata from tweets
## Usage
## Install
There are unlikely to ever be published binaries for this, so this requires a Rust development environment set up locally.
Check out the [website](https://msfjarvis.github.io/twt/)
```shell
git clone https://github.com/msfjarvis/twitter-images.git
cd twitter-images
cargo build --release
## Setup
This tool requires Twitter consumer keys to function. Twitter is moving to [disallow free usage of the API](https://fxtwitter.com/twitterdev/status/1621026986784337922), so you will have to steal their own keys to work around this.
`twt` picks up keys from `$CONFIG_DIR/twt/config.toml` (see [here](https://docs.rs/dirs/latest/dirs/fn.config_dir.html) for your platform's interpretation of `$CONFIG_DIR`)
```toml
# config.toml
consumer_key = "totally_real_key"
consumer_key_secret = "h4xx0r"
```
The tool is built to avoid interactive login and relies on the presence of a bunch of environment variables at build-time that require a Twitter developer account and a project created on the account to obtain.
## Usage
- `CONSUMER_KEY` - The consumer API key for the project.
- `CONSUMER_KEY_SECRET` - The consumer secret for the project.
- `ACCESS_TOKEN` - Authentication access token for your user, for the project.
- `ACCESS_TOKEN_SECRET` - Access secret for your user.
### Get image links
## Examples
```
twt images --username archillect
```
- **Get image links**
### Get video links
```sh
twt images --username archillect
```
```
twt videos --username imgur
```
- **Get video links**
### Set the maximum tweets to check
```sh
twt videos --username imgur
```
```
twt images --username archillect --max-amount 512
```
- **Set the maximum tweets to check**
### Get all links
```sh
twt images --username archillect --max-amount 512
```
- **Get all links**
```sh
twt links --username AITA_online --host bit.ly
```
```
twt links --username AITA_online --host bit.ly
```
For more help run: `twt -h`.

View File

@ -1,6 +1,8 @@
(import (let lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in fetchTarball {
url =
"https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}) { src = ./.; }).defaultNix
(import (let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/nix-community/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}) {src = ./.;})
.defaultNix

View File

@ -1,57 +0,0 @@
targets = [
{ triple = "x86_64-unknown-linux-gnu" },
{ triple = "aarch64-unknown-linux-gnu" },
{ triple = "x86_64-unknown-linux-musl" },
{ triple = "aarch64-apple-darwin" },
{ triple = "x86_64-apple-darwin" },
{ triple = "x86_64-pc-windows-msvc" },
]
[advisories]
db-path = "~/.cargo/advisory-db"
db-urls = ["https://github.com/rustsec/advisory-db"]
vulnerability = "deny"
unmaintained = "warn"
yanked = "warn"
notice = "warn"
ignore = [
"RUSTSEC-2020-0071", # same localtime_r vulnerability, but for the time crate
]
[licenses]
unlicensed = "deny"
allow = [
"MIT",
"Apache-2.0",
]
copyleft = "allow"
allow-osi-fsf-free = "neither"
default = "deny"
confidence-threshold = 0.8
exceptions = [
{ allow = ["BSD-3-Clause"], name = "subtle", version = "*" },
{ allow = ["MIT", "ISC", "OpenSSL"], name = "ring", version = "*" },
{ allow = ["ISC"], name = "untrusted", version = "*" },
{ allow = ["ISC"], name = "webpki", version = "*" },
{ allow = ["Unicode-DFS-2016"], name = "unicode-ident", version = "*" },
]
[[licenses.clarify]]
name = "ring"
version = "*"
expression = "MIT AND ISC AND OpenSSL"
license-files = [
{ path = "LICENSE", hash = 0xbd0eed23 }
]
[licenses.private]
ignore = false
[bans]
multiple-versions = "deny"
wildcards = "deny"
highlight = "all"
[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-git = []

245
docs/artifacts.js Normal file
View File

@ -0,0 +1,245 @@
/* Code modified from the blender website
* https://www.blender.org/wp-content/themes/bthree/assets/js/get_os.js?x82196
*/
let options = {
windows64: "x86_64-pc-windows",
windows32: "i686-pc-windows",
windowsArm: "aarch64-pc-windows",
mac64: "x86_64-apple",
mac32: "i686-apple",
macSilicon: "aarch64-apple",
linux64: "x86_64-unknown-linux",
linux32: "i686-unknown-linux",
linuxArm: "aarch64-unknown-linux",
// ios: "ios",
// android: "linux-android",
// freebsd: "freebsd",
};
function isAppleSilicon() {
try {
var glcontext = document.createElement("canvas").getContext("webgl");
var debugrenderer = glcontext
? glcontext.getExtension("WEBGL_debug_renderer_info")
: null;
var renderername =
(debugrenderer &&
glcontext.getParameter(debugrenderer.UNMASKED_RENDERER_WEBGL)) ||
"";
if (renderername.match(/Apple M/) || renderername.match(/Apple GPU/)) {
return true;
}
return false;
} catch (e) {}
}
function getOS() {
var OS = options.windows64.default;
var userAgent = navigator.userAgent;
var platform = navigator.platform;
if (navigator.appVersion.includes("Win")) {
if (
!userAgent.includes("Windows NT 5.0") &&
!userAgent.includes("Windows NT 5.1") &&
(userAgent.indexOf("Win64") > -1 ||
platform == "Win64" ||
userAgent.indexOf("x86_64") > -1 ||
userAgent.indexOf("x86_64") > -1 ||
userAgent.indexOf("amd64") > -1 ||
userAgent.indexOf("AMD64") > -1 ||
userAgent.indexOf("WOW64") > -1)
) {
OS = options.windows64;
} else {
if (
window.external &&
window.external.getHostEnvironmentValue &&
window.external
.getHostEnvironmentValue("os-architecture")
.includes("ARM64")
) {
OS = options.windowsArm;
} else {
try {
var canvas = document.createElement("canvas");
var gl = canvas.getContext("webgl");
var debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
if (renderer.includes("Qualcomm")) OS = options.windowsArm;
} catch (e) {}
}
}
}
//MacOS, MacOS X, macOS
if (navigator.appVersion.includes("Mac")) {
if (
navigator.userAgent.includes("OS X 10.5") ||
navigator.userAgent.includes("OS X 10.6")
) {
OS = options.mac32;
} else {
OS = options.mac64;
const isSilicon = isAppleSilicon();
if (isSilicon) {
OS = options.macSilicon;
}
}
}
// linux
if (platform.includes("Linux")) {
OS = options.linux64;
// FIXME: Can we find out whether linux 32-bit or ARM are used?
}
// if (
// userAgent.includes("iPad") ||
// userAgent.includes("iPhone") ||
// userAgent.includes("iPod")
// ) {
// OS = options.ios;
// }
// if (platform.toLocaleLowerCase().includes("freebsd")) {
// OS = options.freebsd;
// }
return OS;
}
let os = getOS();
window.os = os;
// Unhide and hydrate selector with events
const archSelect = document.querySelector(".arch-select");
if (archSelect) {
archSelect.classList.remove("hidden");
const selector = document.querySelector("#install-arch-select");
if (selector) {
selector.addEventListener("change", onArchChange);
}
}
// Hydrate tab buttons with events
Array.from(document.querySelectorAll(".install-tab[data-id]")).forEach((tab) => {
tab.addEventListener("click", onTabClick);
});
function onArchChange(evt) {
// Get target
const target = evt.currentTarget.value;
// Find corresponding installer lists
const newContentEl = document.querySelector(`.arch[data-arch=${target}]`);
const oldContentEl = document.querySelector(`.arch[data-arch]:not(.hidden)`);
// Hide old content element (if applicable)
if (oldContentEl) {
oldContentEl.classList.add("hidden");
}
// Show new content element
newContentEl.classList.remove("hidden");
// Show the first tab's content if nothing was selected before
if (newContentEl.querySelectorAll(".install-tab.selected").length === 0) {
const firstContentChild = newContentEl.querySelector(".install-content:first-of-type");
const firstTabChild = newContentEl.querySelector(".install-tab:first-of-type");
firstContentChild.classList.remove("hidden");
if (firstTabChild) {
firstTabChild.classList.add("selected");
}
}
// Hide "no OS detected" message
const noDetectEl = document.querySelector(".no-autodetect");
noDetectEl.classList.add("hidden");
// Hide Mac hint
document.querySelector(".mac-switch").classList.add("hidden");
}
function onTabClick(evt) {
// Get target and ID
const {triple, id} = evt.currentTarget.dataset;
if (triple) {
// Find corresponding content elements
const newContentEl = document.querySelector(`.install-content[data-id="${String(id)}"][data-triple=${triple}]`);
const oldContentEl = document.querySelector(`.install-content[data-triple=${triple}][data-id]:not(.hidden)`);
// Find old tab to unselect
const oldTabEl = document.querySelector(`.install-tab[data-triple=${triple}].selected`);
// Hide old content element
if (oldContentEl && oldTabEl) {
oldContentEl.classList.add("hidden");
oldTabEl.classList.remove("selected");
}
// Unhide new content element
newContentEl.classList.remove("hidden");
// Select new tab element
evt.currentTarget.classList.add("selected");
}
}
const allPlatforms = Array.from(document.querySelectorAll(`.arch[data-arch]`));
let hit = allPlatforms.find(
(a) => {
// Show Intel Mac downloads if no M1 Mac downloads are available
if (
a.attributes["data-arch"].value.includes(options.mac64) &&
os.includes(options.macSilicon) &&
!allPlatforms.find(p => p.attributes["data-arch"].value.includes(options.macSilicon))) {
// Unhide hint
document.querySelector(".mac-switch").classList.remove("hidden");
return true;
}
return a.attributes["data-arch"].value.includes(os);
}
);
if (hit) {
hit.classList.remove("hidden");
const selectEl = document.querySelector("#install-arch-select");
selectEl.value = hit.dataset.arch;
const firstContentChild = hit.querySelector(".install-content:first-of-type");
const firstTabChild = hit.querySelector(".install-tab:first-of-type");
firstContentChild.classList.remove("hidden");
if (firstTabChild) {
firstTabChild.classList.add("selected");
}
} else {
const noDetectEl = document.querySelector(".no-autodetect");
if (noDetectEl) {
const noDetectElDetails = document.querySelector(".no-autodetect-details");
if (noDetectElDetails) {
noDetectElDetails.innerHTML = `We detected you're on ${os} but there don't seem to be installers for that. `
}
noDetectEl.classList.remove("hidden");
}
}
let copyButtons = Array.from(document.querySelectorAll("[data-copy]"));
if (copyButtons.length) {
copyButtons.forEach(function (element) {
element.addEventListener("click", () => {
navigator.clipboard.writeText(element.attributes["data-copy"].value);
});
});
}
// Toggle for pre releases
const checkbox = document.getElementById("show-prereleases");
if (checkbox) {
checkbox.addEventListener("click", () => {
const all = document.getElementsByClassName("pre-release");
if (all) {
for (var item of all) {
item.classList.toggle("hidden");
}
}
});
}

213
docs/artifacts/index.html Normal file
View File

@ -0,0 +1,213 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>twt</title>
<meta property="og:url" content="https://github.com/msfjarvis/twt" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Tools for extracting metadata from tweets" />
<meta property="og:description" content="Tools for extracting metadata from tweets" />
<meta property="og:type" content="website" />
<meta property="og:title" content="twt" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/twt/oranda-v0.3.0-prerelease.4.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/msfjarvis/twt">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">twt</h1>
<nav class="nav">
<ul>
<li><a href="/twt/">Home</a></li>
<li><a href="/twt/artifacts/">Install</a></li>
</ul>
</nav>
</header>
<div>
<div class="package-managers-downloads">
<div>
<h3>nix flakes</h3>
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">nix profile install github:msfjarvis/twt</span></pre>
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/twt">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
</div>
</div>
<div>
<h3>powershell</h3>
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">irm https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.ps1 </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">iex</span></pre>
<button class="button copy-clipboard-button primary" data-copy="irm https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.ps1 | iex">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
<a class="button primary" href="/twt/installer.ps1.txt">Source</a>
</div>
</div>
<div>
<h3>shell</h3>
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">&#39;</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">&#39; --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh | sh">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
<a class="button primary" href="/twt/installer.sh.txt">Source</a>
</div>
</div>
</div>
<div>
<h3>Downloads</h3>
<table class="artifacts-table">
<tbody>
<tr>
<th>File</th>
<th>Platform</th>
</tr>
<tr>
<td><a href="https://github.com/msfjarvis/twt/releases/download/v1.2.4/twt-v1.2.4-x86_64-apple-darwin.tar.xz">twt-v1.2.4-x86_64-apple-darwin.tar.xz</a></td>
<td>
macOS Intel
</td>
</tr>
<tr>
<td><a href="https://github.com/msfjarvis/twt/releases/download/v1.2.4/twt-v1.2.4-x86_64-pc-windows-msvc.zip">twt-v1.2.4-x86_64-pc-windows-msvc.zip</a></td>
<td>
Windows x64
</td>
</tr>
<tr>
<td><a href="https://github.com/msfjarvis/twt/releases/download/v1.2.4/twt-v1.2.4-x86_64-unknown-linux-gnu.tar.xz">twt-v1.2.4-x86_64-unknown-linux-gnu.tar.xz</a></td>
<td>
Linux x64
</td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/msfjarvis/twt"><div class="github-icon" aria-hidden="true"></div></a>
<span>
twt, MIT/Apache-2.0
</span>
</footer>
</div>
<script src="/twt/artifacts.js"></script>
</body>
</html>

510
docs/index.html Normal file
View File

@ -0,0 +1,510 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>twt</title>
<meta property="og:url" content="https://github.com/msfjarvis/twt" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Tools for extracting metadata from tweets" />
<meta property="og:description" content="Tools for extracting metadata from tweets" />
<meta property="og:type" content="website" />
<meta property="og:title" content="twt" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/twt/oranda-v0.3.0-prerelease.4.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/msfjarvis/twt">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">twt</h1>
<nav class="nav">
<ul>
<li><a href="/twt/">Home</a></li>
<li><a href="/twt/artifacts/">Install</a></li>
</ul>
</nav>
</header>
<div class="artifacts" data-tag="v1.2.4">
<div class="artifact-header target">
<h4>Install v1.2.4</h4>
<div><small class="published-date">Published on Aug 16 2023 at 09:55 UTC</small></div>
<ul class="arches">
<li class="arch hidden" data-arch="x86_64-unknown-linux-gnu">
<ul class="tabs">
<li class="install-tab" data-id="2" data-triple="x86_64-unknown-linux-gnu">
shell
</li>
<li class="install-tab" data-id="0" data-triple="x86_64-unknown-linux-gnu">
nix flakes
</li>
<li class="install-tab" data-id="5" data-triple="x86_64-unknown-linux-gnu">
tarball
</li>
</ul>
<ul class="contents">
<li data-id="2" data-triple="x86_64-unknown-linux-gnu" class="install-content">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">&#39;</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">&#39; --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh | sh">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
<a class="button primary" href="/twt/installer.sh.txt">Source</a>
</div>
</li>
<li data-id="0" data-triple="x86_64-unknown-linux-gnu" class="install-content hidden">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">nix profile install github:msfjarvis/twt</span></pre>
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/twt">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
</div>
</li>
<li data-id="5" data-triple="x86_64-unknown-linux-gnu" class="install-content hidden">
<div class="download-wrapper">
<a href="https://github.com/msfjarvis/twt/releases/download/v1.2.4/twt-v1.2.4-x86_64-unknown-linux-gnu.tar.xz">
<button class="button primary">
<span>Download</span>
<span class="button-subtitle">twt-v1.2.4-x86_64-unknown-linux-gnu.tar.xz</span>
</button>
</a>
</div>
</li>
</ul>
</li>
<li class="arch hidden" data-arch="x86_64-apple-darwin">
<ul class="tabs">
<li class="install-tab" data-id="2" data-triple="x86_64-apple-darwin">
shell
</li>
<li class="install-tab" data-id="0" data-triple="x86_64-apple-darwin">
nix flakes
</li>
<li class="install-tab" data-id="3" data-triple="x86_64-apple-darwin">
tarball
</li>
</ul>
<ul class="contents">
<li data-id="2" data-triple="x86_64-apple-darwin" class="install-content">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">&#39;</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">&#39; --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh | sh">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
<a class="button primary" href="/twt/installer.sh.txt">Source</a>
</div>
</li>
<li data-id="0" data-triple="x86_64-apple-darwin" class="install-content hidden">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">nix profile install github:msfjarvis/twt</span></pre>
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/twt">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
</div>
</li>
<li data-id="3" data-triple="x86_64-apple-darwin" class="install-content hidden">
<div class="download-wrapper">
<a href="https://github.com/msfjarvis/twt/releases/download/v1.2.4/twt-v1.2.4-x86_64-apple-darwin.tar.xz">
<button class="button primary">
<span>Download</span>
<span class="button-subtitle">twt-v1.2.4-x86_64-apple-darwin.tar.xz</span>
</button>
</a>
</div>
</li>
</ul>
</li>
<li class="arch hidden" data-arch="aarch64-apple-darwin">
<ul class="tabs">
<li class="install-tab" data-id="2" data-triple="aarch64-apple-darwin">
shell
</li>
<li class="install-tab" data-id="0" data-triple="aarch64-apple-darwin">
nix flakes
</li>
</ul>
<ul class="contents">
<li data-id="2" data-triple="aarch64-apple-darwin" class="install-content">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">curl</span><span style="color:#89ddff;"> --</span><span style="color:#f78c6c;">proto </span><span style="color:#89ddff;">&#39;</span><span style="color:#c3e88d;">=https</span><span style="color:#89ddff;">&#39; --</span><span style="color:#f78c6c;">tlsv1</span><span style="color:#82aaff;">.2</span><span style="color:#89ddff;"> -</span><span style="color:#f78c6c;">LsSf</span><span style="color:#82aaff;"> https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">sh</span></pre>
<button class="button copy-clipboard-button primary" data-copy="curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.sh | sh">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
<a class="button primary" href="/twt/installer.sh.txt">Source</a>
</div>
</li>
<li data-id="0" data-triple="aarch64-apple-darwin" class="install-content hidden">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">nix profile install github:msfjarvis/twt</span></pre>
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/twt">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
</div>
</li>
</ul>
</li>
<li class="arch hidden" data-arch="x86_64-pc-windows-msvc">
<ul class="tabs">
<li class="install-tab" data-id="1" data-triple="x86_64-pc-windows-msvc">
powershell
</li>
<li class="install-tab" data-id="0" data-triple="x86_64-pc-windows-msvc">
nix flakes
</li>
<li class="install-tab" data-id="4" data-triple="x86_64-pc-windows-msvc">
zip
</li>
</ul>
<ul class="contents">
<li data-id="1" data-triple="x86_64-pc-windows-msvc" class="install-content">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">irm https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.ps1 </span><span style="color:#89ddff;">| </span><span style="color:#82aaff;">iex</span></pre>
<button class="button copy-clipboard-button primary" data-copy="irm https://github.com/msfjarvis/twt/releases/download/v1.2.4/installer.ps1 | iex">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
<a class="button primary" href="/twt/installer.ps1.txt">Source</a>
</div>
</li>
<li data-id="0" data-triple="x86_64-pc-windows-msvc" class="install-content hidden">
<div class="install-code-wrapper">
<pre style="background-color:#263238;">
<span style="color:#82aaff;">nix profile install github:msfjarvis/twt</span></pre>
<button class="button copy-clipboard-button primary" data-copy="nix profile install github:msfjarvis/twt">
<svg stroke='currentColor' fill='currentColor' stroke-width='0' viewBox='0 0 20 20' height='1em' width='1em' xmlns='http://www.w3.org/2000/svg'><path d='M8 2a1 1 0 000 2h2a1 1 0 100-2H8z'></path><path d='M3 5a2 2 0 012-2 3 3 0 003 3h2a3 3 0 003-3 2 2 0 012 2v6h-4.586l1.293-1.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L10.414 13H15v3a2 2 0 01-2 2H5a2 2 0 01-2-2V5zM15 11h2a1 1 0 110 2h-2v-2z'></path></svg>
</button>
</div>
</li>
<li data-id="4" data-triple="x86_64-pc-windows-msvc" class="install-content hidden">
<div class="download-wrapper">
<a href="https://github.com/msfjarvis/twt/releases/download/v1.2.4/twt-v1.2.4-x86_64-pc-windows-msvc.zip">
<button class="button primary">
<span>Download</span>
<span class="button-subtitle">twt-v1.2.4-x86_64-pc-windows-msvc.zip</span>
</button>
</a>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="no-autodetect hidden">
<span class="no-autodetect-details">We weren't able to detect your OS.</span>
</div>
<noscript>
<a href="/twt/artifacts/">View all installation options</a>
</noscript>
<div class="mac-switch hidden">This project doesn't offer Apple Silicon downloads, but you can run Intel macOS binaries via Rosetta 2.</div>
<div class="bottom-options ">
<a href="/twt/artifacts/" class="backup-download primary">View all installation options</a>
<div class="arch-select hidden">
<select id="install-arch-select">
<option disabled="true" selected="true" value=""></option>
<option value="x86_64-unknown-linux-gnu">Linux x64</option>
<option value="aarch64-apple-darwin">macOS Apple Silicon</option>
<option value="x86_64-apple-darwin">macOS Intel</option>
<option value="x86_64-pc-windows-msvc">Windows x64</option>
</select>
</div>
</div>
</div>
<a href="/twt/artifacts/" class="button mobile-download primary">View all installation options</a>
<h1>twt <a href="http://unmaintained.tech/" rel="noopener noreferrer"><img src="http://unmaintained.tech/badge.svg" alt="No Maintenance Intended"></a> <a href="https://garnix.io" rel="noopener noreferrer"><img src="https://img.shields.io/static/v1?label=Built%20with&amp;message=Garnix&amp;color=blue&amp;style=flat&amp;logo=nixos&amp;link=https://garnix.io&amp;labelColor=111212" alt="Built with Garnix"></a></h1>
<p>CLI tool to extract metadata from tweets</p>
<h2>Install</h2>
<p>Check out the <a href="https://msfjarvis.github.io/twt/" rel="noopener noreferrer">website</a></p>
<h2>Setup</h2>
<p>This tool requires Twitter consumer keys to function. Twitter is moving to <a href="https://fxtwitter.com/twitterdev/status/1621026986784337922" rel="noopener noreferrer">disallow free usage of the API</a>, so you will have to steal their own keys to work around this.</p>
<p><code>twt</code> picks up keys from <code>$CONFIG_DIR/twt/config.toml</code> (see <a href="https://docs.rs/dirs/latest/dirs/fn.config_dir.html" rel="noopener noreferrer">here</a> for your platform's interpretation of <code>$CONFIG_DIR</code>)</p>
<pre style="background-color:#263238;"><span style="font-style:italic;color:#546e7a;"># config.toml
</span><span style="color:#f07178;">consumer_key </span><span style="color:#89ddff;">= "</span><span style="color:#c3e88d;">totally_real_key</span><span style="color:#89ddff;">"
</span><span style="color:#f07178;">consumer_key_secret </span><span style="color:#89ddff;">= "</span><span style="color:#c3e88d;">h4xx0r</span><span style="color:#89ddff;">"
</span></pre>
<h2>Usage</h2>
<h3>Get image links</h3>
<pre style="background-color:#263238;"><span style="color:#eeffff;">twt images --username archillect
</span></pre>
<h3>Get video links</h3>
<pre style="background-color:#263238;"><span style="color:#eeffff;">twt videos --username imgur
</span></pre>
<h3>Set the maximum tweets to check</h3>
<pre style="background-color:#263238;"><span style="color:#eeffff;">twt images --username archillect --max-amount 512
</span></pre>
<h3>Get all links</h3>
<pre style="background-color:#263238;"><span style="color:#eeffff;">twt links --username AITA_online --host bit.ly
</span></pre>
<p>For more help run: <code>twt -h</code>.</p>
</main>
</div>
<footer>
<a href="https://github.com/msfjarvis/twt"><div class="github-icon" aria-hidden="true"></div></a>
<span>
twt, MIT/Apache-2.0
</span>
</footer>
</div>
<script src="/twt/artifacts.js"></script>
</body>
</html>

86
docs/installer.ps1.txt Normal file
View File

@ -0,0 +1,86 @@
# Licensed under the MIT license
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.
# This is just a little script that can be downloaded from the internet to
# install an app. It downloads the tarball from GitHub releases,
# extracts it and runs `??? TODO ???`. This means that you can pass
# arguments to this shell script and they will be passed along to the installer.
$repo = 'https://github.com/msfjarvis/twt'
$app_name = 'twt'
$package_version = 'v1.2.4'
function Install-Binary($install_args) {
$old_erroractionpreference = $ErrorActionPreference
$ErrorActionPreference = 'stop'
Initialize-Environment
# If the VERSION env var is set, we use it instead
# of the version defined in the cargo.toml
$download_version = if (Test-Path env:VERSION) {
$Env:VERSION
} else {
$package_version
}
$exe = Download($download_version)
Invoke-Installer "$exe" "$install_args"
$ErrorActionPreference = $old_erroractionpreference
}
function Download($version) {
$url = "$repo/releases/download/$version/$app_name-$version-x86_64-pc-windows-msvc.zip"
"Downloading $app_name from $url" | Out-Host
$tmp = New-Temp-Dir
$dir_path = "$tmp\$app_name.zip"
$wc = New-Object Net.Webclient
$wc.downloadFile($url, $dir_path)
Expand-Archive -Path $dir_path -DestinationPath "$tmp"
return "$tmp\$app_name.exe"
}
function Invoke-Installer($tmp, $install_args) {
$bin_dir = New-Item -Force -ItemType Directory -Path (Join-Path $HOME ".cargo\bin")
Copy-Item "$exe" -Destination "$bin_dir"
Remove-Item "$tmp" -Recurse -Force
}
function Initialize-Environment() {
If (($PSVersionTable.PSVersion.Major) -lt 5) {
Write-Error "PowerShell 5 or later is required to install $app_name."
Write-Error "Upgrade PowerShell: https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell"
break
}
# show notification to change execution policy:
$allowedExecutionPolicy = @('Unrestricted', 'RemoteSigned', 'ByPass')
If ((Get-ExecutionPolicy).ToString() -notin $allowedExecutionPolicy) {
Write-Error "PowerShell requires an execution policy in [$($allowedExecutionPolicy -join ", ")] to run $app_name."
Write-Error "For example, to set the execution policy to 'RemoteSigned' please run :"
Write-Error "'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'"
break
}
# GitHub requires TLS 1.2
If ([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -notcontains 'Tls12') {
Write-Error "Installing $app_name requires at least .NET Framework 4.5"
Write-Error "Please download and install it first:"
Write-Error "https://www.microsoft.com/net/download"
break
}
}
function New-Temp-Dir() {
[CmdletBinding(SupportsShouldProcess)]
param()
$parent = [System.IO.Path]::GetTempPath()
[string] $name = [System.Guid]::NewGuid()
New-Item -ItemType Directory -Path (Join-Path $parent $name)
}
Install-Binary "$Args"

243
docs/installer.sh.txt Normal file
View File

@ -0,0 +1,243 @@
#!/bin/bash
#
# Licensed under the MIT license
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.
# This is just a little script that can be downloaded from the internet to
# install $APP_NAME. It downloads the tarball from GitHub releases,
# extracts it and runs `???TODO???`. This means that you can pass
# arguments to this shell script and they will be passed along to the installer.
set -u
REPO="https://github.com/msfjarvis/twt"
APP_NAME="twt"
BINARY_DOWNLOAD_PREFIX="$REPO/releases/download"
PACKAGE_VERSION="v1.2.4"
download_binary_and_run_installer() {
downloader --check
need_cmd mktemp
need_cmd chmod
need_cmd mkdir
need_cmd rm
need_cmd rmdir
need_cmd tar
need_cmd which
need_cmd dirname
need_cmd awk
need_cmd cut
# if $VERSION isn't provided or has 0 length, use version from cargo.toml
# ${VERSION:-} checks if version exists, and if doesn't uses the default
# which is after the :-, which in this case is empty. -z checks for empty str
if [ -z ${VERSION:-} ]; then
# VERSION is either not set or empty
DOWNLOAD_VERSION=$PACKAGE_VERSION
else
# VERSION set and not empty
DOWNLOAD_VERSION=$VERSION
fi
get_architecture || return 1
local _arch="$RETVAL"
assert_nz "$_arch" "arch"
local _ext=""
local _zip_ext=".tar.xz"
case "$_arch" in
*windows*)
_ext=".exe"
_zip_ext=".zip"
;;
esac
local _tardir="$APP_NAME-$DOWNLOAD_VERSION-${_arch}"
local _url="$BINARY_DOWNLOAD_PREFIX/$DOWNLOAD_VERSION/${_tardir}${_zip_ext}"
local _dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t $APP_NAME)"
local _file="$_dir/input.tar.gz"
local _bin="$_dir/$APP_NAME$_ext"
say "downloading $APP_NAME from $_url" 1>&2
ensure mkdir -p "$_dir"
downloader "$_url" "$_file"
if [ $? != 0 ]; then
say "failed to download $_url"
say "this may be a standard network error, but it may also indicate"
say "that $APP_NAME's release process is not working. When in doubt"
say "please feel free to open an issue!"
say "$REPO/issues/new/choose"
exit 1
fi
ensure tar xf "$_file" --strip-components 1 -C "$_dir"
install "$_bin" "$@"
local _retval=$?
ignore rm -rf "$_dir"
return "$_retval"
}
install() {
# TODO: REWORK THE INSTALL STEP, THIS IS A JANK HACK
local _cargo_home_bin="$HOME/.cargo/bin/"
local _bin="$1"
mkdir -p "$_cargo_home_bin"
cp "$_bin" "$_cargo_home_bin"
}
get_architecture() {
local _ostype="$(uname -s)"
local _cputype="$(uname -m)"
if [ "$_ostype" = Darwin -a "$_cputype" = i386 ]; then
# Darwin `uname -s` lies
if sysctl hw.optional.x86_64 | grep -q ': 1'; then
local _cputype=x86_64
fi
fi
if [ "$_ostype" = Darwin -a "$_cputype" = arm64 ]; then
# Darwin `uname -s` doesn't seem to lie on Big Sur
# but the cputype we want is called aarch64, not arm64 (they are equivalent)
local _cputype=aarch64
fi
case "$_ostype" in
Linux)
if has_required_glibc; then
local _ostype=unknown-linux-gnu
else
local _ostype=unknown-linux-musl
say "Downloading musl binary that does not include \`rover supergraph compose\`."
fi
;;
Darwin)
local _ostype=apple-darwin
;;
MINGW* | MSYS* | CYGWIN*)
local _ostype=pc-windows-msvc
;;
*)
err "no precompiled binaries available for OS: $_ostype"
;;
esac
case "$_cputype" in
# these are the only two acceptable values for cputype
x86_64 | aarch64 )
;;
*)
err "no precompiled binaries available for CPU architecture: $_cputype"
esac
local _arch="$_cputype-$_ostype"
RETVAL="$_arch"
}
say() {
local green=`tput setaf 2 2>/dev/null || echo ''`
local reset=`tput sgr0 2>/dev/null || echo ''`
echo "$1"
}
err() {
local red=`tput setaf 1 2>/dev/null || echo ''`
local reset=`tput sgr0 2>/dev/null || echo ''`
say "${red}ERROR${reset}: $1" >&2
exit 1
}
has_required_glibc() {
local _ldd_version="$(ldd --version 2>&1 | head -n1)"
# glibc version string is inconsistent across distributions
# instead check if the string does not contain musl (case insensitive)
if echo "${_ldd_version}" | grep -iv musl >/dev/null; then
local _glibc_version=$(echo "${_ldd_version}" | awk 'NR==1 { print $NF }')
local _glibc_major_version=$(echo "${_glibc_version}" | cut -d. -f1)
local _glibc_min_version=$(echo "${_glibc_version}" | cut -d. -f2)
local _min_major_version=2
local _min_minor_version=17
if [ "${_glibc_major_version}" -gt "${_min_major_version}" ] \
|| { [ "${_glibc_major_version}" -eq "${_min_major_version}" ] \
&& [ "${_glibc_min_version}" -ge "${_min_minor_version}" ]; }; then
return 0
else
say "This operating system needs glibc >= ${_min_major_version}.${_min_minor_version}, but only has ${_libc_version} installed."
fi
else
say "This operating system does not support dynamic linking to glibc."
fi
return 1
}
need_cmd() {
if ! check_cmd "$1"
then err "need '$1' (command not found)"
fi
}
check_cmd() {
command -v "$1" > /dev/null 2>&1
return $?
}
need_ok() {
if [ $? != 0 ]; then err "$1"; fi
}
assert_nz() {
if [ -z "$1" ]; then err "assert_nz $2"; fi
}
# Run a command that should never fail. If the command fails execution
# will immediately terminate with an error showing the failing
# command.
ensure() {
"$@"
need_ok "command failed: $*"
}
# This is just for indicating that commands' results are being
# intentionally ignored. Usually, because it's being executed
# as part of error handling.
ignore() {
"$@"
}
# This wraps curl or wget. Try curl first, if not installed,
# use wget instead.
downloader() {
if check_cmd curl
then _dld=curl
elif check_cmd wget
then _dld=wget
else _dld='curl or wget' # to be used in error message of need_cmd
fi
if [ "$1" = --check ]
then need_cmd "$_dld"
elif [ "$_dld" = curl ]
then curl -sSfL "$1" -o "$2"
elif [ "$_dld" = wget ]
then wget "$1" -O "$2"
else err "Unknown downloader" # should not reach here
fi
}
download_binary_and_run_installer "$@" || exit 1

File diff suppressed because one or more lines are too long

View File

@ -3,11 +3,11 @@
"advisory-db": {
"flake": false,
"locked": {
"lastModified": 1669556130,
"narHash": "sha256-6qRQVSgpw+Tw17TroiUg8nAte9/KVDH+v30MOOd+pQU=",
"lastModified": 1692985935,
"narHash": "sha256-hD7PPA9yBJntT5l4H+DGakOGzHaHLyxQhPztoFWbO1E=",
"owner": "rustsec",
"repo": "advisory-db",
"rev": "a66a3049c98395410a2afadf0382882b0a04d8b1",
"rev": "d401af5af8e74d61872688d6228d067c553db2c9",
"type": "github"
},
"original": {
@ -27,16 +27,14 @@
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": [
"rust-overlay"
]
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1669605882,
"narHash": "sha256-TiQtL5sUI5rp28S63v+VX25qNjcrc8Xeu+shf3g7Tj4=",
"lastModified": 1692750383,
"narHash": "sha256-n5P5HOXuu23UB1h9PuayldnRRVQuXJLpoO+xqtMO3ws=",
"owner": "ipetkov",
"repo": "crane",
"rev": "24591d5f8cc979f7b243b88a2d39da09976970ad",
"rev": "ef5d11e3c2e5b3924eb0309dba2e1fea2d9062ae",
"type": "github"
},
"original": {
@ -45,29 +43,105 @@
"type": "github"
}
},
"custom-nixpkgs": {
"inputs": {
"fenix": [
"fenix"
],
"nixpkgs": [
"nixpkgs"
],
"rust-manifest": "rust-manifest",
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1692917810,
"narHash": "sha256-yphwiZk+F221jYQHPNUGAoy/MJI3usdgtzdVG+7oKFY=",
"owner": "msfjarvis",
"repo": "custom-nixpkgs",
"rev": "3b29b3378dc3f5abb36d670ca16aa566ea17a47d",
"type": "github"
},
"original": {
"owner": "msfjarvis",
"repo": "custom-nixpkgs",
"type": "github"
}
},
"devshell": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1692793255,
"narHash": "sha256-yVyj0AE280JkccDHuG1XO9oGxN6bW8ksr/xttXcXzK0=",
"owner": "numtide",
"repo": "devshell",
"rev": "2aa26972b951bc05c3632d4e5ae683cb6771a7c6",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1693030765,
"narHash": "sha256-o+eX70uYVU9/Jr79CWDrbmRiClKKNuD395/iBZdzcNM=",
"owner": "nix-community",
"repo": "fenix",
"rev": "e66fa0e97106af71be1b26917fba281a27a653a3",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"lastModified": 1688025799,
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c",
"type": "github"
},
"original": {
"owner": "edolstra",
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"lastModified": 1692799911,
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
"type": "github"
},
"original": {
@ -78,11 +152,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1669597967,
"narHash": "sha256-R+2NaDkXsYkOpFOhmVR8jBZ77Pq55Z6ilaqwFLLn000=",
"lastModified": 1693060755,
"narHash": "sha256-KNsbfqewEziFJEpPR0qvVz4rx0x6QXxw1CcunRhlFdk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "be9e3762e719211368d186f547f847737baad720",
"rev": "c66ccfa00c643751da2fd9290e096ceaa30493fc",
"type": "github"
},
"original": {
@ -96,27 +170,61 @@
"inputs": {
"advisory-db": "advisory-db",
"crane": "crane",
"custom-nixpkgs": "custom-nixpkgs",
"devshell": "devshell",
"fenix": "fenix",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
"systems": "systems"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1692775770,
"narHash": "sha256-LwoR5N1JHykSte2Ak+Pj/HjJ9fKy9zMJNEftfBJQkLs=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "f5b7c60ff7a79bfb3e10f3e98c81b7bb4cb53c68",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-manifest": {
"flake": false,
"locked": {
"narHash": "sha256-emILH39kZmz9D2cquaobdM55EakoGkUxn1sY3r1iYNg=",
"type": "file",
"url": "https://static.rust-lang.org/dist/2023-07-08/channel-rust-nightly.toml"
},
"original": {
"type": "file",
"url": "https://static.rust-lang.org/dist/2023-07-08/channel-rust-nightly.toml"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": [
"crane",
"flake-utils"
],
"nixpkgs": [
"crane",
"nixpkgs"
]
},
"locked": {
"lastModified": 1669689198,
"narHash": "sha256-YsWu3C9IGbH3+xguTzEDyQorFe/igr6FGZ+Q5T2ocxE=",
"lastModified": 1691374719,
"narHash": "sha256-HCodqnx1Mi2vN4f3hjRPc7+lSQy18vRn8xWW68GeQOg=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "4e093ce661a63aca4bcbace33695225eae4ef4e4",
"rev": "b520a3889b24aaf909e287d19d406862ced9ffc9",
"type": "github"
},
"original": {
@ -124,6 +232,21 @@
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1687694171,
"narHash": "sha256-m4E0xN69qKj/oKOj8OtiZcSFpFlO8paI6E3Wo5oXDJc=",
"owner": "msfjarvis",
"repo": "flake-systems",
"rev": "7876462a5f60841e8b2712ad20dc18470f448e8d",
"type": "github"
},
"original": {
"owner": "msfjarvis",
"repo": "flake-systems",
"type": "github"
}
}
},
"root": "root",

160
flake.nix
View File

@ -1,90 +1,106 @@
{
description = "twt";
inputs = {
nixpkgs = { url = "github:NixOS/nixpkgs/nixpkgs-unstable"; };
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils = { url = "github:numtide/flake-utils"; };
inputs.systems.url = "github:msfjarvis/flake-systems";
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
inputs.advisory-db.url = "github:rustsec/advisory-db";
inputs.advisory-db.flake = false;
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
inputs.crane.url = "github:ipetkov/crane";
inputs.crane.inputs.flake-compat.follows = "flake-compat";
inputs.crane.inputs.flake-utils.follows = "flake-utils";
inputs.crane.inputs.nixpkgs.follows = "nixpkgs";
inputs.custom-nixpkgs.url = "github:msfjarvis/custom-nixpkgs";
inputs.custom-nixpkgs.inputs.nixpkgs.follows = "nixpkgs";
inputs.custom-nixpkgs.inputs.fenix.follows = "fenix";
inputs.custom-nixpkgs.inputs.systems.follows = "systems";
inputs.devshell.url = "github:numtide/devshell";
inputs.devshell.inputs.nixpkgs.follows = "nixpkgs";
inputs.devshell.inputs.systems.follows = "systems";
inputs.fenix.url = "github:nix-community/fenix";
inputs.fenix.inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.flake-utils.inputs.systems.follows = "systems";
inputs.flake-compat.url = "github:nix-community/flake-compat";
inputs.flake-compat.flake = false;
outputs = {
self,
nixpkgs,
advisory-db,
crane,
custom-nixpkgs,
devshell,
fenix,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [custom-nixpkgs.overlays.default devshell.overlays.default];
};
};
crane = {
url = "github:ipetkov/crane";
inputs = {
flake-compat.follows = "flake-compat";
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
rust-overlay.follows = "rust-overlay";
rustStable = (import fenix {inherit pkgs;}).fromToolchainFile {
file = ./rust-toolchain.toml;
sha256 = "sha256-Q9UgzzvxLi4x9aWUJTn+/5EXekC98ODRU1TwhUs9RnY=";
};
};
advisory-db = {
url = "github:rustsec/advisory-db";
flake = false;
};
};
craneLib = (crane.mkLib pkgs).overrideToolchain rustStable;
commonArgs = {
src = craneLib.cleanCargoSource ./.;
buildInputs = [];
nativeBuildInputs = [];
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
};
cargoArtifacts = craneLib.buildDepsOnly (commonArgs // {doCheck = false;});
outputs =
{ self, nixpkgs, crane, flake-utils, advisory-db, rust-overlay, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
rustStable =
pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
craneLib = (crane.mkLib pkgs).overrideToolchain rustStable;
src = ./.;
cargoArtifacts = craneLib.buildDepsOnly { inherit src buildInputs; };
buildInputs = [ ];
twt = craneLib.buildPackage {
inherit src;
doCheck = false;
};
twt-clippy = craneLib.cargoClippy {
inherit cargoArtifacts src buildInputs;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
};
twt-fmt = craneLib.cargoFmt { inherit src; };
twt-audit = craneLib.cargoAudit { inherit src advisory-db; };
twt-nextest = craneLib.cargoNextest {
inherit cargoArtifacts src buildInputs;
twt = craneLib.buildPackage (commonArgs // {doCheck = false;});
twt-clippy = craneLib.cargoClippy (commonArgs
// {
inherit cargoArtifacts;
});
twt-fmt = craneLib.cargoFmt (commonArgs // {});
twt-audit = craneLib.cargoAudit (commonArgs // {inherit advisory-db;});
twt-nextest = craneLib.cargoNextest (commonArgs
// {
inherit cargoArtifacts;
partitions = 1;
partitionType = "count";
};
in {
checks = {
# TODO: Switch to cargo-audit and re-enable this
# twt-audit
inherit twt twt-clippy twt-fmt twt-nextest;
};
});
in {
checks = {
inherit twt twt-audit twt-clippy twt-fmt twt-nextest;
};
packages.default = twt;
packages.default = twt;
apps.default = flake-utils.lib.mkApp { drv = twt; };
apps.default = flake-utils.lib.mkApp {drv = twt;};
devShells.default = pkgs.mkShell {
inputsFrom = builtins.attrValues self.checks;
devShells.default = pkgs.devshell.mkShell {
bash = {interactive = "";};
nativeBuildInputs = with pkgs; [
cargo-nextest
cargo-release
rustStable
];
};
});
env = [
{
name = "DEVSHELL_NO_MOTD";
value = 1;
}
];
packages = with pkgs; [
cargo-dist-unstable
cargo-nextest
cargo-release
oranda
rustStable
];
};
});
}

16
oranda.json Normal file
View File

@ -0,0 +1,16 @@
{
"build": {
"path_prefix": "twt",
"dist_dir": "./docs"
},
"components": {
"artifacts": {
"cargo_dist": true,
"package_managers": {
"preferred": {
"nix flakes": "nix profile install github:msfjarvis/twt"
}
}
}
}
}

View File

@ -1,5 +1,5 @@
[toolchain]
channel = "stable"
components = [ "clippy", "rustfmt", "rust-src" ]
targets = [ "x86_64-unknown-linux-gnu" ]
channel = "1.72.0"
components = ["clippy", "rustfmt", "rust-src"]
targets = ["x86_64-unknown-linux-gnu"]
profile = "minimal"

View File

@ -1,6 +1,8 @@
(import (let lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in fetchTarball {
url =
"https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}) { src = ./.; }).shellNix
(import (let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/nix-community/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}) {src = ./.;})
.shellNix

View File

@ -30,6 +30,7 @@ pub enum Commands {
Images(Images),
#[command(arg_required_else_help = true)]
Links(Links),
#[cfg(feature = "videos")]
#[command(arg_required_else_help = true)]
Videos(Videos),
}
@ -83,6 +84,7 @@ impl TimelineCreator for Links {
}
}
#[cfg(feature = "videos")]
#[derive(Debug, Args)]
/// Fetch high quality versions of videos embedded in the user's tweets.
pub struct Videos {
@ -90,6 +92,7 @@ pub struct Videos {
opts: CommonCliOpts,
}
#[cfg(feature = "videos")]
impl TimelineCreator for Videos {
fn timeline(&self, token: Token) -> Timeline {
self.create_timeline(&self.opts, token)
@ -102,6 +105,6 @@ mod test {
#[test]
fn cli_assert() {
<Opts as clap::CommandFactory>::command().debug_assert()
<Opts as clap::CommandFactory>::command().debug_assert();
}
}

View File

@ -6,6 +6,8 @@ use url::Url;
const ACCEPTED_MIME_TYPES: [Mime; 2] = [mime::IMAGE_JPEG, mime::IMAGE_PNG];
// `feed` is passed over into two separate methods which consume the value fully.
#[allow(clippy::needless_pass_by_value)]
pub fn invoke(feed: Iter<Tweet>) {
let filter = |url: &Url| {
return if let Some(segment) = url.path().split('/').last() {

View File

@ -1,5 +1,6 @@
pub mod images;
pub mod links;
#[cfg(feature = "videos")]
pub mod videos;
use egg_mode::tweet::Tweet;

View File

@ -1,14 +1,12 @@
use std::path::PathBuf;
use color_eyre::{eyre::eyre, Result};
use serde::Deserialize;
use serde_derive::Deserialize;
#[derive(Deserialize)]
pub struct Credentials {
pub consumer_key: String,
pub consumer_key_secret: String,
pub access_token: String,
pub access_token_secret: String,
}
pub fn get_path() -> Result<PathBuf> {

View File

@ -3,12 +3,13 @@ mod cmds;
mod config;
use crate::cli::{Commands, Opts, TimelineCreator};
use crate::cmds::{images, links, videos};
#[cfg(feature = "videos")]
use crate::cmds::videos;
use crate::cmds::{images, links};
use crate::config::Credentials;
use clap::Parser;
use color_eyre::Result;
use egg_mode::KeyPair;
use egg_mode::Token::Access;
#[tokio::main]
async fn main() -> Result<()> {
@ -17,9 +18,8 @@ async fn main() -> Result<()> {
let credentials: Credentials = toml::from_str(&config_str)?;
let options = Opts::parse();
let consumer = KeyPair::new(credentials.consumer_key, credentials.consumer_key_secret);
let access = KeyPair::new(credentials.access_token, credentials.access_token_secret);
let token = Access { consumer, access };
let con_token = KeyPair::new(credentials.consumer_key, credentials.consumer_key_secret);
let token = egg_mode::auth::bearer_token(&con_token).await?;
match options.command {
Commands::Images(opts) => {
@ -35,6 +35,7 @@ async fn main() -> Result<()> {
let feed = feed.iter();
links::invoke(feed, &host);
}
#[cfg(feature = "videos")]
Commands::Videos(opts) => {
let timeline = opts.timeline(token);
let (_, feed) = timeline.start().await?;