aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-12 01:01:35 +0900
committernsfisis <nsfisis@gmail.com>2026-06-12 01:01:43 +0900
commit1e44f5723e4c0e0903d00a61f254901e612fe5e1 (patch)
tree9c2e1eec364bbf6418a4072ee7767b04c3df0297 /crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs
parentddf0a624145b618c05c2ee47414545b99b685f37 (diff)
downloadphp-shirabe-1e44f5723e4c0e0903d00a61f254901e612fe5e1.tar.gz
php-shirabe-1e44f5723e4c0e0903d00a61f254901e612fe5e1.tar.zst
php-shirabe-1e44f5723e4c0e0903d00a61f254901e612fe5e1.zip
feat(symfony-console): port Symfony Console and make the workspace compile
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs b/crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs
new file mode 100644
index 0000000..c742fd5
--- /dev/null
+++ b/crates/shirabe-external-packages/src/symfony/console/attribute/as_command.rs
@@ -0,0 +1,34 @@
+/// Service tag to autoconfigure commands.
+///
+/// PHP attribute: #[\Attribute(\Attribute::TARGET_CLASS)]
+#[derive(Debug)]
+pub struct AsCommand {
+ pub name: String,
+ pub description: Option<String>,
+}
+
+impl AsCommand {
+ pub fn new(
+ name: String,
+ description: Option<String>,
+ aliases: Vec<String>,
+ hidden: bool,
+ ) -> Self {
+ let mut this = Self { name, description };
+
+ if !hidden && aliases.is_empty() {
+ return this;
+ }
+
+ let mut name: Vec<String> = this.name.split('|').map(|s| s.to_string()).collect();
+ name.extend(aliases);
+
+ if hidden && "" != name[0] {
+ name.insert(0, String::new());
+ }
+
+ this.name = name.join("|");
+
+ this
+ }
+}