frshmastr.neocities.org

Neocities CLI

Publicado: 07/04/2022

Dá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:

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.

Nota: El resto del artículo asume que ya tienes ruby y git instalados en tu sistema.

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