Skip to content

Commit

Permalink
Add Spanish translation for advanced/commands.md (#988)
Browse files Browse the repository at this point in the history
Add Spanish translation for advanced/commands.md

---------

Co-authored-by: Jorge Acosta <[email protected]>
  • Loading branch information
alemohamad and jacostaf10 authored Jun 27, 2024
1 parent 1845ab5 commit ae759d6
Showing 1 changed file with 129 additions and 0 deletions.
129 changes: 129 additions & 0 deletions docs/advanced/commands.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# Comandos

La API de comandos de Vapor te permite crear funciones de línea de comandos personalizadas e interactuar con la consola (terminal). Es en lo que se basan los comandos predeterminados de Vapor como `serve`, `routes` y `migrate`.

## Comandos Predeterminados

Puedes obtener más información sobre los comandos predeterminados de Vapor usando la opción `--help`.

```sh
swift run App --help
```

Puedes usar `--help` en un comando específico para ver qué argumentos y opciones acepta.

```sh
swift run App serve --help
```

### Xcode

Puedes ejecutar comandos en Xcode agregando argumentos al esquema `App`. Para hacerlo, sigue estos pasos:

- Elige el esquema `App` (a la derecha de los botones play/stop)
- Haz clic en "Edit Scheme"
- Elige el producto "App"
- Selecciona la pestaña "Arguments"
- Agrega el nombre del comando a "Arguments Passed On Launch" (por ejemplo, `serve`)

## Comandos Personalizados

Puedes crear tus propios comandos creando tipos que conformen a `AsyncCommand`.

```swift
import Vapor

struct HelloCommand: AsyncCommand {
...
}
```

Agregar el comando personalizado a `app.asyncCommands` lo hará disponible mediante `swift run`.

```swift
app.asyncCommands.use(HelloCommand(), as: "hello")
```

Para conformar con `AsyncCommand`, debes implementar el método `run`. Esto requiere declarar una `Signature`. También debes proporcionar el texto de ayuda predeterminado.

```swift
import Vapor

struct HelloCommand: AsyncCommand {
struct Signature: CommandSignature { }

var help: String {
"Says hello"
}

func run(using context: CommandContext, signature: Signature) async throws {
context.console.print("Hello, world!")
}
}
```

Este ejemplo de comando simple no tiene argumentos ni opciones, así que deja la firma vacía.

Puedes obtener acceso a la consola actual a través del contexto proporcionado. La consola tiene muchos métodos útiles para solicitar la entrada del usuario, el formato de salida y más.

```swift
let name = context.console.ask("What is your \("name", color: .blue)?")
context.console.print("Hello, \(name) 👋")
```

Prueba tu comando ejecutando:

```sh
swift run App hello
```

### Cowsay

Aquí tienes una recreación del famoso comando [`cowsay`](https://en.wikipedia.org/wiki/Cowsay) para ver un ejemplo de cómo usar `@Argument` y `@Option`.

```swift
import Vapor

struct Cowsay: AsyncCommand {
struct Signature: CommandSignature {
@Argument(name: "message")
var message: String

@Option(name: "eyes", short: "e")
var eyes: String?

@Option(name: "tongue", short: "t")
var tongue: String?
}

var help: String {
"Generates ASCII picture of a cow with a message."
}

func run(using context: CommandContext, signature: Signature) async throws {
let eyes = signature.eyes ?? "oo"
let tongue = signature.tongue ?? " "
let cow = #"""
< $M >
\ ^__^
\ ($E)\_______
(__)\ )\/\
$T ||----w |
|| ||
"""#.replacingOccurrences(of: "$M", with: signature.message)
.replacingOccurrences(of: "$E", with: eyes)
.replacingOccurrences(of: "$T", with: tongue)
context.console.print(cow)
}
}
```

Intenta agregar esto a tu aplicación y ejecútalo.

```swift
app.asyncCommands.use(Cowsay(), as: "cowsay")
```

```sh
swift run App cowsay sup --eyes ^^ --tongue "U "
```

0 comments on commit ae759d6

Please sign in to comment.