Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Référence des unités
Les premiers pas
Travailler avec l'application
Conteneur de dépendances
Répartiteur
Environnement CGI
Configurer l'application
Gestionnaire d'erreurs
Travailler avec un routeur
Travailler avec une base de données
Utilisation des journaux de bord
Travailler avec Fano CLI
Préface
Notes légales
Dictionnaire
Recherche

Travailler avec Fano CLI

Qu'est-ce que Fano CLI ?

Le Fano Framework permet de configurer ou de remplacer de nombreuses fonctionnalités de base par une implémentation différente. Cela présente un inconvénient. Vous avez besoin de nombreux codes standard pour créer un seul projet.

Le Fano CLI est une application en ligne de commande permettant de créer un projet d'application Web Fano Framework. Elle facilite les tâches fastidieuses telles que la création d'un projet d'application Web Fano, la création d'un contrôleur, d'un modèle, d'une vue, de classes middleware, la génération d'une clef aléatoire et d'un GUID, la réduction des fichiers JavaScript et la configuration du serveur Web.

Fano CLI est un outil supplémentaire. Vous pouvez utiliser Fano Framework sans installer Fano CLI. Cependant, il est recommandé d'utiliser Fano CLI car vous pouvez générer facilement un projet d'application Web en quelques secondes.

Installation

Assurez-vous que Free Pascal et git sont installés. Ensuite, exécutez :

git clone https://github.com/fanoframework/fano-cli.git
cd fano-cli
./tools/config.setup.sh
./build.sh

Pour une saisie plus facile, copiez le binaire exécutable bin/out/fanocli dans un emplacement accessible globalement, par exemple :

sudo cp bin/out/fanocli /usr/local/bin/fanocli

Si vous ne souhaitez pas copier vers /usr/local/bin, ajoutez simplement le chemin de l'exécutable fanocli à la variable d'environnement PATH.

Si vous utilisez FreeBSD, après avoir exécuté config.setup.sh mais avant d'exécuter le script build.sh, éditez build.cfg et remplacez la ligne -Tlinux par -Tfreebsd.

Afficher l'aide de Fano CLI

Pour afficher les commandes disponibles, vous pouvez exécuter :

fanocli --help

ou simplement :

fanocli

Pour afficher l'aide d'une commande unique :

fanocli --help --task=[nom de la tâche]

ou :

fanocli --task=[nom de la tâche]

Par exemple :

fanocli --task=project-scgi

Création d'un projet d'application Web

Le Fano CLI fournit plusieurs commandes pour créer facilement une application Web Fano Framework, telles que --project-cgi, --project-fcgi, --project-fcgid, --project-scgi, --project-uwsgi, --project-mhd, --project-indy et --project-http permettant de créer un projet d'application Web prenant en charge CGI, FastCGI, SCGI et uwsgi, le protocole http. Actuellement, l'implémentation http utilise la bibliothèque libmicrohttpd, Indy ou la classe TFpHttpServer intégrée à Free Pascal :

fanocli --project-cgi=[nom-du-projet]

[nom-du-projet] est le répertoire dans lequel réside le projet et sera créé par Fano CLI.

Création d'un contrôleur

Après avoir créé la structure du projet, pour créer une classe de contrôleur, exécutez les options de ligne de commande --controller. Par exemple, si [nom-du-projet] ci-dessus est égal à test-fano, vous pouvez créer un contrôleur comme suit :

cd test-fano
fanocli --controller=Hello

Il créera les fichiers suivants :

test-fano/src/App/Hello/Controllers/HelloController.pas
test-fano/src/App/Hello/Controllers/Factories/HelloControllerFactory.pas
test-fano/src/Routes/Hello/routes.inc

et modifie également les fichiers suivants :

test-fano/src/bootstrap.pas
test-fano/src/Dependencies/controllers.dependencies.inc
test-fano/src/Routes/routes.inc
test-fano/build.cfg
test-fano/build.cfg.sample

Par défaut, il créera une route GET vers /hello. Ainsi, après avoir exécuté le script build.sh, vous pouvez accéder à HelloController en visitant l'URL :

wget http://[votre nom d'hôte]/hello

Pour créer un contrôleur pour un modèle de route ou une méthode HTTP spécifique, ajoutez les paramètres --route et --method. Par exemple, pour créer un contrôleur gérant la requête POST vers /my/hello :

fanocli --controller=Hello --route=/my/hello --method=POST

Si vous souhaitez que le contrôleur gère plusieurs méthodes, transmettez les méthodes sous forme de valeurs séparées par des virgules. L'exemple suivant crée la classe HelloController gérant les requêtes GET et POST pour router /my/hello :

fanocli --controller=Hello --route=/my/hello --method=GET,POST

Si vous souhaitez créer un contrôleur et ignorer la création d'itinéraire, utilisez le paramètre --no-route :

fanocli --controller=Hello --no-route

Création d'une vue

Après avoir créé la structure du projet, pour structurer la classe de vue, exécutez avec les options de ligne de commande --view :

cd test-fano
fanocli --view=Hello

Il créera les fichiers suivants :

test-fano/src/App/Hello/Views/HelloView.pas
test-fano/src/App/Hello/Views/Factories/HelloViewFactory.pas

et également modifier les fichiers suivants :

test-fano/src/bootstrap.pas
test-fano/src/Dependencies/views.dependencies.inc
test-fano/build.cfg
test-fano/build.cfg.sample

Création d'un modèle

Après avoir créé la structure du projet, pour structurer la classe du modèle, exécutez l'option de ligne de commande --model :

cd test-fano
fanocli --model=Hello

Il créera les fichiers suivants :

test-fano/src/App/Hello/Models/HelloModel.pas
test-fano/src/App/Hello/Models/Factories/HelloModelFactory.pas

et également modifier les fichiers suivants :

test-fano/src/bootstrap.pas
test-fano/src/Dependencies/models.dependencies.inc
test-fano/build.cfg
test-fano/build.cfg.sample

Créer un contrôleur, une vue et un modèle en même temps

Pour simplifier la création simultanée d'un contrôleur, d'une vue et d'un modèle, vous pouvez utiliser l'option de ligne de commande --mvc.

fanocli --mvc=Hello

La commande ci-dessus est égale à la commande suivante :

fanocli --controller=Hello
fanocli --model=Hello
fanocli --view=Hello

Ajout de la prise en charge du middleware

Toutes les commandes de création de projet, c'est-à-dire les commandes --project*, acceptent le paramètre supplémentaire --with-middleware. S'il est défini, lors de la création du projet, la prise en charge du middleware est ajoutée au projet généré.

fanocli --project-cgi=Hello --with-middleware

Création d'un middleware

Pour créer un middleware, exécutez-le avec les options de ligne de commande --middleware :

cd test-fano
fanocli --middleware=AuthOnly

Il créera les fichiers suivants :

test-fano/src/Middlewares/AuthOnly/AuthOnlyMiddleware.pas
test-fano/src/Middlewares/AuthOnly/Factories/AuthOnlyMiddlewareFactory.pas

Générer une clef aléatoire

Pour générer une clef aléatoire (par exemple, une clé secrète de chiffrement), exécutez les options de ligne de commande --key=[length] :

fanocli --key=32

Si la longueur n'est pas définie, on suppose qu'elle est de 64 octets de valeur aléatoire. La sortie est une chaîne codée en Base64 d'octets aléatoires. Sous Unix ou Linux, elle lit à partir de /dev/urandom. Sous Windows, elle utilise CryptoAPI.

Générer le GUID

Pour générer le GUID, exécutez avec les options de ligne de commande --guid :

fanocli --guid

Minifier les fichiers JavaScript

Pour réduire la taille du fichier JavaScript, exécutez les options de ligne de commande --jsmin=[path].

Avec [path] vide, il analysera le répertoire actuel à la recherche de tous les fichiers JavaScript, les minifiera et les générera sous forme de nouveau fichier avec le nom du fichier d'origine suivi de min.js :

fanocli --jsmin

Si [path] n'est pas vide, s'il s'agit d'un répertoire, il analyse ce répertoire à la recherche de fichiers JavaScript, les réduit et les génère sous forme de nouveau fichier avec un nom utilisant le nom de fichier d'origine suivi de min.js. Si [path] est un fichier unique, il le réduit et crée un nouveau fichier avec le même nom suivi de min.js.

fanocli --jsmin=/path/to/js

Si vous spécifiez le paramètre facultatif --output=[target-path], alors [target-path] sera utilisé comme nom de fichier :

fanocli --jsmin=/path/to/js --output=/path/to/js/scripts.min.js

Si [target-path] est égal à stdout, la sortie minifiée est affichée sur STDOUT.

fanocli --jsmin=/path/to/js --output=stdout

Minifier les fichiers CSS

Pour réduire la taille du fichier CSS, exécutez les options de ligne de commande --cssmin=[path].

Avec [path] vide, il analysera le répertoire actuel à la recherche de tous les fichiers CSS, les minifiera et les sortira sous forme de nouveau fichier avec le nom du fichier d'origine suivi de min.css :

fanocli --cssmin

Si [path] n'est pas vide, s'il s'agit d'un répertoire, il analyse ce répertoire à la recherche de fichiers CSS, les réduit et les génère sous forme de nouveau fichier avec le nom du fichier d'origine suivi de min.css. Si [path] est un fichier unique, il le réduit et crée un nouveau fichier avec le même nom suivi de min.css.

fanocli --cssmin=/path/to/css

Si vous spécifiez le paramètre facultatif --output=[target-path], alors [target-path] sera utilisé comme nom de fichier.

fanocli --cssmin=/path/to/css --output=/path/to/css/styles.min.css

Si [target-path] est égal à stdout, la sortie minifiée est affichée sur STDOUT :

fanocli --cssmin=/path/to/css --output=stdout

Ajouter la prise en charge de la session

Toutes les commandes de création de projet, c'est-à-dire les commandes --project*, acceptent le paramètre supplémentaire --with-session=[entreposage de session] où la valeur d'entreposage de session peut être l'une des valeurs suivantes :

Valeur Description
file Créer une session qui stocke les données de session dans un fichier.
cookie Créer une session qui stocke les données de session dans un cookie crypté.
db Créer une session qui stocke les données de session dans la base de données.

Session avec fichier comme entreposage

Si [entreposage de session] n'est pas défini, il s'agit d'un fichier. Les commandes suivantes sont donc identiques

fanocli --project-cgi=Hello --with-session=file
fanocli --project-cgi=Hello --with-session

Session avec cookie comme entreposage

Les données de session sont stockées dans un cookie chiffré :

fanocli --project-cgi=Hello --with-session=cookie

Session avec base de données comme entreposage

fanocli --project-cgi=Hello --with-session=db

Vous pouvez définir le type de SGBDR à utiliser avec le paramètre --db. S'il n'est pas défini, il suppose qu'il s'agit de MySQL. La commande suivante est identique à celle ci-dessus :

fanocli --project-cgi=Hello --with-session=db --db=mysql

Utilisez postgresql, firebird et sqlite pour les bases de données PostgreSQL, Firebird et SQLite respectivement :

fanocli --project-cgi=Hello --with-session=db --db=postgresql

Format des données de session

Pour les fichiers, les cookies et la base de données, vous pouvez définir le format des données de session avec le paramètre --type attendant une valeur json ou ini pour le format JSON ou INI respectivement.

Par exemple, la commande suivante entraînera l'ajout de la prise en charge de session au projet et chaque donnée de session sera entreposée sous forme de fichier INI :

fanocli --project-cgi=Hello --with-session=file --type=ini

La session nécessite un middleware

Étant donné que dans Fano Framework, la prise en charge de session est implémentée avec une infrastructure middleware, --with-session implique l'utilisation de --with-middleware, donc les commandes suivantes sont identiques :

fanocli --project-cgi=Hello --with-session
fanocli --project-cgi=Hello --with-session --with-middleware

Ajouter la prise en charge CSRF

Toutes les commandes de création de projet, c'est-à-dire les commandes --project*, acceptent le paramètre supplémentaire --with-csrf. S'il est défini, lors de la création du projet, la protection contre la falsification de requêtes intersites (CSRF) est ajoutée au projet généré.

fanocli --project-scgi=Hello --with-csrf

--with-csrf ajoute implicitement les paramètres --config et --with-session, donc la commande suivante génère un projet similaire.

fanocli --project-scgi=Hello --with-csrf
fanocli --project-scgi=Hello --config --with-session --with-csrf

Ajouter des dépendances de journalisation

Toutes les commandes de création de projet, c'est-à-dire les commandes --project*, acceptent le paramètre supplémentaire --with-logger. S'il est défini, lors de la création du projet, les dépendances de journalisation sont ajoutées au projet généré.

Ajouter un journal de bord entreposant les journaux dans un fichier :

fanocli --project-scgi=Hello --with-logger=file

Ajouter un enregistreur qui stocke les journaux dans la base de données :

fanocli --project-scgi=Hello --with-logger=db

Ajouter un enregistreur entreposant les journaux dans syslog :

fanocli --project-scgi=Hello --with-logger=syslog

Déploiement

Le Fano CLI propose des commandes pour simplifier la configuration de l'application Web Fano avec divers serveurs Web via les commandes suivantes :

Paramètres Description
--deploy-cgi Configurer l'application Web Fano CGI avec un serveur Web.
--deploy-fcgi Configurer l'application Web Fano FastCGI avec un serveur Web comme proxy inverse.
--deploy-fcgid Configurer l'application Web Fano FastCGI avec un serveur Web Apache et mod_fcgid.
--deploy-scgi Configurer l'application Web Fano SCGI avec un serveur Web comme proxy inverse.
--deploy-lb-scgi Configurer l'application Web Fano SCGI avec un serveur Web comme proxy inverse et équilibreur de charge (Load Balancer).
--deploy-lb-fcgi Configurer l'application Web Fano FastCGI avec un serveur Web comme proxy inverse et équilibreur de charge (Load Balancer).
--deploy-uwsgi Configurer l'application Web Fano uwsgi avec un serveur Web comme proxy inverse.
--deploy-lb-uwsgi Configurer l'application Web Fano uwsgi avec un serveur Web comme proxy inverse et équilibreur de charge (Load Balancer).
--deploy-http Configurer l'application Web http Fano avec un serveur Web comme proxy inverse.
--deploy-lb-http Configurer l'application Web http Fano avec un serveur Web comme proxy inverse et équilibreur de charge (Load Balancer).

Toutes les commandes ci-dessus nécessitent le privilège root, vous devez donc les exécuter avec sudo :

sudo fanocli --deploy-cgi=myapp.com

Le développeur est responsable de s'assurer que le déploiement correspond au type de projet. Par exemple, un projet créé avec --project-fcgi ne peut être déployé qu'avec --deploy-fcgi ou --deploy-lb-fcgi.

Configurer le service en tant que service dans systemd

Dans la distribution Linux utilisant systemd, comme les dernières versions de Fedora ou Debian, Fano CLI fournit la commande --daemon-sysd=[nom-du-service] pour simplifier l'enregistrement du service de l'application Web avec systemd :

sudo fanocli --daemon-sysd=hello

Après cela, vous pouvez exécuter l'application à l'aide de la commande suivante :

sudo systemctl start hello

ou pour l'arrêter :

sudo systemctl stop hello

La commande --daemon-sysd accepte un paramètre supplémentaire :

Paramètres Description
--user=[nom d'utilisateur] Nom d'utilisateur sous lequel l'application est exécutée. S'il n'est pas défini, l'utilisateur non root actuel est utilisé.
--bin=[chemin binaire de l'application] Chemin absolu vers le binaire exécutable de l'application. S'il n'est pas défini, il s'agit du chemin absolu de bin/app.cgi.

sudo fanocli --daemon-sysd=hello --user=fano --bin=/home/my.fano/bin/myapp.bin

Convertir le contenu d'un fichier texte en déclaration de variable de chaîne de caractères Pascal

Pour permettre l'inclusion directe d'un fichier HTML en tant que fichier d'inclusion, vous pouvez le convertir en déclaration de variable de chaîne de caractères Pascal à l'aide de la commande --txt2inc.

Par exemple, si vous avez un fichier index.html avec le contenu suivant :

  1. <html><head></head>
  2. <body></body></html>

Pour le convertir en fichier d'inclusion, exécutez :

fanocli --txt2inc --src=index.html --dst=index.html.inc --var=htmlTemplate

Il créera un fichier index.html.inc avec le contenu suivant :

  1. htmlTemplate : string =
  2.     '<html><head></head>' + LineEnding +
  3.     '<body></body></html>';

que vous pouvez inclure dans le code Pascal&nbps;:

  1. Procedure print();
  2. Var
  3.   {$INCLUDE index.html.inc}
  4. Begin
  5.  WriteLn(HtmlTemplate);
  6. End;

Paramètres

Le paramètre --src indique le chemin du fichier source à convertir. S'il n'est pas défini ou vide, STDIN sera utilisé. S'il est défini mais que le fichier n'existe pas, une erreur est générée.

Le paramètre --dst indique le chemin du fichier de destination. S'il n'est pas défini ou vide et que --src est défini, la valeur de --src est concaténée avec l'extension de fichier .inc. S'il n'est pas défini ou vide et que --src n'est pas défini, STDOUT sera utilisé. Si --dst est défini mais que le fichier existe, une erreur est générée pour éviter d'écraser accidentellement le fichier existant. Pour forcer l'écrasement du fichier existant, ajoutez le paramètre --force.

Le paramètre --var définit le nom de la variable à utiliser pour la déclaration. S'il n'est pas défini, myStr est utilisé.

Par exemple :

printf "<html><head></head>\r\n<body></body></html>" | fanocli --txt2inc

{-------------begin----------------}
myStr : string =
    '<html><head></head>' + LineEnding +
    '<body></body></html>';
{-------------end------------------}

Construire

Changer le répertoire actif vers le nouveau répertoire du projet après avoir créé le projet et l'avoir exécuté :

/build.sh

pour créer une application.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Vendredi, le 18 octobre 2024