Skip to content

Commit 59f603c

Browse files
committed
Add input types to CLI bindings
1 parent a3c7bdf commit 59f603c

File tree

3 files changed

+74
-64
lines changed

3 files changed

+74
-64
lines changed

crates/tmc-langs-cli/bindings.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
export type Locale = string;
2+
3+
export type Compression = "tar" | "zip" | "zstd";
4+
15
export type CliOutput = { "output-kind": "output-data" } & OutputData | { "output-kind": "status-update" } & StatusUpdateData | { "output-kind": "notification" } & Notification;
26

37
export interface OutputData { status: Status, message: string, result: OutputResult, data: DataKind | null, }

crates/tmc-langs-cli/src/app.rs

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,8 @@ pub enum Settings {
565565
}
566566

567567
#[derive(Clone, Copy)]
568-
pub struct Locale(pub Language);
568+
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
569+
pub struct Locale(#[cfg_attr(feature = "ts-rs", ts(type = "string"))] pub Language);
569570

570571
impl FromStr for Locale {
571572
type Err = anyhow::Error;
@@ -1097,3 +1098,71 @@ mod settings_test {
10971098
get_matches_settings(&["unset", "key"]);
10981099
}
10991100
}
1101+
1102+
#[test]
1103+
#[ignore]
1104+
#[cfg(feature = "ts-rs")]
1105+
fn generate_cli_bindings() {
1106+
use crate::output::*;
1107+
use tmc_langs::*;
1108+
1109+
let mut f = std::fs::File::create("./bindings.d.ts").unwrap();
1110+
ts_rs::export_to!(
1111+
&mut f,
1112+
// input
1113+
Locale,
1114+
Compression,
1115+
// output
1116+
CliOutput,
1117+
OutputData,
1118+
StatusUpdateData,
1119+
notification_reporter::Notification,
1120+
Status,
1121+
OutputResult,
1122+
ClientUpdateData,
1123+
progress_reporter::StatusUpdate<()>,
1124+
notification_reporter::NotificationKind,
1125+
DataKind,
1126+
NewSubmission,
1127+
Kind,
1128+
StyleValidationResult,
1129+
ExerciseDownload,
1130+
StyleValidationStrategy,
1131+
StyleValidationError,
1132+
ExercisePackagingConfiguration,
1133+
LocalExercise,
1134+
RefreshData,
1135+
RunResult,
1136+
ExerciseDesc,
1137+
RefreshExercise,
1138+
RunStatus,
1139+
TestResult,
1140+
TestDesc,
1141+
TmcProjectYml,
1142+
UpdatedExercise,
1143+
DownloadOrUpdateCourseExercisesResult,
1144+
CombinedCourseData,
1145+
CourseDetails,
1146+
CourseExercise,
1147+
CourseData,
1148+
Course,
1149+
ExerciseDetails,
1150+
Submission,
1151+
UpdateResult,
1152+
Organization,
1153+
Review,
1154+
Exercise,
1155+
ExerciseSubmission,
1156+
ExercisePoint,
1157+
PythonVer,
1158+
TmcConfig,
1159+
ConfigValue,
1160+
SubmissionFinished,
1161+
SubmissionFeedbackResponse,
1162+
SubmissionStatus,
1163+
SubmissionFeedbackQuestion,
1164+
TestCase,
1165+
SubmissionFeedbackKind,
1166+
)
1167+
.unwrap();
1168+
}

crates/tmc-langs-cli/src/output.rs

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -263,66 +263,3 @@ mod test {
263263
assert_eq!(actual, expected);
264264
}
265265
}
266-
267-
#[test]
268-
#[ignore]
269-
#[cfg(feature = "ts-rs")]
270-
fn generate_output_definition() {
271-
use tmc_langs::*;
272-
273-
let mut f = std::fs::File::create("./bindings.d.ts").unwrap();
274-
ts_rs::export_to!(
275-
&mut f,
276-
CliOutput,
277-
OutputData,
278-
StatusUpdateData,
279-
Notification,
280-
Status,
281-
OutputResult,
282-
ClientUpdateData,
283-
StatusUpdate<()>,
284-
notification_reporter::NotificationKind,
285-
DataKind,
286-
NewSubmission,
287-
Kind,
288-
StyleValidationResult,
289-
ExerciseDownload,
290-
StyleValidationStrategy,
291-
StyleValidationError,
292-
ExercisePackagingConfiguration,
293-
LocalExercise,
294-
RefreshData,
295-
RunResult,
296-
ExerciseDesc,
297-
RefreshExercise,
298-
RunStatus,
299-
TestResult,
300-
TestDesc,
301-
TmcProjectYml,
302-
UpdatedExercise,
303-
DownloadOrUpdateCourseExercisesResult,
304-
CombinedCourseData,
305-
CourseDetails,
306-
CourseExercise,
307-
CourseData,
308-
Course,
309-
ExerciseDetails,
310-
Submission,
311-
UpdateResult,
312-
Organization,
313-
Review,
314-
Exercise,
315-
ExerciseSubmission,
316-
ExercisePoint,
317-
PythonVer,
318-
TmcConfig,
319-
ConfigValue,
320-
SubmissionFinished,
321-
SubmissionFeedbackResponse,
322-
SubmissionStatus,
323-
SubmissionFeedbackQuestion,
324-
TestCase,
325-
SubmissionFeedbackKind,
326-
)
327-
.unwrap();
328-
}

0 commit comments

Comments
 (0)