💾 Archived View for yretek.com › articulos › 2023-01-20_Articulator.gmi captured on 2023-09-28 at 15:52:48. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-04-19)
-=-=-=-=-=-=-
Ayer leí una entrada de gemi.dev, en la que proponía que creáramos usáramos una técnica de programación para cosas que no son programas. Me explico por si acaso: se trata de crear un programita que automatice la creación de los archivos que necesitemos para un proyecto. Ejemplo:una entrada en una cápsula gemini.
En una entrada gemini tienes que:
Pues me he creado un script para los pasos 1,2,3 e iniciar el 4. Y aunque el 4 no se puede automatizar del todo, el resto, eventualmente sí, y ya ahorra mucho tiempo. Habitualmente, soy reacio a este tipo de cosas porque prefiero hacer las cosas a mano hasta estar muy seguro de lo que quiero automatizar, pero me convenció este texto:
Everyone thinks the project they are working on is "too small" for a build script. But chances are, if you are working on a project, you have probably already written a build script without knowing it. You probably have some terminal open and you keep pressing "up" a few times to go back in your command history and re-run something. Maybe you run 1 command, and then run a second command over and over again as you are iterating on something trying to get it right. Just copy that command into a publish.sh file! In fact, if I ever find myself repeatedly needing to execute 1 or 2 commands over and over I just go ahead and make a shell script for it. These quickly evolve into publishing scripts.
Build scripts for non coding projects
Y es cierto que con el tiempo uno ya tiene un script sin darse cuenta. Las tareas repetitivas que hacemos son ya un script, solo que en vez de delegarlos en la máquinas, las dejamos sobre una persona, que resultas ser tú mismo y que ya sabes lo bien que se le dan las tareas repetitivas comparadas con una máquina.
Solo que... lo divertido es que hice mi script para los ficheros de texto plano que he ido creando ultimamente, sin embargo precisamente este artículo donde hablo del script funciona mejor como gemtext. Y es porque tiene un enlace. Dicho eso, aquí tienes el script para el shell de Linux más normalito.
Si sabes un poquito de esto no lo necesitarás ver mucho, y posiblemente no querrá ni verlo, porque hay mucho por mejorar pero es que es literalmente mi primer script en bash que hace algo útil. Si por lo que sea eres más nuevo que yo, las explicaciones van abajo.
alfa=$(echo $1 | sed "s/ /_/g") outputFile="$(date -I)_$alfa.txt" touch $outputFile echo " =============================================" >> $outputFile echo " Título: $1" >> $outputFile echo " Fecha: $(date -I)" >> $outputFile echo " Etiquetas:">> $outputFile echo " =============================================" >> $outputFile echo "" >> $outputFile echo " ~ Miguel de Luis Espinosa" >> $outputFile echo " > yretek@proton.me">> $outputFile vim $outputFile
Para usar el script solo hay que llamarlo en el termina de linux con la orden sh articulator.sh "título del artículo". Veamos ahora el código.
La primera línea parece muy complicada, pero para nada. Solo dice, "Eh, SHell imprime (echo) el primer argumento $1 que te haya puesto el usario en la línea (en este caso: título del artículo), pero no lo mandes a la salida estándar (la pantalla) sino se lo mandas (para eso sirve el caracter raro ese de la línea vertical |) al programa sed". A sed le digo que busque los espacios en blanco y los sustituya por guiones bajos. Y el resultado de todo eso, que será "título_del_artículo" lo almacenas en la variable alfa.
Luego se crea la variable outputFile con el nombre del archivo donde irá el artículo este será la fecha en el formato habitual de gemini 2023-01-20, (se consigue con date -I) seguido de un guión bajo, y del contenido de alfa, más la extensión .txt de texto plano. (Cuando haga la versión para Gemini tendré que cambiar esto).
touch $outputfile solo crea un archivo con el nombre de la variable $outputfile
Ahora empezamos a añadir el contenido al fichero. Primero la cabecera, echo, imprime lo que le digo, pero no en pantalla porque >> le dice que añada la línea al fichero cuyo nombre es $ouputfile y que ya habíamos creado en el paso anterior. (Ojo, son dos >> no un >, esto es importante).
Y ya por último llama a mi editor favorito vim para que edite el archivo resultado. Espero que esto te ayude a empezar y a buscar por ti mismo lo que te falte. Lánzate, mientras no lance s los misiles, todo irá bien.
~ Miguel de Luis Espinosa