1use std::ffi::OsString;
2
3use crate::{
4 ApplyDiffArtifacts, CodexClient, CodexError, PluginCommandRequest, PluginHelpRequest,
5 PluginMarketplaceAddRequest, PluginMarketplaceCommandRequest, PluginMarketplaceHelpRequest,
6 PluginMarketplaceRemoveRequest, PluginMarketplaceUpgradeRequest,
7};
8
9impl CodexClient {
10 pub async fn plugin(
12 &self,
13 request: PluginCommandRequest,
14 ) -> Result<ApplyDiffArtifacts, CodexError> {
15 self.run_simple_command_with_overrides(vec![OsString::from("plugin")], request.overrides)
16 .await
17 }
18
19 pub async fn plugin_help(
21 &self,
22 request: PluginHelpRequest,
23 ) -> Result<ApplyDiffArtifacts, CodexError> {
24 let PluginHelpRequest { command, overrides } = request;
25 let mut args = vec![OsString::from("plugin"), OsString::from("help")];
26 args.extend(command.into_iter().map(OsString::from));
27 self.run_simple_command_with_overrides(args, overrides)
28 .await
29 }
30
31 pub async fn plugin_marketplace(
33 &self,
34 request: PluginMarketplaceCommandRequest,
35 ) -> Result<ApplyDiffArtifacts, CodexError> {
36 self.run_simple_command_with_overrides(
37 vec![OsString::from("plugin"), OsString::from("marketplace")],
38 request.overrides,
39 )
40 .await
41 }
42
43 pub async fn plugin_marketplace_help(
45 &self,
46 request: PluginMarketplaceHelpRequest,
47 ) -> Result<ApplyDiffArtifacts, CodexError> {
48 let PluginMarketplaceHelpRequest { command, overrides } = request;
49 let mut args = vec![
50 OsString::from("plugin"),
51 OsString::from("marketplace"),
52 OsString::from("help"),
53 ];
54 args.extend(command.into_iter().map(OsString::from));
55 self.run_simple_command_with_overrides(args, overrides)
56 .await
57 }
58
59 pub async fn plugin_marketplace_add(
61 &self,
62 request: PluginMarketplaceAddRequest,
63 ) -> Result<ApplyDiffArtifacts, CodexError> {
64 let PluginMarketplaceAddRequest {
65 source,
66 source_ref,
67 sparse_path,
68 overrides,
69 } = request;
70
71 let mut args = vec![
72 OsString::from("plugin"),
73 OsString::from("marketplace"),
74 OsString::from("add"),
75 ];
76 if let Some(source_ref) = source_ref {
77 args.push(OsString::from("--ref"));
78 args.push(OsString::from(source_ref));
79 }
80 if let Some(sparse_path) = sparse_path {
81 args.push(OsString::from("--sparse"));
82 args.push(OsString::from(sparse_path));
83 }
84 args.push(OsString::from(source));
85
86 self.run_simple_command_with_overrides(args, overrides)
87 .await
88 }
89
90 pub async fn plugin_marketplace_remove(
92 &self,
93 request: PluginMarketplaceRemoveRequest,
94 ) -> Result<ApplyDiffArtifacts, CodexError> {
95 let PluginMarketplaceRemoveRequest {
96 marketplace_name,
97 overrides,
98 } = request;
99
100 self.run_simple_command_with_overrides(
101 vec![
102 OsString::from("plugin"),
103 OsString::from("marketplace"),
104 OsString::from("remove"),
105 OsString::from(marketplace_name),
106 ],
107 overrides,
108 )
109 .await
110 }
111
112 pub async fn plugin_marketplace_upgrade(
114 &self,
115 request: PluginMarketplaceUpgradeRequest,
116 ) -> Result<ApplyDiffArtifacts, CodexError> {
117 let PluginMarketplaceUpgradeRequest {
118 marketplace_name,
119 overrides,
120 } = request;
121
122 let mut args = vec![
123 OsString::from("plugin"),
124 OsString::from("marketplace"),
125 OsString::from("upgrade"),
126 ];
127 if let Some(marketplace_name) = marketplace_name {
128 args.push(OsString::from(marketplace_name));
129 }
130
131 self.run_simple_command_with_overrides(args, overrides)
132 .await
133 }
134}