Skip to content

Commit e73961f

Browse files
authored
Fix(config reset when syncing config) (#207)
* fix(Add RUSTC_BOOTSTRAP to devshell) * fix(Serialize config if non-default, rather than never)
1 parent 9bb6380 commit e73961f

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

flake.nix

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878

7979
# Env vars
8080
# a nightly compiler is required unless we use this cheat code.
81-
RUSTC_BOOTSTRAP = 0;
81+
RUSTC_BOOTSTRAP = 1;
8282

8383
# CFG_RELEASE = "${rustPlatform.rust.rustc.version}-stable";
8484
CFG_RELEASE_CHANNEL = "stable";
@@ -104,6 +104,8 @@
104104
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
105105
RUST_BACKTRACE = "full";
106106
LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs;
107+
RUSTC_BOOTSTRAP = 1;
108+
CFG_RELEASE_CHANNEL = "stable";
107109
};
108110
}
109111
);

rust-toolchain.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ components = [
66
"rustfmt",
77
"clippy",
88
"rust-analyzer",
9+
"rust-src"
910
]
1011
profile = "minimal"

src/config/code.rs

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
//! Code in config
22
use serde::{Deserialize, Serialize};
33

4+
const PICK_DEFAULT: &str = "${fid}.${slug}";
45
fn default_pick() -> String {
5-
"${fid}.${slug}".into()
6+
PICK_DEFAULT.into()
67
}
78

9+
const SUBMISSION_DEFAULT: &str = "${fid}.${slug}.${sid}.${ac}";
810
fn default_submission() -> String {
9-
"${fid}.${slug}.${sid}.${ac}".into()
11+
SUBMISSION_DEFAULT.into()
12+
}
13+
14+
fn is_default_pick(t: &String) -> bool {
15+
t == PICK_DEFAULT
16+
}
17+
18+
fn is_default_submission(t: &String) -> bool {
19+
t == SUBMISSION_DEFAULT
20+
}
21+
22+
fn is_default_string(t: &String) -> bool {
23+
t.is_empty()
24+
}
25+
fn is_default_bool(t: &bool) -> bool {
26+
!t
1027
}
1128

1229
/// Code config
@@ -18,26 +35,29 @@ pub struct Code {
1835
pub editor_args: Option<Vec<String>>,
1936
#[serde(rename(serialize = "editor-envs"), alias = "editor-envs", default)]
2037
pub editor_envs: Option<Vec<String>>,
21-
#[serde(default, skip_serializing)]
38+
#[serde(default, skip_serializing_if = "is_default_bool")]
2239
pub edit_code_marker: bool,
23-
#[serde(default, skip_serializing)]
40+
#[serde(default, skip_serializing_if = "is_default_string")]
2441
pub start_marker: String,
25-
#[serde(default, skip_serializing)]
42+
#[serde(default, skip_serializing_if = "is_default_string")]
2643
pub end_marker: String,
2744
#[serde(rename(serialize = "inject_before"), alias = "inject_before", default)]
2845
pub inject_before: Option<Vec<String>>,
2946
#[serde(rename(serialize = "inject_after"), alias = "inject_after", default)]
3047
pub inject_after: Option<Vec<String>>,
31-
#[serde(default, skip_serializing)]
48+
#[serde(default, skip_serializing_if = "is_default_bool")]
3249
pub comment_problem_desc: bool,
33-
#[serde(default, skip_serializing)]
50+
#[serde(default, skip_serializing_if = "is_default_string")]
3451
pub comment_leading: String,
35-
#[serde(default, skip_serializing)]
52+
#[serde(default, skip_serializing_if = "is_default_bool")]
3653
pub test: bool,
3754
pub lang: String,
38-
#[serde(default = "default_pick", skip_serializing)]
55+
#[serde(default = "default_pick", skip_serializing_if = "is_default_pick")]
3956
pub pick: String,
40-
#[serde(default = "default_submission", skip_serializing)]
57+
#[serde(
58+
default = "default_submission",
59+
skip_serializing_if = "is_default_submission"
60+
)]
4161
pub submission: String,
4262
}
4363

0 commit comments

Comments
 (0)