Compare commits

..

180 Commits

Author SHA1 Message Date
6c90cfe79d Update Rust crate serde to 1.0.195
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-01-07 00:11:21 +00:00
e310c4895d Merge pull request 'Update Rust crate serde_json to 1.0.110' (#112) from renovate/serde_json-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #112
2024-01-04 15:14:54 +00:00
4f182bcf52 Update Rust crate serde_json to 1.0.110
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-01-04 00:30:29 +00:00
7b4812789c Allow Renovate to perform major updates
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-03 10:05:13 +00:00
95d5d0ebe5 Update Rust crate serde to 1.0.194
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-03 00:36:24 +00:00
caa84a95cb Update Rust crate semver to 1.0.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-03 00:21:20 +00:00
40a49051f2 Update Rust crate clap to 4.4.12
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-29 00:21:54 +00:00
27a95189be Update Rust crate futures to 0.3.30
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-25 00:28:55 +00:00
7038462084 Update Rust crate actix-web to 4.4.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-25 00:20:18 +00:00
466ed50582 Update Rust crate tokio to 1.35.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-24 00:22:04 +00:00
c1b30f7aa9 Set resolver
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-23 14:39:13 +01:00
592207b997 Merge pull request 'Update Rust crate tokio to 1.35.0' (#133) from renovate/tokio-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #133
2023-12-23 13:35:28 +00:00
e6e5c48a5c Merge pull request 'Update Rust crate serde to 1.0.193' (#106) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #106
2023-12-23 13:35:21 +00:00
2505d8c4ff Merge pull request 'Update Rust crate clap to 4.4.11' (#129) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #129
2023-12-23 13:35:05 +00:00
08c829df2b Update Rust crate tokio to 1.35.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-09 00:15:43 +00:00
78606dbe74 Update Rust crate actix-cors to 0.6.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-07 00:17:41 +00:00
7f017401dc Update Rust crate clap to 4.4.11
All checks were successful
continuous-integration/drone/pr Build is passing
2023-12-06 00:23:01 +00:00
93a84a43e9 Merge pull request 'Update Rust crate num-derive to 0.4.1' (#115) from renovate/num-derive-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #115
2023-11-29 09:35:31 +00:00
4c45550337 Update Rust crate tokio to 1.34.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-29 02:11:33 +00:00
685f714836 Update Rust crate serde to 1.0.193
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-11-29 00:14:58 +00:00
f1fba8b326 Update Rust crate num-derive to 0.4.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-11-29 00:14:46 +00:00
0ecd211245 Update Rust crate clap to 4.4.10
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-29 00:14:29 +00:00
09b40c8138 Merge pull request 'Update Rust crate actix to 0.13.1' (#111) from renovate/actix-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #111
2023-11-28 17:00:47 +00:00
242f8e32df Merge pull request 'Update Rust crate tokio to 1.33.0' (#118) from renovate/tokio-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #118
2023-11-28 17:00:22 +00:00
89a5f104c2 Merge pull request 'Update Rust crate clap to 4.4.1' (#108) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #108
2023-11-28 17:00:09 +00:00
dcb3f9113f Update Rust crate uuid to 1.6.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-21 00:11:14 +00:00
f3ba509cc1 Update Rust crate rustls to 0.21.9
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-17 00:25:36 +00:00
221f43ea46 Update Rust crate env_logger to 0.10.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-11 00:31:52 +00:00
56d824504d Merge pull request 'Update Rust crate uuid to 1.5.0' (#120) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #120
2023-10-30 09:05:46 +00:00
7cda8c9dc1 Update Rust crate hyper-rustls to 0.24.2
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-27 01:14:34 +00:00
cfedebd2f6 Update Rust crate futures to 0.3.29
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-27 00:31:08 +00:00
d768650f23 Update Rust crate rustls to 0.21.8
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-25 00:29:51 +00:00
21d8e0c01a Update Rust crate uuid to 1.5.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-10-19 00:11:39 +00:00
3dc46fc862 Update Rust crate serde_with to 3.4.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-18 00:10:10 +00:00
d6c6d57fee Update Rust crate tokio to 1.33.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-10-10 00:07:53 +00:00
e9e272c19c Update Rust crate semver to 1.0.20
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-10 00:07:43 +00:00
44d5437c5f Update Rust crate num-traits to 0.2.17
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-08 00:07:18 +00:00
df09e7ff8d Update Rust crate tokio-tungstenite to 0.20.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-09-24 00:08:20 +00:00
92a4f8b2f7 Update Rust crate semver to 1.0.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-09-23 00:09:28 +00:00
440a81c307 Update Rust crate actix to 0.13.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-08-31 00:30:55 +00:00
c476171e7a Update Rust crate actix-web to 4.4.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-30 00:30:15 +00:00
83c146e788 Update Rust crate rustls to 0.21.7
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-29 00:34:40 +00:00
79bfeb2597 Update Rust crate clap to 4.4.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-08-29 00:34:26 +00:00
52f16f5c33 Update Rust crate actix-rt to 2.9.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-27 00:36:01 +00:00
d75a5d7d5b Update Rust crate clap to 4.4.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-25 01:57:27 +00:00
473e6c0d1e Update Rust crate serde to 1.0.186
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-25 00:40:45 +00:00
9a93a29804 Update Rust crate serde to 1.0.185
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-22 00:40:14 +00:00
dad50314b0 Update Rust crate serde_with to 3.3.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-20 00:40:38 +00:00
b51aa8b7cb Update Rust crate clap to 4.3.23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-19 00:29:37 +00:00
5a2fd31fa0 Update Rust crate clap to 4.3.22
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-18 00:29:12 +00:00
efcf33c539 Update Rust crate tokio to 1.32.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-17 00:25:07 +00:00
652a6d162b Update Rust crate serde_json to 1.0.105
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-16 00:32:29 +00:00
2ab3b5e55d Update Rust crate tokio to 1.31.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-13 01:12:09 +00:00
f52dc84b45 Update Rust crate log to 0.4.20
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-13 00:33:17 +00:00
567473a223 Update Rust crate tokio to 1.30.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-10 00:30:59 +00:00
e95830f644 Update Rust crate clap to 4.3.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-09 00:29:27 +00:00
5d2b3e55ef Update Rust crate serde to 1.0.183
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-08 00:29:38 +00:00
c1f5f5f624 Update Rust crate crossterm to 0.27.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-07 01:05:02 +00:00
c5b549244f Update Rust crate serde to 1.0.182
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-07 00:28:39 +00:00
7a93a1e3c6 Update Rust crate serde_with to 3.2.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-05 00:23:45 +00:00
1fff258248 Update Rust crate serde to 1.0.181
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-04 00:35:04 +00:00
0494847f2e Update Rust crate rustls to 0.21.6
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-03 00:22:07 +00:00
c9dd2fce12 Update Rust crate serde to 1.0.180
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-08-01 00:19:18 +00:00
a2b629d218 Update Rust crate serde_json to 1.0.104
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-30 00:26:23 +00:00
5379b84470 Update Rust crate serde to 1.0.178
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-29 00:29:22 +00:00
ef8772be97 Update Rust crate serde to 1.0.177
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-28 00:29:48 +00:00
007dae6fae Update Rust crate serde to 1.0.176
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-27 00:29:55 +00:00
29012b0f32 Update Rust crate serde to 1.0.175
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-26 07:04:49 +00:00
bf4aaada69 Update Rust crate tokio-tungstenite to 0.20.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-23 00:33:16 +00:00
c58c782219 Update Rust crate serde to 1.0.174
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-22 01:21:11 +00:00
90ae4a5193 Update Rust crate clap to 4.3.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-22 00:38:32 +00:00
b9085771a6 Update Rust crate num-traits to 0.2.16
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-21 00:36:58 +00:00
e7629f50e3 Update Rust crate serde to 1.0.173
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 00:52:08 +00:00
00603e4386 Update Rust crate clap to 4.3.17
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-20 00:16:45 +00:00
09eaabe43c Update Rust crate serde_with to 3.1.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:35:43 +00:00
09b2058934 Update Rust crate clap to 4.3.16
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-19 00:15:56 +00:00
c6143b3bec Update Rust crate uuid to 1.4.1
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 00:46:08 +00:00
f48c34c234 Update Rust crate clap to 4.3.14
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-18 00:16:23 +00:00
f1a179e12d Update Rust crate serde_json to 1.0.103
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-16 01:03:43 +00:00
067332b116 Update Rust crate semver to 1.0.18
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-16 00:15:56 +00:00
1257a637b1 Update Rust crate clap to 4.3.12
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-15 00:15:43 +00:00
e0822e3585 Update Rust crate serde_json to 1.0.102
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-13 00:15:53 +00:00
42bea6bba4 Update Rust crate serde_json to 1.0.101
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 00:51:14 +00:00
50e2db5256 Update Rust crate num to 0.4.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-12 00:16:01 +00:00
7ef779d804 Update Rust crate serde to 1.0.171
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-11 00:53:14 +00:00
13bb37fa51 Update Rust crate rustls to 0.21.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-11 00:16:11 +00:00
144848563b Update Rust crate serde to 1.0.170
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-10 00:16:30 +00:00
99bcf6e5ac Update Rust crate serde_json to 1.0.100
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-09 00:20:42 +00:00
daafca93a9 Update Rust crate rustls to 0.21.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-08 00:16:05 +00:00
04c4813cee Merge pull request 'Update Rust crate hyper-rustls to 0.24.1' (#58) from renovate/hyper-rustls-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #58
2023-07-07 15:54:51 +00:00
764f6f5112 Update Rust crate serde to 1.0.167
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-07 00:16:08 +00:00
0cfd2fc3f2 Update Rust crate hyper-rustls to 0.24.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-07-07 00:15:56 +00:00
46be9732de Attempt to enable auto merge
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-06 19:11:22 +02:00
6b4bd56684 Merge pull request 'Update Rust crate clap to 4.3.11' (#60) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #60
2023-07-06 17:08:08 +00:00
9a19272ba6 Merge pull request 'Update Rust crate serde to 1.0.166' (#57) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #57
2023-07-06 17:07:58 +00:00
c7f0be52cd Update Rust crate clap to 4.3.11
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-07-06 00:09:42 +00:00
37f7c20e36 Update Rust crate serde to 1.0.166
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-07-05 00:09:57 +00:00
75d55b4a23 Merge pull request 'Update Rust crate uuid to 1.4.0' (#55) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #55
2023-07-04 16:42:27 +00:00
0c394f301a Merge pull request 'Update Rust crate clap to 4.3.10' (#52) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #52
2023-07-04 16:42:14 +00:00
c87a549a8a Merge pull request 'Update Rust crate num-derive to 0.4.0' (#56) from renovate/num-derive-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #56
2023-07-04 16:42:02 +00:00
98cc8884af Merge pull request 'Update Rust crate serde_json to 1.0.99' (#53) from renovate/serde_json-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #53
2023-07-04 16:41:38 +00:00
03c842017c Merge pull request 'Update Rust crate tokio to 1.29.1' (#54) from renovate/tokio-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #54
2023-07-04 16:41:26 +00:00
d87e5d816c Update Rust crate num-derive to 0.4.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-07-01 00:09:49 +00:00
eaf8d1c24e Update Rust crate clap to 4.3.10
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-07-01 00:09:36 +00:00
c4aa47f199 Update Rust crate tokio to 1.29.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-30 00:06:51 +00:00
9a623633cb Update Rust crate uuid to 1.4.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-28 00:08:46 +00:00
d1a28a0802 Update Rust crate serde_json to 1.0.99
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-25 00:09:04 +00:00
f6aa9977ba Merge pull request 'Update Rust crate clap to 4.3.5' (#51) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #51
2023-06-21 16:19:24 +00:00
7dd5464391 Update Rust crate clap to 4.3.5
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-21 00:16:55 +00:00
9f58d98a69 Merge pull request 'Update Rust crate serde_json to 1.0.97' (#50) from renovate/serde_json-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #50
2023-06-20 07:54:27 +00:00
841c6709cc Update Rust crate serde_json to 1.0.97
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-06-17 00:24:18 +00:00
e63566c6a9 Merge pull request 'Update Rust crate clap to 4.3.4' (#48) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #48
2023-06-15 13:31:01 +00:00
ac6f8987f4 Merge pull request 'Update Rust crate rustls to 0.21.2' (#49) from renovate/rustls-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #49
2023-06-15 13:30:54 +00:00
356fa75604 Update Rust crate rustls to 0.21.2
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-15 00:26:38 +00:00
563f33971f Update Rust crate clap to 4.3.4
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-15 00:26:26 +00:00
8f0db5cbe6 Merge pull request 'Update Rust crate log to 0.4.19' (#46) from renovate/log-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #46
2023-06-14 06:39:32 +00:00
5442536768 Merge pull request 'Update Rust crate uuid to 1.3.4' (#47) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #47
2023-06-14 06:39:23 +00:00
f6b0962ec3 Update Rust crate uuid to 1.3.4
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-14 00:26:18 +00:00
2909bbc1c9 Update Rust crate log to 0.4.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-06-12 00:25:46 +00:00
fd1025c4a8 Merge pull request 'Update Rust crate serde to 1.0.164' (#44) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #44
2023-06-09 09:20:41 +00:00
ccadddaf15 Update Rust crate serde to 1.0.164
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-09 00:26:23 +00:00
2a0987defd Merge pull request 'Update Rust crate clap to 4.3.2' (#43) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #43
2023-06-06 06:35:00 +00:00
cb6ca75515 Update Rust crate clap to 4.3.2
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-06 00:26:16 +00:00
964c90e0d8 Merge pull request 'Update Rust crate tokio to 1.28.2' (#41) from renovate/tokio-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #41
2023-05-30 08:38:40 +00:00
81a05b8f66 Merge pull request 'Update Rust crate log to 0.4.18' (#42) from renovate/log-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #42
2023-05-30 08:38:31 +00:00
d2801c6b50 Update Rust crate log to 0.4.18
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-29 00:34:41 +00:00
1328baaba7 Update Rust crate tokio to 1.28.2
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-28 00:32:14 +00:00
d06585ad71 Update rustls, tokio-tungstenite & hyper-rustls
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-25 09:54:12 +02:00
3ab8201c13 Merge pull request 'Update Rust crate serde_with to v3' (#40) from renovate/serde_with-3.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #40
2023-05-25 07:43:00 +00:00
c0232f602e Merge pull request 'Update Rust crate clap to 4.3.0' (#38) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #38
2023-05-24 06:34:58 +00:00
5f2b7654be Merge pull request 'Update Rust crate uuid to 1.3.3' (#37) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #37
2023-05-24 06:34:49 +00:00
08a449352b Merge pull request 'Update Rust crate serde to 1.0.163' (#35) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #35
2023-05-23 11:37:40 +00:00
50fbbe50bf Merge pull request 'Update Rust crate tokio to 1.28.1' (#36) from renovate/tokio-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #36
2023-05-23 11:37:32 +00:00
f4356c656b Update Rust crate clap to 4.3.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-23 09:51:50 +00:00
b12657ef3a Merge pull request 'Update Rust crate clap to 4.2.7' (#34) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #34
2023-05-16 09:56:37 +00:00
ad868a7961 Update Rust crate uuid to 1.3.3
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-16 00:32:59 +00:00
221d1dfa13 Update Rust crate tokio to 1.28.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-16 00:32:51 +00:00
33ed27b892 Update Rust crate serde to 1.0.163
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-16 00:32:46 +00:00
9e6df3c78d Update Rust crate clap to 4.2.7
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-11 00:11:09 +00:00
6faf38003f Merge pull request 'Update Rust crate clap to 4.2.5' (#33) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #33
2023-05-05 17:57:09 +00:00
cee12d89f6 Merge branch 'master' into renovate/clap-4.x
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-02 05:58:13 +00:00
887dd849c6 Merge pull request 'Update Rust crate serde to 1.0.160' (#29) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #29
2023-05-02 05:56:26 +00:00
2c8686e9d2 Update Rust crate serde_with to v3
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-02 00:23:12 +00:00
7d92555a85 Merge pull request 'Update Rust crate serde_with to 2.3.3' (#31) from renovate/serde_with-2.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #31
2023-05-01 17:29:03 +00:00
0a7e9b9661 Merge branch 'master' into renovate/serde-1.x
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-01 17:21:14 +00:00
3af6fd730e Merge branch 'master' into renovate/serde_with-2.x
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-01 17:21:04 +00:00
b532324654 Merge pull request 'Update Rust crate uuid to 1.3.2' (#30) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #30
2023-05-01 17:20:52 +00:00
de218d2ba1 Merge branch 'master' into renovate/uuid-1.x
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-01 11:40:23 +00:00
bb902cda9e Merge pull request 'Update Rust crate tokio to 1.28.0' (#32) from renovate/tokio-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #32
2023-05-01 08:35:57 +00:00
77d5b18f79 Fix cargo clippy issue
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-01 10:28:43 +02:00
7125076f1f Update Rust crate uuid to 1.3.2
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is passing
2023-05-01 08:21:29 +00:00
4ed1c9c200 Update Rust crate serde_with to 2.3.3
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2023-04-29 00:09:17 +00:00
fa4b0bcdc2 Update Rust crate clap to 4.2.5
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is passing
2023-04-29 00:08:53 +00:00
40bff4f8e4 Update Rust crate tokio to 1.28.0
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is passing
2023-04-26 00:31:35 +00:00
283ea7d422 Update Rust crate serde to 1.0.160
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2023-04-26 00:31:21 +00:00
c746313c04 Merge pull request 'Update Rust crate clap to 4.2.4' (#28) from renovate/clap-4.x into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #28
2023-04-24 09:25:44 +00:00
86d45ad992 Merge pull request 'Update Rust crate serde_json to 1.0.96' (#27) from renovate/serde_json-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #27
2023-04-24 09:25:32 +00:00
5ba2e78fd0 Update Rust crate clap to 4.2.4
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-20 00:25:55 +00:00
1265d7f099 Merge pull request 'Update Rust crate clap to 4.2.2' (#25) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #25
2023-04-18 19:02:51 +00:00
b713117a70 Update Rust crate clap to 4.2.2
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-18 00:28:43 +00:00
a001017821 Update Rust crate serde_json to 1.0.96
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-13 00:28:31 +00:00
5acbe069c2 Merge pull request 'Update Rust crate serde_json to 1.0.95' (#23) from renovate/serde_json-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #23
2023-04-11 11:52:38 +00:00
6defd8edd2 Merge pull request 'Update Rust crate clap to 4.2.1' (#24) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #24
2023-04-11 11:52:28 +00:00
ef598dbff4 Update Rust crate clap to 4.2.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-01 00:09:41 +00:00
2abe1c95d0 Update Rust crate serde_json to 1.0.95
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-01 00:09:32 +00:00
f7bb0ddda2 Merge pull request 'Update Rust crate serde to 1.0.159' (#20) from renovate/serde-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #20
2023-03-29 08:35:44 +00:00
d1114f0295 Update Rust crate serde to 1.0.159
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-03-29 00:26:30 +00:00
f94a51027b Update dependencies to their latest versions
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 18:58:34 +01:00
f5f2efcfde cargo update 2023-03-19 18:56:46 +01:00
eb9999b85b Fix build issue 2023-03-19 18:54:44 +01:00
df1d678ab9 Add more emojies
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-18 10:05:43 +02:00
e88d64ff63 Bump to version 0.1.0 -> 0.2.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-10-18 09:39:54 +02:00
3ca6c43c9a Add additional routes for the future clients of SeaBattle 2022-10-18 09:34:26 +02:00
d4223be8b4 Improve test 2022-10-18 09:24:08 +02:00
83d0780954 Add a route to get default rules 2022-10-18 09:17:15 +02:00
6be3eae863 Clear terminal before returning to main menu
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-18 09:13:59 +02:00
c763a24ca9 Can press 'Esc' key to close windows 2022-10-18 09:11:08 +02:00
10c099e03b Handle connection errors in a better way 2022-10-18 09:04:25 +02:00
eea2ecbf63 Add version check system 2022-10-18 08:58:36 +02:00
915426849b Rename variable 2022-10-18 08:13:25 +02:00
27 changed files with 1119 additions and 561 deletions

View File

@ -1,4 +1,10 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"ignorePaths": ["**/flutter/**", "**/react/**"]
"ignorePaths": ["**/flutter/**", "**/react/**"],
"packageRules": [
{
"matchUpdateTypes": ["major", "minor", "patch"],
"automerge": true
}
]
}

1305
rust/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
[workspace]
resolver = "2"
members = [
"sea_battle_backend",
"sea_battle_cli_player"

View File

@ -1,6 +1,6 @@
[package]
name = "sea_battle_backend"
version = "0.1.0"
version = "0.2.0"
edition = "2021"
license = "GPL-2.0-or-later"
description = "A Sea Battle game backend server"
@ -12,23 +12,24 @@ categories = [ "games" ]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = { version = "4.0.15", features = ["derive"] }
log = "0.4.17"
env_logger = "0.9.0"
serde = { version = "1.0.145", features = ["derive"] }
serde_json = "1.0.85"
actix-web = "4.1.0"
actix-cors = "0.6.2"
actix = "0.13.0"
clap = { version = "4.4.12", features = ["derive"] }
log = "0.4.20"
env_logger = "0.10.1"
serde = { version = "1.0.195", features = ["derive"] }
serde_json = "1.0.110"
actix-web = "4.4.1"
actix-cors = "0.6.5"
actix = "0.13.1"
actix-web-actors = "4.1.0"
actix-rt = "2.7.0"
uuid = { version = "1.1.2", features = ["v4"] }
actix-rt = "2.9.0"
uuid = { version = "1.6.1", features = ["v4"] }
rand = "0.8.5"
serde_with = "2.0.1"
serde_with = "3.4.0"
tokio = { version = "1", features = ["full"] }
semver = "1.0.21"
[dev-dependencies]
#reqwest = { version = "0.11.11", default-features = false, features = ["json", "rustls-tls"] }
tokio-tungstenite = "0.17.2"
tokio-tungstenite = "0.20.1"
serde_urlencoded = "0.7.1"
futures = "0.3.23"
futures = "0.3.30"

View File

@ -12,3 +12,14 @@ pub struct Args {
#[clap(short, long, value_parser)]
pub cors: Option<String>,
}
#[cfg(test)]
mod test {
use crate::args::Args;
#[test]
fn verify_cli() {
use clap::CommandFactory;
Args::command().debug_assert()
}
}

View File

@ -1,5 +1,8 @@
//! # Project constants
pub const MIN_REQUIRED_VERSION: &str = "0.1.0";
pub const CURRENT_VERSION: &str = env!("CARGO_PKG_VERSION");
pub const MIN_BOATS_NUMBER: usize = 1;
pub const MAX_BOATS_NUMBER: usize = 10;

View File

@ -361,7 +361,7 @@ impl BoatsLayout {
mod test {
use crate::data::boats_layout::{BoatDirection, BoatPosition, BoatsLayout, Coordinates};
use crate::data::game_map::GameMap;
use crate::data::{BotType, GameRules, PlayConfiguration, PrintableMap};
use crate::data::*;
#[test]
fn dist_coordinates_eq() {
@ -488,9 +488,7 @@ mod test {
map_height: 5,
boats_str: "1,1".to_string(),
boats_can_touch: false,
player_continue_on_hit: false,
strike_timeout: None,
bot_type: BotType::Random,
..Default::default()
};
let mut boats = BoatsLayout(vec![

View File

@ -4,6 +4,7 @@ pub use game_map::*;
pub use game_rules::*;
pub use play_config::*;
pub use printable_map::*;
pub use version::*;
mod boats_layout;
mod current_game_status;
@ -11,3 +12,4 @@ mod game_map;
mod game_rules;
mod play_config;
mod printable_map;
mod version;

View File

@ -0,0 +1,32 @@
//! # Version Info
//!
//! Contains server version requirements information
use crate::consts;
use crate::utils::res_utils::Res;
use semver::Version;
#[derive(serde::Serialize, serde::Deserialize)]
pub struct VersionInfo {
current: String,
min_required: String,
}
impl VersionInfo {
pub fn load_static() -> Self {
Self {
current: consts::CURRENT_VERSION.to_string(),
min_required: consts::MIN_REQUIRED_VERSION.to_string(),
}
}
/// Check if builtin version is compatible with a remote version or not
pub fn is_compatible_with_static_version(&self) -> Res<bool> {
let static_version = Self::load_static();
let local_current = Version::parse(&static_version.current)?;
let min_required = Version::parse(&self.min_required)?;
Ok(min_required <= local_current)
}
}

View File

@ -4,7 +4,7 @@ use actix_web::{web, App, HttpRequest, HttpResponse, HttpServer, Responder};
use actix_web_actors::ws;
use crate::args::Args;
use crate::data::{GameRules, PlayConfiguration};
use crate::data::{BoatsLayout, GameRules, PlayConfiguration, VersionInfo};
use crate::dispatcher_actor::DispatcherActor;
use crate::human_player_ws::{HumanPlayerWS, StartMode};
@ -18,11 +18,45 @@ async fn not_found() -> impl Responder {
HttpResponse::NotFound().json("You missed your strike lol")
}
/// Get bot configuration
/// Get version information
async fn version_information() -> impl Responder {
HttpResponse::Ok().json(VersionInfo::load_static())
}
/// Get game configuration
async fn game_configuration() -> impl Responder {
HttpResponse::Ok().json(PlayConfiguration::default())
}
/// Get default game rules
async fn default_game_rules() -> impl Responder {
HttpResponse::Ok().json(GameRules::random_players_rules())
}
/// Validate game rules
async fn validate_game_rules(rules: web::Json<GameRules>) -> impl Responder {
HttpResponse::Ok().json(rules.get_errors())
}
/// Generate random boats layout
async fn gen_boats_layout(rules: web::Json<GameRules>) -> impl Responder {
let errors = rules.get_errors();
if !errors.is_empty() {
return HttpResponse::BadRequest().json(errors);
}
match BoatsLayout::gen_random_for_rules(&rules) {
Ok(l) => HttpResponse::Ok().json(l),
Err(e) => {
log::error!(
"Failed to generate boats layout for valid game rules: {} ! / Rules: {:?}",
e,
rules
);
HttpResponse::InternalServerError().json("Failed to generate random layout!")
}
}
}
#[derive(serde::Serialize, serde::Deserialize, Eq, PartialEq, Debug)]
pub struct BotPlayQuery {
#[serde(flatten)]
@ -130,6 +164,7 @@ async fn start_random(
log::info!("New random play");
resp
}
pub async fn start_server(args: Args) -> std::io::Result<()> {
log::info!("Start to listen on {}", args.listen_address);
@ -148,7 +183,11 @@ pub async fn start_server(args: Args) -> std::io::Result<()> {
App::new()
.app_data(web::Data::new(dispatcher_actor.clone()))
.wrap(cors)
.route("/version", web::get().to(version_information))
.route("/config", web::get().to(game_configuration))
.route("/game_rules/default", web::get().to(default_game_rules))
.route("/game_rules/validate", web::post().to(validate_game_rules))
.route("/generate_boats_layout", web::post().to(gen_boats_layout))
.route("/play/bot", web::get().to(start_bot_play))
.route("/play/create_invite", web::get().to(start_create_invite))
.route("/play/accept_invite", web::get().to(start_accept_invite))

View File

@ -1,6 +1,6 @@
[package]
name = "sea_battle_cli_player"
version = "0.1.0"
version = "0.2.0"
edition = "2021"
license = "GPL-2.0-or-later"
description = "A Sea Battle game shell client"
@ -12,22 +12,23 @@ categories = [ "games" ]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
sea_battle_backend = { path = "../sea_battle_backend", version = "0.1.0" }
clap = { version = "4.0.15", features = ["derive"] }
log = "0.4.17"
env_logger = "0.9.0"
sea_battle_backend = { path = "../sea_battle_backend", version = "0.2.0" }
clap = { version = "4.4.12", features = ["derive"] }
log = "0.4.20"
env_logger = "0.10.1"
tui = "0.19.0"
crossterm = "0.25.0"
crossterm = "0.27.0"
lazy_static = "1.4.0"
tokio = "1.21.2"
num = "0.4.0"
num-traits = "0.2.15"
num-derive = "0.3.3"
textwrap = "0.15.1"
tokio-tungstenite = { version = "0.17.2", features = ["__rustls-tls", "rustls-tls-native-roots"] }
tokio = "1.35.1"
num = "0.4.1"
num-traits = "0.2.17"
num-derive = "0.4.1"
textwrap = "0.16.0"
tokio-tungstenite = { version = "0.20.1", features = ["__rustls-tls", "rustls-tls-native-roots"] }
serde_urlencoded = "0.7.1"
futures = "0.3.23"
serde_json = "1.0.85"
futures = "0.3.30"
serde_json = "1.0.110"
hostname = "0.3.1"
rustls = "0.20.6"
hyper-rustls = { version = "0.23.0", features = ["rustls-native-certs"] }
rustls = "0.21.9"
hyper-rustls = { version = "0.24.2", features = ["rustls-native-certs"] }
reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features = false }

View File

@ -20,7 +20,7 @@ pub struct CliArgs {
value_parser,
default_value = "https://seabattleapi.communiquons.org"
)]
pub remote_server_uri: String,
pub remote_server: String,
/// Local server listen address
#[clap(short, long, default_value = "127.0.0.1:5679")]
@ -61,3 +61,14 @@ lazy_static::lazy_static! {
pub fn cli_args() -> &'static CliArgs {
&ARGS
}
#[cfg(test)]
mod test {
use crate::cli_args::CliArgs;
#[test]
fn verify_cli() {
use clap::CommandFactory;
CliArgs::command().debug_assert()
}
}

View File

@ -3,12 +3,13 @@ use crate::server;
use futures::stream::{SplitSink, SplitStream};
use futures::{SinkExt, StreamExt};
use hyper_rustls::ConfigBuilderExt;
use sea_battle_backend::data::GameRules;
use sea_battle_backend::data::*;
use sea_battle_backend::human_player_ws::{ClientMessage, ServerMessage};
use sea_battle_backend::server::{
AcceptInviteQuery, BotPlayQuery, CreateInviteQuery, PlayRandomQuery,
};
use sea_battle_backend::utils::res_utils::{boxed_error, Res};
use std::error::Error;
use std::fmt::Display;
use std::sync::mpsc::TryRecvError;
use std::sync::{mpsc, Arc};
@ -18,6 +19,11 @@ use tokio_tungstenite::{MaybeTlsStream, WebSocketStream};
type WsStream = WebSocketStream<MaybeTlsStream<TcpStream>>;
pub enum GetRemoteVersionError {
ConnectionFailed,
Other(Box<dyn Error>),
}
/// Connection client
///
/// This structure acts as a wrapper around websocket connection that handles automatically parsing
@ -28,6 +34,24 @@ pub struct Client {
}
impl Client {
/// Get remote server version
pub async fn get_server_version() -> Result<VersionInfo, GetRemoteVersionError> {
let url = format!("{}/version", cli_args().remote_server);
log::debug!("Getting remote information from {} ...", url);
let res = match reqwest::get(url).await {
Ok(r) => r,
Err(e) if e.is_timeout() || e.is_connect() => {
return Err(GetRemoteVersionError::ConnectionFailed)
}
Err(e) => return Err(GetRemoteVersionError::Other(Box::new(e))),
};
res.json()
.await
.map_err(|e| GetRemoteVersionError::Other(Box::new(e)))
}
/// Start to play against a bot
///
/// When playing against a bot, local server is always used
@ -38,7 +62,7 @@ impl Client {
&cli_args().local_server_address(),
&format!(
"/play/bot?{}",
serde_urlencoded::to_string(&BotPlayQuery {
serde_urlencoded::to_string(BotPlayQuery {
rules: rules.clone(),
player_name: "Human".to_string()
})
@ -51,10 +75,10 @@ impl Client {
/// Start to play against a random player
pub async fn start_random_play<D: Display>(player_name: D) -> Res<Self> {
Self::connect_url(
&cli_args().remote_server_uri,
&cli_args().remote_server,
&format!(
"/play/random?{}",
serde_urlencoded::to_string(&PlayRandomQuery {
serde_urlencoded::to_string(PlayRandomQuery {
player_name: player_name.to_string()
})
.unwrap()
@ -66,10 +90,10 @@ impl Client {
/// Start a play by creating an invite
pub async fn start_create_invite<D: Display>(rules: &GameRules, player_name: D) -> Res<Self> {
Self::connect_url(
&cli_args().remote_server_uri,
&cli_args().remote_server,
&format!(
"/play/create_invite?{}",
serde_urlencoded::to_string(&CreateInviteQuery {
serde_urlencoded::to_string(CreateInviteQuery {
rules: rules.clone(),
player_name: player_name.to_string()
})
@ -82,10 +106,10 @@ impl Client {
/// Start a play by accepting an invite
pub async fn start_accept_invite<D: Display>(code: String, player_name: D) -> Res<Self> {
Self::connect_url(
&cli_args().remote_server_uri,
&cli_args().remote_server,
&format!(
"/play/accept_invite?{}",
serde_urlencoded::to_string(&AcceptInviteQuery {
serde_urlencoded::to_string(AcceptInviteQuery {
code,
player_name: player_name.to_string()
})
@ -109,7 +133,7 @@ impl Client {
.with_no_client_auth();
let connector = tokio_tungstenite::Connector::Rustls(Arc::new(config));
tokio_tungstenite::connect_async_tls_with_config(ws_url, None, Some(connector)).await?
tokio_tungstenite::connect_async_tls_with_config(ws_url, None, false,Some(connector)).await?
} else {
// Perform an unsecure connection
tokio_tungstenite::connect_async(ws_url).await?

View File

@ -2,7 +2,7 @@ extern crate core;
pub mod cli_args;
pub mod client;
pub mod constants;
pub mod consts;
pub mod server;
pub mod ui_screens;
pub mod ui_widgets;

View File

@ -18,7 +18,7 @@ use sea_battle_backend::consts::{
use sea_battle_backend::data::GameRules;
use sea_battle_backend::utils::res_utils::Res;
use sea_battle_cli_player::cli_args::{cli_args, TestDevScreen};
use sea_battle_cli_player::client::Client;
use sea_battle_cli_player::client::{Client, GetRemoteVersionError};
use sea_battle_cli_player::server::run_server;
use sea_battle_cli_player::ui_screens::configure_game_rules::GameRulesConfigurationScreen;
use sea_battle_cli_player::ui_screens::game_screen::GameScreen;
@ -35,10 +35,10 @@ async fn run_dev<B: Backend>(
d: TestDevScreen,
) -> Result<(), Box<dyn Error>> {
let res = match d {
TestDevScreen::Popup => popup_screen::PopupScreen::new("Welcome there!!")
TestDevScreen::Popup => PopupScreen::new("Welcome there!!")
.show(terminal)?
.as_string(),
TestDevScreen::Input => input_screen::InputScreen::new("What it your name ?")
TestDevScreen::Input => InputScreen::new("What it your name ?")
.set_title("A custom title")
.show(terminal)?
.as_string(),
@ -50,9 +50,9 @@ async fn run_dev<B: Backend>(
TestDevScreen::SelectBotType => select_bot_type_screen::SelectBotTypeScreen::default()
.show(terminal)?
.as_string(),
TestDevScreen::SelectPlayMode => select_play_mode_screen::SelectPlayModeScreen::default()
.show(terminal)?
.as_string(),
TestDevScreen::SelectPlayMode => {
SelectPlayModeScreen::default().show(terminal)?.as_string()
}
TestDevScreen::SetBoatsLayout => {
let rules = GameRules {
boats_can_touch: true,
@ -64,7 +64,7 @@ async fn run_dev<B: Backend>(
.as_string()
}
TestDevScreen::ConfigureGameRules => {
configure_game_rules::GameRulesConfigurationScreen::new(GameRules::default())
GameRulesConfigurationScreen::new(GameRules::default())
.show(terminal)?
.as_string()
}
@ -99,14 +99,41 @@ async fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> Res {
return run_dev(terminal, d).await;
}
let mut checked_online_compatibility = false;
let mut rules = GameRules::default();
let mut username = "".to_string();
loop {
terminal.clear()?;
let choice = SelectPlayModeScreen::default().show(terminal)?;
if let ScreenResult::Ok(c) = choice {
// Check compatibility
if c.is_online_play_mode() && !checked_online_compatibility {
PopupScreen::new("🖥 Checking remote server version...").show_once(terminal)?;
let valid_version = match Client::get_server_version().await {
Ok(v) => v.is_compatible_with_static_version().unwrap_or(false),
Err(GetRemoteVersionError::ConnectionFailed) => {
PopupScreen::new("❌ Could not connect to remote server!")
.show(terminal)?;
continue;
}
Err(GetRemoteVersionError::Other(e)) => {
log::error!("Could not load remote server information! {:?}", e);
false
}
};
if !valid_version {
PopupScreen::new("❌ Unfortunately, it seems that your version of Sea Battle Cli player is too old to be used online...\n\nPlease update it before trying to play online...").show(terminal)?;
continue;
}
checked_online_compatibility = true;
}
if c.need_player_name() && username.is_empty() {
username = query_player_name(terminal)?;
}
@ -123,17 +150,17 @@ async fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> Res {
let client = match choice {
ScreenResult::Ok(SelectPlayModeResult::PlayRandom) => {
Client::start_random_play(&username).await?
Client::start_random_play(&username).await
}
// Play against bot
ScreenResult::Ok(SelectPlayModeResult::PlayAgainstBot) => {
Client::start_bot_play(&rules).await?
Client::start_bot_play(&rules).await
}
// Create invite
ScreenResult::Ok(SelectPlayModeResult::CreateInvite) => {
Client::start_create_invite(&rules, &username).await?
Client::start_create_invite(&rules, &username).await
}
// Join invite
@ -149,14 +176,22 @@ async fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> Res {
};
PopupScreen::new("🔌 Connecting...").show_once(terminal)?;
Client::start_accept_invite(code, &username).await?
Client::start_accept_invite(code, &username).await
}
ScreenResult::Canceled | ScreenResult::Ok(SelectPlayModeResult::Exit) => return Ok(()),
};
// Display game screen
GameScreen::new(client).show(terminal).await?;
match client {
Ok(client) => {
// Display game screen
GameScreen::new(client).show(terminal).await?;
}
Err(e) => {
log::error!("Failed to connect to server: {}", e);
PopupScreen::new("❌ Failed to connect to server!").show(terminal)?;
}
};
}
}

View File

@ -16,7 +16,7 @@ use tui::{Frame, Terminal};
use sea_battle_backend::data::GameRules;
use crate::constants::{HIGHLIGHT_COLOR, TICK_RATE};
use crate::consts::{HIGHLIGHT_COLOR, TICK_RATE};
use crate::ui_screens::popup_screen::show_screen_too_small_popup;
use crate::ui_screens::select_bot_type_screen::SelectBotTypeScreen;
use crate::ui_screens::utils::centered_rect_size;
@ -25,7 +25,7 @@ use crate::ui_widgets::button_widget::ButtonWidget;
use crate::ui_widgets::checkbox_widget::CheckboxWidget;
use crate::ui_widgets::text_editor_widget::TextEditorWidget;
#[derive(num_derive::FromPrimitive, num_derive::ToPrimitive, Eq, PartialEq)]
#[derive(num_derive::FromPrimitive, num_derive::ToPrimitive, Eq, PartialEq, Copy, Clone)]
enum EditingField {
MapWidth = 0,
MapHeight,
@ -69,7 +69,7 @@ impl GameRulesConfigurationScreen {
if let Event::Key(key) = event::read()? {
match key.code {
// Quit app
KeyCode::Char('q') => return Ok(ScreenResult::Canceled),
KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled),
// Navigate between fields
KeyCode::Up | KeyCode::Left => cursor_pos -= 1,
@ -128,7 +128,7 @@ impl GameRulesConfigurationScreen {
}
}
KeyCode::Char(c) if ('0'..='9').contains(&c) => {
KeyCode::Char(c) if c.is_ascii_digit() => {
let val = c.to_string().parse::<usize>().unwrap_or_default();
if self.curr_field == EditingField::MapWidth
@ -283,10 +283,10 @@ impl GameRulesConfigurationScreen {
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)])
.split(chunks[EditingField::OK as usize]);
let button = ButtonWidget::new("Cancel", self.curr_field == EditingField::Cancel);
let button = ButtonWidget::cancel(self.curr_field == EditingField::Cancel);
f.render_widget(button, buttons_chunk[0]);
let button = ButtonWidget::new("OK", self.curr_field == EditingField::OK)
let button = ButtonWidget::ok(self.curr_field == EditingField::OK)
.set_disabled(!self.rules.is_valid());
f.render_widget(button, buttons_chunk[1]);

View File

@ -9,7 +9,7 @@ use tui::text::*;
use tui::widgets::*;
use tui::{Frame, Terminal};
use crate::constants::*;
use crate::consts::*;
use crate::ui_screens::utils::centered_rect_size;
use crate::ui_screens::ScreenResult;
use crate::ui_widgets::button_widget::ButtonWidget;
@ -18,6 +18,7 @@ use crate::ui_widgets::button_widget::ButtonWidget;
pub fn confirm<B: Backend>(terminal: &mut Terminal<B>, msg: &str) -> bool {
matches!(
ConfirmDialogScreen::new(msg)
.set_can_escape(true)
.show(terminal)
.unwrap_or(ScreenResult::Canceled),
ScreenResult::Ok(true)
@ -28,19 +29,24 @@ pub struct ConfirmDialogScreen<'a> {
title: &'a str,
msg: &'a str,
is_confirm: bool,
can_cancel: bool,
can_escape: bool,
}
impl<'a> ConfirmDialogScreen<'a> {
pub fn new(msg: &'a str) -> Self {
Self {
title: "Confirmation Request",
title: "Confirmation Request",
msg,
is_confirm: true,
can_cancel: false,
can_escape: false,
}
}
pub fn set_can_escape(mut self, v: bool) -> Self {
self.can_escape = v;
self
}
pub fn show<B: Backend>(
mut self,
terminal: &mut Terminal<B>,
@ -56,7 +62,7 @@ impl<'a> ConfirmDialogScreen<'a> {
if event::poll(timeout)? {
if let Event::Key(key) = event::read()? {
match key.code {
KeyCode::Esc | KeyCode::Char('q') if self.can_cancel => {
KeyCode::Esc | KeyCode::Char('q') if self.can_escape => {
return Ok(ScreenResult::Canceled)
}
@ -117,10 +123,10 @@ impl<'a> ConfirmDialogScreen<'a> {
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref())
.split(chunks[1]);
let cancel_button = ButtonWidget::new("Cancel", true).set_disabled(self.is_confirm);
let cancel_button = ButtonWidget::cancel(true).set_disabled(self.is_confirm);
f.render_widget(cancel_button, buttons_area[0]);
let ok_button = ButtonWidget::new("Confirm", true).set_disabled(!self.is_confirm);
let ok_button = ButtonWidget::new("Confirm", true).set_disabled(!self.is_confirm);
f.render_widget(ok_button, buttons_area[1]);
}
}

View File

@ -16,7 +16,7 @@ use sea_battle_backend::utils::res_utils::Res;
use sea_battle_backend::utils::time_utils::time;
use crate::client::Client;
use crate::constants::*;
use crate::consts::*;
use crate::ui_screens::confirm_dialog_screen::confirm;
use crate::ui_screens::popup_screen::{show_screen_too_small_popup, PopupScreen};
use crate::ui_screens::set_boats_layout_screen::SetBoatsLayoutScreen;
@ -147,7 +147,7 @@ impl GameScreen {
match key.code {
// Leave game
KeyCode::Char('q')
KeyCode::Char('q') | KeyCode::Esc
if confirm(terminal, "Do you really want to leave game?") =>
{
self.client.close_connection().await;

View File

@ -10,7 +10,7 @@ use tui::layout::*;
use tui::widgets::*;
use tui::{Frame, Terminal};
use crate::constants::*;
use crate::consts::*;
use crate::ui_screens::utils::*;
use crate::ui_screens::ScreenResult;
use crate::ui_widgets::button_widget::ButtonWidget;
@ -163,12 +163,12 @@ impl<'a> InputScreen<'a> {
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref())
.split(*chunks.last().unwrap());
let cancel_button = ButtonWidget::new("Cancel", self.is_cancel_hovered)
let cancel_button = ButtonWidget::cancel(self.is_cancel_hovered)
.set_disabled(!self.can_cancel)
.set_min_width(8);
f.render_widget(cancel_button, buttons_area[0]);
let ok_button = ButtonWidget::new("OK", !self.is_cancel_hovered)
let ok_button = ButtonWidget::ok(!self.is_cancel_hovered)
.set_min_width(8)
.set_disabled(error.is_some());
f.render_widget(ok_button, buttons_area[1]);

View File

@ -9,7 +9,7 @@ use tui::text::*;
use tui::widgets::*;
use tui::{Frame, Terminal};
use crate::constants::*;
use crate::consts::*;
use crate::ui_screens::utils::centered_rect_size;
use crate::ui_screens::ScreenResult;
use crate::ui_widgets::button_widget::ButtonWidget;
@ -52,7 +52,7 @@ impl<'a> PopupScreen<'a> {
if event::poll(timeout)? {
if let Event::Key(key) = event::read()? {
match key.code {
KeyCode::Char('q') => return Ok(ScreenResult::Canceled),
KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled),
KeyCode::Enter => {
return Ok(ScreenResult::Ok(()));
}

View File

@ -11,7 +11,7 @@ use tui::{Frame, Terminal};
use sea_battle_backend::data::{BotDescription, BotType, PlayConfiguration};
use crate::constants::{HIGHLIGHT_COLOR, TICK_RATE};
use crate::consts::{HIGHLIGHT_COLOR, TICK_RATE};
use crate::ui_screens::utils::centered_rect_size;
use crate::ui_screens::ScreenResult;
@ -49,7 +49,7 @@ impl SelectBotTypeScreen {
if event::poll(timeout)? {
if let Event::Key(key) = event::read()? {
match key.code {
KeyCode::Char('q') => return Ok(ScreenResult::Canceled),
KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled),
KeyCode::Enter => {
return Ok(ScreenResult::Ok(self.types[self.curr_selection].r#type));
}

View File

@ -1,7 +1,7 @@
use std::io;
use std::time::{Duration, Instant};
use crate::constants::{HIGHLIGHT_COLOR, TICK_RATE};
use crate::consts::{HIGHLIGHT_COLOR, TICK_RATE};
use crate::ui_screens::utils::centered_rect_size;
use crate::ui_screens::ScreenResult;
use crossterm::event;
@ -33,6 +33,11 @@ impl SelectPlayModeResult {
pub fn need_custom_rules(&self) -> bool {
self == &SelectPlayModeResult::PlayAgainstBot || self == &SelectPlayModeResult::CreateInvite
}
/// Specify whether a play mode is to be played online or not
pub fn is_online_play_mode(&self) -> bool {
self != &SelectPlayModeResult::PlayAgainstBot && self != &SelectPlayModeResult::Exit
}
}
#[derive(Debug, Clone)]
@ -87,7 +92,7 @@ impl SelectPlayModeScreen {
if crossterm::event::poll(timeout)? {
if let Event::Key(key) = event::read()? {
match key.code {
KeyCode::Char('q') => return Ok(ScreenResult::Canceled),
KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled),
KeyCode::Enter => {
return Ok(ScreenResult::Ok(
AVAILABLE_PLAY_MODES[self.curr_selection].value,

View File

@ -12,7 +12,7 @@ use tui::{Frame, Terminal};
use sea_battle_backend::data::*;
use crate::constants::*;
use crate::consts::*;
use crate::ui_screens::confirm_dialog_screen::confirm;
use crate::ui_screens::popup_screen::show_screen_too_small_popup;
use crate::ui_screens::utils::{centered_rect_size, centered_text};
@ -66,7 +66,7 @@ impl<'a> SetBoatsLayoutScreen<'a> {
let event = event::read()?;
if let Event::Key(key) = &event {
match key.code {
KeyCode::Char('q') => {
KeyCode::Char('q') | KeyCode::Esc => {
if !self.confirm_on_cancel
|| confirm(terminal, "Do you really want to quit?")
{
@ -202,7 +202,7 @@ impl<'a> SetBoatsLayoutScreen<'a> {
.add_colored_cells(current_boat)
.add_colored_cells(invalid_boats)
.add_colored_cells(other_boats)
.set_title("Choose your boat layout")
.set_title("🛥 Set your boats layout")
.set_yield_func(|c, r| {
for i in 0..r.width {
for j in 0..r.height {

View File

@ -1,6 +1,6 @@
use std::fmt::Display;
use crate::constants::HIGHLIGHT_COLOR;
use crate::consts::HIGHLIGHT_COLOR;
use tui::buffer::Buffer;
use tui::layout::Rect;
use tui::style::{Color, Style};
@ -13,6 +13,7 @@ pub struct ButtonWidget {
label: String,
disabled: bool,
min_width: usize,
hover_bg_color: Color,
}
impl ButtonWidget {
@ -22,9 +23,18 @@ impl ButtonWidget {
is_hovered,
disabled: false,
min_width: 0,
hover_bg_color: HIGHLIGHT_COLOR,
}
}
pub fn cancel(is_hovered: bool) -> Self {
Self::new("❌ Cancel", is_hovered).set_hover_bg_color(Color::Red)
}
pub fn ok(is_hovered: bool) -> Self {
Self::new("✅ OK", is_hovered)
}
pub fn set_disabled(mut self, disabled: bool) -> Self {
self.disabled = disabled;
self
@ -35,6 +45,11 @@ impl ButtonWidget {
self
}
pub fn set_hover_bg_color(mut self, v: Color) -> Self {
self.hover_bg_color = v;
self
}
pub fn estimated_size(&self) -> (u16, u16) {
((self.label.len() + 2).max(self.min_width) as u16, 1)
}
@ -55,7 +70,7 @@ impl Widget for ButtonWidget {
let input = Paragraph::new(label.as_ref()).style(match (self.disabled, self.is_hovered) {
(true, _) => Style::default(),
(_, false) => Style::default().bg(Color::DarkGray),
(_, true) => Style::default().fg(Color::White).bg(HIGHLIGHT_COLOR),
(_, true) => Style::default().fg(Color::White).bg(self.hover_bg_color),
});
input.render(area, buf);

View File

@ -1,4 +1,4 @@
use crate::constants::HIGHLIGHT_COLOR;
use crate::consts::HIGHLIGHT_COLOR;
use std::fmt::Display;
use tui::buffer::Buffer;
use tui::layout::Rect;

View File

@ -1,6 +1,6 @@
use std::fmt::Display;
use crate::constants::HIGHLIGHT_COLOR;
use crate::consts::HIGHLIGHT_COLOR;
use tui::buffer::Buffer;
use tui::layout::Rect;
use tui::style::*;