Comandos
Se entiende como comandos, en este caso, como órdenes y/o instrucciones que se le pueden dar a la aplicación AnP lanzada, de esta forma poder interactuar en con éste en caliente.
Los comandos que se pueden ejecutar en AnP van orientados a fines distintos, dependiendo de a qué hacemos referencia. Para entender el funcionamiento general de los comandos de AnP, nos encontramos que éstos se basan en el funcionamiento JSON principalmente, donde tenemos dos conjuntos de entradas distintos principales:
- Array, vector o lista: Aquí se ordenan por posición dentro de una lista. Cada puesto es un valor de entrada distinto. A estos elementos se les llama parámetros internamente dentro del comando.
- Diccionario: Aquí se identifican por claves en formato String. Estos elementos se les llama en su conjunto atributos.
El orden de los parámetros sí afecta a lo que se quiere ordenar; mientras que los atributos, al basarse en claves no ordenadas, no afecta en absoluto.
De primeras, todo valor dado se identifica como un simple String y son los propios espacios en blanco, tabuladores y/o saltos de línea los que irán separando los distintos valores. Cuando queremos que un parámetro o atributo tenga espacios éste ha de ir encapsulado entre comillas simples o dobles, independientemente, para indicar al intérprete que se está dando un parámetro o atributo complejo y que busque el cierre de comilla. Las comillas se pueden escapar mediante el Slash, lo mismo que el propio Slash puede escaparse a sí mismo. Se entiende que cualquier Slash dentro de un parámetro o atributo encapsulado entre comillas será un caracter escapado.
Para identificar un elemento de diccionario simplemente hemos de poner una clave la cual sea un String que sólo puede contener dígitos, cualquier letra del alfabeto inglés y guiones bajos; todo ello acompañado, sin espacios, de un signo igual que lo separe del contenido al que se quiere que haga referencia. El contenido, si no se le especifica éste será un String vacío.
Los comandos se basan en un método o función a ejecutar a partir de un mapeado que estructura y define dichos comandos. El trabajo con dichos métodos o funciones se basa en llamarlos enviándoles, en este orden, los parámetros y luego los atributos, tal como se representa a continuación:
Por otro lado, tenemos los atributos para órdenes especiales, los cuales se identifican por ser iniciados por uno o dos guiones medios en su nombre o clave. Esto permite hacer ejecución de un segundo método o función asignado al comando para disgregar funciones, acciones, etc. Dentro del mismo comando u orden.
Añadir
Para añadir comandos hemos de hacer uso del método anp.terminarl.add el cual nos permite añadir, e incluso sobreescribir si dicho comando ya existe, a la lista de comandos generales del propio AnP. La sintaxis para añadir comandos se basa en JSON y viene siendo un diccionario cuya llave implica el como nombrar a ese comando a la hora de ser escrito en la Terminal o Consola de COMANDOS cuyo valor es otro diccionario anidado con las siguientes claves de entrada:
- synonyms (Optional) [Array[String]|String]: Palabras clave las cuales son equivalentes dentro de la Terminal o Consola de COMANDOS, como puede ser el caso de echo y print para imprimir por pantalla un texto dado. También se utiliza mucho con la finalidad de hacer simplificaciones a los nombres de dichos comandos, como puede ser la lista de comandos existente mediante el comando list y la letra l con la misma finalidad para simplificar a la hora de hacer uso del propio terminal.
- special (Optional) [String|Function|Array[String]]: Método o función usado para órdenes especiales. Las órdenes especiales son aquellas cuyos atributos empiezan por guines.
- method (Required) [String|Function|Array[String]]: Método o función usado para las órdenes dadas en el comando.
- parameters (Optional) [Array[String]|String]: Lista de parámetros que pueden acompañar a dicho comando.
La definición de entrada de parámetros, pese a que no afecte propiamente a la ejecución ni introducción de parámetros ni atributos dentro del comando, éste se especifica con el fin de poder autogestionar la ayuda mediante la I18N y el propio comando help. Dicho comportamiento se especifica de forma más profunda en la definición del propio comando help que vendrá más adelante.
Las entradas que se le pueden dar al método anp.terminarl.add pueden ser un Arrays, Diccionarios y/o Strings donde los Diccionarios han de cumplir con lo establecido anteriormente; los Strings pueden ser ficheros JSON o datos JSON con Arrays, Strings y/o Diccionario con las mismas normas.
echo
El comando echo es un comando principalmente de prueba, basado en el propio comando echo de Terminal o COMANDOS para probar que realmente funcionen de una forma adecuada. Dicho comando simplemente imprime por la Terminal o Consola de COMANDOS lo que le acompañe.
- typesh
- characters34
- lines2
echo hola echo "Hola. ¿Qué tal?"
Si ponemos más de un parámetro, ya sea por no haber controlado el grupo con comillas, o por poner más de un elemento de parámetro, así como intentar hacer uso de diccionarios, sólo se interpretará el primer parámetro, el resto se ignorará.
- typesh
- characters177
- lines10
> echo Hola. ¿Qué tal? Hola. > echo "Hola. ¿Qué tal?" Hola. ¿Qué tal? > echo saludo="Hola. ¿Qué tal?" despedida=Adiós > echo "Hola. ¿Qué tal?" "Adiós" Hola. ¿Qué tal? > echo
close
El comando close, también nombrado como bye o exit, nos permite cerrar la aplicación AnP de forma controlada.
- typesh
- characters5
- lines1
bye
! Se aconseja el uso de bye y/o close y no de exit por el hecho de que éste último puede chocar con el propio comando exit de la Terminal o Consola de COMANDOS.
help
El comando help, también nombrado como h o ?, nos permite acceder a la ayuda referente a la configuración actual de AnP. Dicha ayuda viene siendo como un manual para poderse guiar desde la propia terminal con los distintos comandos que nos encontramos.
La ayuda también puede ser solicitada desde otros comandos a partir de la estructura de llamamiento espcial con el mismo nombre. Por tanto, la forma de llamadas del comando help serían las siguientes a nivel de ejemplo:
- help, h o ?: Nos permite acceder a la ayuda general, donde se nos listarán los comandos que tenemos registrados en la terminal del AnP.
- COMANDO -help, COMANDO -h, COMANDO -?: Nos permite acceder a la ayuda específica de dicho comando.
list
El comando list, también nombrado como l, nos permite acceder a la lista de aplicaciones que tenemos registradas en nuestra aplicación AnP.
update
El comando update, también nombrado como u, nos permite actualizar partes de nuestra aplicación AnP o de aplicaciones registradas dentro de AnP concretamente, todo ello en caliente.
create
El comando create, también nombrado como c, nos permite crear una nueva aplicación y adjuntarla en caliente a la lista de aplicaciones de anP. Para poder llevar a cabo dicha acción, se requiere de especificar el nombre de la aplicación y el Path donde se quiere que se cree. Requiere de los siguientes parámetros:
- Nombre de la aplicación.
- Path absoluto donde meter dicha aplicación.
- Características de lenguajes que se quieren agregar.
Si la aplicación ya existe, éste complementará la aplicación con las características que se le den. Dichas características son:
- css, sass o scss: Nos permite montar toda la estructura base AnP en CSS y SCSS/SASS.
- js, ecma, javascript o ecmascript: Nos permite crear la estructura base AnP en JavaScript/ECMAScript.
- web: Nos permite montar toda la estructura Web cliente, es decir, la base ECMAScript/JavaScript y CSS y SCSS/SASS. Incluye, en los casos pertinentes a los lenguajes adjuntos, la creación del servidor intérprete de HTML y WMarkDown.
mariadb o mysql: Nos permite crear la estructura base AnP en MySQL/MariaDB.- sqlserver, mssql, sql_server o sql-server: Nos permite crear la estructura base AnP en SQL Server.
sqlite: Nos permite crear la estructura de base de datos base AnP en SQLite.- py o python: Nos permite crear la base de la aplicación AnP en Python. Si tiene habilitado algo de entorno Web lo complementará en este lenguaje; y si tiene algo relacionado a bases de datos lo complementará con éste también.
php: Nos permite crear la base de la aplicación AnP en PHP. Si tiene habilitado algo de entorno Web lo complementará en este lenguaje; y si tiene algo relacionado a bases de datos lo complementará con éste también.java: Nos permite crear la estructura de servidor AnP en Java.csharp, cs, c_sharp, c-sharp o c#: Nos permite crear la estructura para un servidor C#, ya sea MVC sobre .NET o bien, un MVC sobre AnP.rust: Nos permite crear la estructura para un servidor Rust sobre AnP.
Estos atributos se cuentan a partir del tercer parámetro dado al comando. Se le puede mandar en un único parámetro, un conjunto estructural a partir de los siguientes caracteres:
- s: Para crear la estructura CSS y SCSS/SASS.
- j: Para crear la estructura JavaScript/ECMAScript.
- w: Para simplificar la estructura completa de CSS, SCSS/SASS y JavaScript/ECMAScript.
m: Para crear la estructura MySQL/MariaDB.- x: Para crear la estructura SQL Server.
l: Para crear la estructura SQLite.p: Para crear la estructura de PHP.- y: Para crear la estructura de Python.
c: Para crear la estructura de CSharp.v: Para crear la estructura de Java.r: Para crear la estructura de Rust.
Sólo se interpretará el conjunto si sólo se le da un único parámetro.
Es importante señalar que el Path que se le dé es donde se instalará el directorio con el nombre del proyecto que se le dé, es decir, el Path sólo es la ruta donde crear el directorio de proyecto y el mismo dentro de éste.
Actualmente sólo están implementadas las estructuras de CSS, SCSS/SASS, ECMAScript/JavaScript, SQL Server y Python. este es el motivo por el cual salen tachadas muchas de estas opciones. La idea es ir implementándolas cara el futuro. También es importante contar que esta parte está en pleno desarrollo por lo que es fácil que la funcionalidad no esté completamente desarrollada o funcione de una forma probada y esperada.
Por otro lado, podemos ampliar los atributos de entrada con atributos como los siguientes:
- authors: Determina el o los autores del proyecto.
- link: Determina la URL del proyecto. Se desaconseja el uso de este atributo salvo que sea único, es decir, que no tenga entorno de pruebas ni nada. Si es el caso de tener un entorno de pruebas es aconsejable configurarlo manualmente por el patrón del Host.
- host_pattern: Por defecto, será el patrón regular adaptado a JSON del propio Link.
- git: URL del proyecto Git.
- licenses: Array de licencias que se quieren aplicar. Éstas están creadas a partir de un patrón cuyas claves son:
- copyright: Licencia que determina el Copyright como autor o autores del proyecto. Si se le dio uno o varios autores, éste se creará automáticamente.
- cc_by_nc_sa_4: Licencia Creative Commons para abrir el proyecto, pero con las condiciones de nombrar al autor o autores; que la base comercial del proyecto, si éste lo fuere, no sea el proyecto en cuestión; y que se permite el compartirlo, distribuirlo y editarlo. Todo ello condicionado a la versión 4.0 de la Creative Commons.
- menu: Menú de inicio, en la parte superior de la Web. Si tiene Link del proyecto Git, éste será aplicado automáticamente, lo mismo que si tiene sección de Aplicación Web.
Ejemplos
- typesh
- characters39
- lines1
create Test /PATH/ABSOLUTO python web
Crea una una aplicación llamada Test en el Path /PATH/ABSOLUTO/Test cuyo servidor es Python y sólo es Web. Un equialente simplificado de este proyecto sería el siguiente:
- typesh
- characters26
- lines1
c Test /PATH/ABSOLUTO wy
- typesh
- characters83
- lines1
c Test /media/kyman/SSD2TB/git wy git=https://git.k3y.pw/KyMAN/Test authors=KyMAN
Este comando crear el mismo proyecto que los anteriores per determinando el Git y la autoría de KyMAN para que éstos rellenen los Links y licencias correspondientes.