Neocities CLI
Publicado: 07/04/2022Dándome una leida al contenido de los enlaces que Neocities tiene al pie de su página me tope con una herramienta que la plataforma proporciona para facilitar la gestión de nuestra página de Neocities: neocities cli (¿ya dije neocities?).
Te voy a hablar un poco sobre la herramienta y como instalarla en una distro Linux que tenga ruby 3.1 en sus repos como versión por defecto.
Sobre la herramienta y la api
Hasta hace unos días no conocía de su existencia, subía todos mis archivos usando la opción de "editar sitio", creando directorio por directorio, comenzaba a desanimarme de solo imaginar lo tedioso que sería subir contenido y actualizar el sitio.
Por suerte me digné a leer la información que la plataforma nos proporciona.
La cli de necities está escrita en Ruby y ofrece las siguientes características:
- Soporte para hacer push: Carga un directorio entero, perfecto para generadores de sitios estáticos (gracias desarrolladores, gracias).
- Persistencia HTTP: La CLI reusa una sola conexión HTTP, mejorando el desempeño.
- Revisa antes de subir archivos: Revisa si los datos de los archivos coinciden antes subirlos.
- Parseo de gitignore: Excluye automáticamente los archivos especificados en el gitignore de repositorios git.
La cli usa la api de Neocities para poder subir carpetas, crear o borrar archivos y listar el contenido de nuestro sitio. Es muy conveniente y facilita bastante el trabajo. Pero ojo en su post que documenta el uso de la api mencionan que se deben limitar las peticiones una por minuto esto para evitar que se use la api para manipular el algoritmo. Al comenzar a usar la herramienta traté de actualizar mi sitio demasiado rápido y me dieron un tiempo de espera así que si vas a usar la cli de noecities, solo actualiza el sitio cuando estés agusto con el resultado.
Instalando la herrmienta
Para instalar neocities cli solo habría que escribir lo siguiente en la terminal:
$ gem install --user-install neocities
Esto si usas una distro de lanzamiento estático como Ubuntu o Linux Mint que tienen Ruby 2.7 en sus repos. En cambio si usas una distro rolling release o semi-rolling (como es mi caso con Void) que ofrecen la version 3.1 por defecto, al tratar de instalar la gema, fallará con un error parecido al siguiente:
ERROR: Error installing neocities:
ERROR: Failed to build gem native extension.
current directory: /home/frshmaster/.local/share/gem/ruby/3.1.0/gems/neocities-0.0.15/ext
/opt/local/bin/ruby3.1 mkrf_conf.rb
mkrf_conf.rb:4:in `<main>': uninitialized constant Gem::Command (NameError)
Gem::Command.build_args = ARGV
^^^^^^^^^
rake failed, exit code 1
Revisando su repo en Github encontré la solución al problema, la pull request #34. Como aún no ha sido fusionada a la rama principal habrá que compilar la gema a mano.
Primero habrá que clonar el repositorio que contiene el parche:
$ git clone --branch fix-rubygems-command-error https://github.com/jonchang/neocities-ruby.git
Ahora solo entramos al directorio y creamos la gema:
$ cd neocities-ruby
$ gem build neocities
Y la instalamos:
$ gem install --user-install neocities-0.0.15.gem
Y listo, ya estará instalada ahora solo faltara añadir la ruta donde ruby genera sus binarios a nuestra variable $PATH, en mi caso la ruta es $HOME/.local/share/ruby/3.1.0/bin.
Añadimos la siguiente línea a nuestro archivo de configuración (.bashrc, .profile, .zshrc, .zshenv, etc.).
export PATH="$PATH:$HOME/.local/share/ruby/3.1.0/bin"
Y listo ya podemos usar el comando neocities para gestionar nuestro sitio web desde la terminal.
$ neocities
|\---/|
| ~_~ | Neocities
\_o_/
Subcommands:
push Recursively upload a local directory to your site
upload Upload individual files to your Neocities site
delete Delete files from your Neocities site
list List files from your Neocities site
info Information and stats for your site
logout Remove the site api key from the config
version Unceremoniously display version and self destruct
pizza Order a free pizza