dennisangemi / frictionless2md

A tool to convert frictionless datapackage (YAML or JSON) to markdown
MIT License
3 stars 0 forks source link

add flags #5

Closed dennisangemi closed 1 year ago

dennisangemi commented 1 year ago

Additional infos

dennisangemi commented 1 year ago

Ho chiesto aiuto a ChatGPT:

Ecco uno script bash che potresti utilizzare per creare un file markdown con un nome specificato dall'utente utilizzando l'opzione -o:

#!/bin/bash

# Parsing degli argomenti
while getopts "o:" arg; do
  case $arg in
    o)
      output_file=$OPTARG
      ;;
    *)
      echo "Usage: f2md -o FILENAME.md"
      exit 1
      ;;
  esac
done

# Controllo che l'opzione -o sia stata specificata
if [ -z $output_file ]; then
  echo "Usage: f2md -o FILENAME.md"
  exit 1
fi

# Esecuzione del comando f2md
f2md | tee $output_file

Questo script fa uso del comando getopts per analizzare gli argomenti passati allo script. L'opzione -o viene gestita nel blocco case, che salva il nome del file specificato dall'utente nella variabile output_file. Successivamente, viene verificato che l'opzione -o sia stata specificata correttamente, e infine viene eseguito il comando f2md e il suo output viene salvato sia nella console che nel file specificato dall'utente. Il comando tee viene utilizzato per questo scopo, in quanto permette di salvare l'output su più di un file contemporaneamente.

dennisangemi commented 1 year ago

io non voglio che -t requires an argument

In tal caso, puoi rimuovere il carattere : dalla stringa degli argomenti di getopts per il flag -t. In questo modo, lo script non richiederà un argomento per il flag -t. Ecco un esempio di come modificare lo script per fare ciò:

#!/bin/bash

while getopts ":o:t" opt; do
  case ${opt} in
    o )
      output_file=${OPTARG}
      ;;
    t )
      timeout=1
      ;;
    \? )
      echo "Invalid option: -$OPTARG" 1>&2
      exit 1
      ;;
    : )
      echo "Option -$OPTARG requires an argument." 1>&2
      exit 1
      ;;
  esac
done

echo "Output file is: $output_file"
echo "Timeout is: $timeout"