Compare commits

..

1167 Commits

Author SHA1 Message Date
3edb672410 Intégration de la branche release-11.4.0 2025-02-27 08:44:20 +04:00
733fdca042 Init changelog & version 11.4.0 2025-02-27 08:44:20 +04:00
7cc9629788 modifs.mineures sans commentaires 2025-02-13 20:52:15 +04:00
df3986e8dc maj chemins registres 2025-02-12 11:27:30 +04:00
e674b316c3 améliorer la prise en charge de dkbuild imbriqué 2025-02-08 02:48:19 +04:00
7611760c3c paramètres par défaut pour dkbuild 2025-02-06 11:22:26 +04:00
056ae579a9 maj doc dkbuild -c 2025-02-06 11:03:43 +04:00
6f9ab14ffe support java 21 2025-02-04 15:13:05 +04:00
c9eaf7d83f maj dkbuild.env par défaut 2025-02-03 21:58:51 +04:00
693f447bf4 maj fichier dkbuild.env 2025-01-13 16:34:49 +04:00
6e23aaeeb0 maj config par défaut 2025-01-01 16:29:30 +04:00
d32be911b7 Intégration de la branche release-11.3.1 2024-12-31 15:05:57 +04:00
89efc824f9 Intégration de la branche release-11.3.1 2024-12-31 15:05:57 +04:00
c69e3d414f Init changelog & version 11.3.1 2024-12-31 15:05:57 +04:00
b9f264f705 bug avec dkbuild -e 2024-12-31 15:05:43 +04:00
737179b81b modifs.mineures sans commentaires 2024-12-17 13:12:42 +01:00
2687e72643 support minimal runphp 2024-11-08 16:42:29 +04:00
0527aee96e Intégration de la branche release-11.3.0 2024-09-24 16:02:01 +04:00
3ac6a38e25 Intégration de la branche release-11.3.0 2024-09-24 16:02:01 +04:00
f156fe0b1e Init changelog & version 11.3.0 2024-09-24 16:02:00 +04:00
625d5f1d25 bug mineur 2024-09-24 16:01:36 +04:00
e30820261a dkbuild: améliorer from_glob() 2024-07-12 23:04:43 +04:00
5c03184c94 lgrep, lless: modifier la doc pour ne parler que d'un fichier 2024-07-05 10:13:19 +04:00
0ed5ddf6b9 Intégration de la branche release-11.2.0 2024-06-21 20:34:15 +04:00
f39787c6ec Intégration de la branche release-11.2.0 2024-06-21 20:34:14 +04:00
11145f686a Init changelog & version 11.2.0 2024-06-21 20:34:14 +04:00
21042e4677 bug 2024-06-21 20:33:50 +04:00
e4176dfd94 reginc: possibilité de renommer des fichiers 2024-06-17 10:44:53 +04:00
1787aa2310 bug 2024-05-13 09:44:50 +04:00
d1f77aa354 dkbuild: support dist none et tag LATEST 2024-05-10 17:15:30 +04:00
c2cfd7739a bug 2024-05-10 16:04:54 +04:00
e7745c2dd4 dk: support --plain-output 2024-03-19 07:26:06 +04:00
ce8f541520 dkbuild: -g pour --profile 2024-03-06 22:36:49 +04:00
30594aa84b maj distributions 2024-02-12 11:47:27 +04:00
2df175ee57 dkbuild: cosmetic 2024-02-10 11:33:07 +04:00
fbb05f8dee support des versions AMUE 2024-02-08 22:26:13 +04:00
9d8e3c53d1 Intégration de la branche release-11.1.0 2024-02-01 20:59:56 +04:00
2886c40aa2 Intégration de la branche release-11.1.0 2024-02-01 20:59:56 +04:00
e50a686536 Init changelog & version 11.1.0 2024-02-01 20:59:56 +04:00
8570d12ce6 pff: les répertoires liés peuvent contenir des fichiers 2024-02-01 20:55:47 +04:00
5d6c6b4053 synchroniser pff et nulib/pff 2024-01-31 23:07:07 +04:00
90bda71351 pff: support des répertoires liés 2024-01-30 14:51:48 +04:00
7d7b88a427 autoriser les feature branches qui commencent par wip/ 2024-01-11 08:57:53 +04:00
5cc1826744 dk et dkbuild: support .composer.yaml et setup_image 2024-01-03 20:37:21 +04:00
0bf0f48ad0 dk: support ~/.dkbuild.env 2024-01-03 19:11:09 +04:00
b818e11c73 dkbuild: ajout de --plain 2023-12-25 23:06:55 +04:00
ad14de35ea dkbuild: configuration profil prod par défaut 2023-11-21 18:18:52 +04:00
54a5b5485d Sscreen: support des cas où screen n'est pas dans le PATH 2023-11-20 16:54:59 +04:00
5a06851b0f dkbuild: support profil par défaut 2023-11-18 08:39:28 +04:00
a855b04c21 dkbuild: les versions de profil sont ordonnées comme les versions de distribution 2023-11-18 08:02:04 +04:00
e5315532a1 dkbuild: sans --all-profiles, ne build que dans le profil par défaut 2023-11-18 07:52:35 +04:00
db1467b8fd bug 2023-11-18 06:58:58 +04:00
3123d8e65e dkbuild: mappings par défaut 2023-11-17 23:12:10 +04:00
d9b1485354 charnière entre java 8 et java 11 2023-11-07 09:21:15 +04:00
744a3fa0ac dkbuild: indiquer si la version de Java demandée n'est pas trouvée 2023-10-02 20:00:29 +04:00
2803868e16 dkbuild: marquer plus d'action comme étant du build 2023-10-02 19:31:07 +04:00
4f7bc3f6bf dkbuild: bug avec -u seul 2023-10-02 19:08:45 +04:00
8cdc3cb2bb modifs.mineures sans commentaires 2023-09-29 10:11:12 +04:00
1b7b2744ba Intégration de la branche release-11.0.0 2023-09-05 14:29:29 +04:00
b9951d269d Intégration de la branche release-11.0.0 2023-09-05 14:29:29 +04:00
4ffd43f2e0 Init changelog & version 11.0.0 2023-09-05 14:29:29 +04:00
ddfbc00f78 maj des images par défaut dk et dkbuild 2023-08-23 16:44:38 +04:00
e33f2a5afe ajout registry privé 2023-08-22 10:43:43 +04:00
f245e17138 image par défaut en prod 2023-08-22 10:32:14 +04:00
efe31b8c9d support java17 2023-08-22 08:42:34 +04:00
5cb4112cd0 dkbuild: bug profil unitaire 2023-08-18 12:39:17 +04:00
f424f41561 dkbuild: -u n'implique plus -b 2023-08-13 17:09:29 +04:00
e5a147351d dkbuild: implémenter -u 2023-08-12 22:23:45 +04:00
771bd1c563 Intégration de la branche release-10.0.0 2023-08-12 21:06:39 +04:00
776cd96fd7 Intégration de la branche release-10.0.0 2023-08-12 21:06:39 +04:00
471315dcbb Init changelog & version 10.0.0 2023-08-12 21:06:39 +04:00
bfdf9b5bef support système sans python2 2023-08-12 20:50:16 +04:00
108215fce4 maj registry pour devel 2023-08-11 09:55:46 +04:00
6ddb870a56 dkbuild: support profil nu 2023-08-07 13:40:31 +04:00
c0b130fd29 dkbuild: support profil jclain 2023-08-07 11:42:03 +04:00
ae20e49440 modifs.mineures sans commentaires 2023-07-14 10:13:01 +04:00
2e5101d6a2 ajout de lgrep 2023-07-14 10:12:26 +04:00
cff4833370 ajout de ldiff 2023-07-10 16:33:31 +04:00
9c6e7a8750 renommer less1 en lless 2023-07-10 16:05:07 +04:00
e9d52d8f35 ajout de less1 pour lire des fichiers latin1 2023-07-10 14:47:17 +04:00
d3d86c6ff9 cssh: forcer la désactivation du verrouillage de la session 2023-07-06 19:03:42 +04:00
b761cb610c Sscreen: désactiver verrouillage de la session 2023-06-30 19:20:50 +04:00
6e36d26471 Intégration de la branche release-9.16.0 2023-06-15 15:28:28 +04:00
2344a63da7 Intégration de la branche release-9.16.0 2023-06-15 15:28:28 +04:00
61dc4c1154 Init changelog & version 9.16.0 2023-06-15 15:28:28 +04:00
f36be0dfb2 uscrontab: s'assurer que USER est défini 2023-06-15 15:28:15 +04:00
63674ef02b cosmetic 2023-06-14 16:03:03 +04:00
ee80091650 cosmetic 2023-06-14 15:56:04 +04:00
e5ab8dd240 Intégration de la branche release-9.15.0 2023-06-14 15:41:57 +04:00
8b0d4713b5 Intégration de la branche release-9.15.0 2023-06-14 15:41:57 +04:00
1025357631 Init changelog & version 9.15.0 2023-06-14 15:41:57 +04:00
2a023070e7 update-nutools: prendre le dépôt public par défaut 2023-06-14 15:41:14 +04:00
27a82e439b ajouter les numéros de version des debian et ubuntu 2023-06-12 16:34:54 +04:00
92157dee42 regins: implémentation initiale 2023-06-09 17:29:47 +04:00
efe9fbbbdb dk: ajout de XX pour prune-cache 2023-06-06 08:20:45 +04:00
dc94b5c0cf dkbuild: bug avec les chemins 2023-05-23 15:11:54 +04:00
5e876652f8 dk: X supprimer aussi le cache 2023-05-19 10:31:56 +04:00
9c1a8e67b2 dk: composer.phar est cherché dans sbin/ aussi 2023-05-17 09:03:33 +04:00
81cefdc51e regcp: activer support regexp-extended 2023-05-16 11:13:58 +04:00
c5796d6b2d modifs.mineures sans commentaires 2023-05-14 08:09:51 +04:00
6919352a59 maj du message de commit par défaut 2023-04-12 15:59:23 +04:00
7ba7d1c501 pcxone: correction de l'url généré des dépôts git 2023-04-12 08:47:54 +04:00
9d7594356e repoctl: correction de l'url généré des dépôts git 2023-04-12 08:37:49 +04:00
c0d4e950e9 Intégration de la branche release-9.14.0 2023-03-15 17:48:48 +04:00
e071b81ad7 Intégration de la branche release-9.14.0 2023-03-15 17:48:48 +04:00
d5ff03481d Init changelog & version 9.14.0 2023-03-15 17:48:48 +04:00
3ecb127f33 support docker compose v2 2023-03-15 16:15:44 +04:00
432ab6f915 dkbuild: composer et mvn ne sont lancés qu'en mode build 2023-02-20 10:06:20 +04:00
01c14bbeee regcp: ajout de l'option -n 2023-02-13 15:22:22 +04:00
0913c2ed9f upassword: rendre configurable le nombre de blocs 2023-02-10 18:36:21 +04:00
61433fbf9c dkbuild: revert image par défaut pour javabuilder 2023-02-03 10:04:02 +04:00
e4e0a55073 pff: support mode vcs offline 2023-02-02 09:26:05 +04:00
e08c66bc89 pff: support des archives sh de l'amue 2023-02-01 16:07:03 +04:00
0d1193278c dkbuild: corriger l'image javabuilder par défaut 2023-01-31 15:15:23 +04:00
3ead1f37bc dkbuild: utiliser automatiquement l'image si nécessaire pour composer ou maven 2023-01-31 09:47:38 +04:00
93de256914 ajout de regcp et regmv 2023-01-25 17:28:34 +04:00
5e33a36bcd rendre cohérent les en-têtes des scripts 2023-01-25 17:14:03 +04:00
9e1351529a ajout exemple .dkbuild.env 2023-01-10 11:09:46 +04:00
c9e8110ece dkbuild: corriger calcul des tags 2023-01-08 15:47:29 +04:00
c671cb399d dkbuild: fin support tag & last version 2023-01-08 15:22:24 +04:00
1a764f15ff dkbuild: début support tag & last version 2023-01-08 13:03:40 +04:00
027f9b8c45 dkbuild: ajout de from_glob() 2023-01-07 14:06:27 +04:00
2293239614 maj doc 2023-01-06 16:18:24 +04:00
9fc07bb4e7 dkbuild: ajout build add-tags= 2023-01-05 11:21:39 +04:00
7b15f945ba dkbuild: support préfixe et suffixe pour version 2023-01-05 11:02:13 +04:00
f2cfaeef13 dkbuild: calculer extract automatiquement 2023-01-05 10:11:28 +04:00
c36b8fb577 dkbuild: corriger le support des paramètres sans argument 2023-01-05 08:48:08 +04:00
68a42d0f6a dkbuild: maj templates 2023-01-05 08:30:01 +04:00
306e77f307 dkbuild: calcul de la version à partir d'un fichier ou d'un chemin 2023-01-05 08:01:30 +04:00
b006bb44cd Maj des fichiers 2023-01-03 13:19:18 +04:00
6963d4109a uproject: push -f force le push 2022-10-18 11:22:56 +04:00
9665d5a5d0 cx-conndev: maj doc 2022-09-28 08:46:20 +04:00
137dfa9674 repoctl, uproject: ne plus enlever le suffixe .git 2022-08-30 14:58:08 +04:00
440d2aa1fa upassword: maj nombre de blocs par défaut 2022-08-16 10:39:32 +04:00
f4047a3b64 ipaddr: forcer la sortie couleur 2022-08-13 18:57:19 +04:00
af1bdd3ca5 Maj des fichiers 2022-08-10 16:01:46 +04:00
85e77e4bda dkbuild: corriger le calcul de la dernière version d'une distribution 2022-07-27 11:18:48 +04:00
a56ec0e0f1 dkbuild: améliorer clean 2022-07-26 23:35:23 +04:00
d6e78b9665 dkbuild: maj messages debug 2022-07-22 19:12:10 +04:00
1699cc5f44 dkbuild: les fichiers d'environnement par défaut ont l'extension .env 2022-07-21 11:46:01 +04:00
2ae8406a4b maj doc dkbuild 2022-07-21 11:41:01 +04:00
1db7d08e82 maj doc cx-shelldev 2022-06-26 16:11:28 +04:00
aba08c2600 maj update-nutools 2022-06-18 10:43:40 +04:00
e83b6d1036 possibilité de choisir l'adresse IP 2022-06-17 15:21:28 +04:00
af9096df0c ajouter le template fichier vide 2022-06-14 13:55:33 +04:00
89f0c0974d typo 2022-06-03 09:49:35 +04:00
fb434c2a96 bug parse_date 2022-04-06 08:38:44 +04:00
f7ab14ff7e dkbuild: implémentation initiale 2022-03-29 09:42:27 +04:00
f46812f07a cx-conndev: maj doc 2022-02-17 08:55:34 +04:00
e76a6a6a84 Intégration de la branche release-9.13.0 2022-02-07 22:20:41 +04:00
45bf006040 Intégration de la branche release-9.13.0 2022-02-07 22:20:41 +04:00
d5cc9ca031 Init changelog & version 9.13.0 2022-02-07 22:20:41 +04:00
06686d98f1 pff: support nettoyage wsdl/ 2022-02-07 22:20:19 +04:00
9a018a6f51 pdev: ajout de --check 2022-01-25 09:54:48 +04:00
a932a1a7cd la branche par défaut est master en prod 2022-01-24 08:53:05 +04:00
cb09f4db83 maj template yaml 2022-01-21 17:47:41 +04:00
f8952225cf foreach: rendre -g et -S compatibles 2022-01-20 00:13:05 +04:00
4f7bcbcede maj template CSS 2022-01-14 16:14:20 +04:00
5cdd93d3d8 upassword: réintégrer password wom 2021-11-22 15:59:02 +04:00
7030b8783c dk: ajouter mvn_action=install 2021-11-02 15:08:09 +04:00
8a682edade upassword: changer le générateur aléatoire 2021-11-02 11:12:19 +04:00
a85cdf6ddc Maj des fichiers 2021-10-24 12:55:09 +04:00
d75783b0eb dmcerts: cosmetic 2021-10-24 11:21:07 +04:00
11e6021e77 dmcerts: certificat client avec la même durée que le CA 2021-10-24 11:14:44 +04:00
938307cb69 ajout dmcerts 2021-10-24 10:30:27 +04:00
8b49084d91 typo 2021-10-11 19:42:30 +04:00
98c1ac8843 ajouter le support de bullseye 2021-10-11 19:40:20 +04:00
28d42b00f3 authftp: support des mots de passe avec des caractères spéciaux 2021-09-22 22:47:03 +04:00
dfdfd59eae sélectionner java 1.6 par défaut pour worun 2021-09-20 16:05:30 +04:00
6af03598c8 pff: ajout de la commande normalisée new_cmd_amue_clean_libs 2021-06-13 12:06:59 +04:00
b3a44d07ad pff: bug 2021-05-27 13:32:46 +04:00
111463a861 pff: ajout AUTO_CMDS et NEW_CMDS, supprimer MKDIRS 2021-05-27 11:40:39 +04:00
fe839f4c7b woinst: bug 2021-04-17 19:58:18 +04:00
ba8e1a1dcc upasword: ajout des mot de passe javamonitor de webobjects 2021-04-10 20:51:29 +04:00
a75b91e2e9 network: utiliser 127.0.1.1 pour dhcp 2021-04-06 16:31:38 +04:00
dfb5fc31d8 maj ulib/redhat 2021-04-06 11:59:51 +04:00
40c9cb968c supprimer docker/ qui est obsolète 2021-04-05 18:17:06 +04:00
580e20b342 supprimer nulib de la distribution de nutools 2021-04-05 11:54:44 +04:00
da28d8b429 pff: changer le format des fichiers de version 2021-03-30 08:22:45 +04:00
b03df72236 Intégration de la branche release-9.12.0 2021-03-29 09:41:20 +04:00
7a4870f8c8 Intégration de la branche release-9.12.0 2021-03-29 09:41:20 +04:00
a4ed8d9a45 Init changelog & version 9.12.0 2021-03-29 09:41:20 +04:00
3d54e3771d pff: bug origext 2021-03-26 22:02:56 +04:00
4607f0f3c2 possibilité de spécifier compat bash_completion si pas debian 2021-03-22 10:06:30 +04:00
deploy
4bf4f6d1f3 authftp: info pour host key verification failed 2021-02-24 11:29:55 +04:00
deploy
47e058330f forcer l'utilisation de python2 2021-02-24 10:55:56 +04:00
026b8496fd dmctl: support de l'import de plusieurs machines avec -l 2021-02-17 22:15:28 +04:00
deploy
31e43dabd7 dk: support de 'system' comme alias de 'none' pour COMPOSER_PHP et MAVEN_JAVA 2021-02-09 10:55:16 +04:00
b191552cb0 dk: bug dans le mapping par défaut dans le profil test 2021-02-08 16:46:36 +04:00
1d4c4b4b04 dk: support COMPOSER_PHP=none 2021-02-08 16:19:33 +04:00
b3983edd2a dk: support des mappings d'hôtes 2021-02-03 17:30:54 +04:00
543d2d2f79 dk: mvn est aussi un frontend pour lancer java 2021-02-02 06:18:35 +04:00
f1a9c7a5e5 dk: début support projets maven 2021-01-29 12:10:23 +04:00
ad44a1c2e5 dk: support build dans une image pour les projets composer 2021-01-27 17:15:36 +04:00
44f719b2e6 Intégration de la branche release-9.11.0 2020-12-11 15:43:15 +04:00
40d6605472 Intégration de la branche release-9.11.0 2020-12-11 15:43:15 +04:00
f64bbbf0ee Init changelog & version 9.11.0 2020-12-11 15:43:15 +04:00
01e940b953 repoctl: permettre create -u 2020-11-27 10:19:14 +04:00
e453ed2533 maj doc 2020-11-15 10:30:28 +04:00
434a8bce16 compileAndGo: support java 11 2020-11-13 16:27:19 +04:00
337f24c447 Intégration de la branche release-9.10.0 2020-11-12 23:05:13 +04:00
dac4cb6a73 Intégration de la branche release-9.10.0 2020-11-12 23:05:13 +04:00
c6d00839d2 Init changelog & version 9.10.0 2020-11-12 23:05:13 +04:00
24d05192d1 dk: support merge .shared_env et .machine_env 2020-11-12 21:56:10 +04:00
45c40d735b dk: support de --pull 2020-11-12 15:51:22 +04:00
c921d2a902 pff: support de NOUPSTREAM 2020-10-28 22:45:10 +04:00
edf956f1bb dk: BRANCH peut aussi être un ^COMMIT 2020-10-28 05:54:42 +04:00
85842f3c41 renommer start-screen en Sscreen 2020-10-26 16:30:35 +04:00
e395720902 maj doc 2020-10-09 09:08:02 +04:00
4603b1a6a0 bug 2020-10-06 04:40:55 +04:00
a91542b47f maj .gitattributes par défaut 2020-10-06 04:02:19 +04:00
51c4c3317c support sélection java 11 2020-10-06 03:46:31 +04:00
82a7952e2a dm: support des aliases pour ssh aussi 2020-10-02 09:12:56 +04:00
d1d32de841 dk: bug avec update-devel 2020-09-28 16:08:15 +04:00
037cb1a9e2 maj template sql 2020-09-25 11:21:41 +04:00
04d037f3ed support rhel8 / ol8 2020-09-23 14:33:01 +04:00
725ba6d2c2 cssh: donner un nom à la session 2020-09-23 13:35:01 +04:00
246b9473aa Intégration de la branche release-9.9.0 2020-09-21 18:08:31 +04:00
9555874ec3 Intégration de la branche release-9.9.0 2020-09-21 18:08:31 +04:00
e2e6b76e4a Init changelog & version 9.9.0 2020-09-21 18:08:30 +04:00
2ec6c21ec8 support gros doigt de python2 sur les systèmes modernes 2020-09-21 18:06:05 +04:00
bc1a740f35 bug 2020-09-17 06:02:05 +04:00
ada594a30b dm: support des aliases 2020-09-17 05:59:36 +04:00
856c948eeb repoctl: ajout de update-origin 2020-09-10 11:15:40 +04:00
cc1b45d0fc support de l'option -u 2020-09-08 11:51:40 +04:00
28ceb74b44 cosmetic 2020-08-31 15:41:46 +04:00
751e372bfd bug 2020-08-31 15:35:14 +04:00
c5e15368a1 support de la définition des aliases et des profils dans les répertoires de cluster 2020-08-31 15:12:03 +04:00
14beb13b7c dk: support minimal maven 2020-07-12 20:17:19 +04:00
f474657be6 dk: ajout de COMPOSER_ARGS 2020-07-07 10:35:55 +04:00
109797502a cosmetic 2020-06-22 16:32:32 +04:00
bb7a4fc84c foreach: ajout de l'option -S 2020-06-21 22:49:17 +04:00
e0e6178aa5 dk: support de la sélection d'un service et de la machine sur laquelle tourne un service 2020-06-17 21:42:45 +04:00
07bea2c842 cx-conndev: support klean 2020-06-09 18:01:13 +04:00
7254661f45 dk: support du nommage du répertoire pour le checkout 2020-06-09 14:04:37 +04:00
fb285e0319 ne vérifier conndev.php que si c'est nécessaire 2020-06-05 16:39:44 +04:00
9d5713c1f9 Intégration de la branche release-9.8.0 2020-04-28 16:42:19 +04:00
d083d87c93 Intégration de la branche release-9.8.0 2020-04-28 16:42:19 +04:00
9ed51b43f8 Init changelog & version 9.8.0 2020-04-28 16:42:19 +04:00
e2b2f49214 dk: vérifier que le répertoire destination existe avant rsync 2020-04-28 16:41:47 +04:00
c147a0cef3 dk: possibilité de spécifier les options de rsync 2020-04-23 11:07:46 +04:00
05fd86acc7 Intégration de la branche release-9.7.0 2020-04-17 10:20:37 +04:00
10177a16de Intégration de la branche release-9.7.0 2020-04-17 10:20:37 +04:00
b18b24c22d Init changelog & version 9.7.0 2020-04-17 10:20:37 +04:00
f4f9b69257 dk: bug avec la synchro d'un fichier 2020-04-16 22:44:38 +04:00
74190f7264 dk: par défaut, les suffixes courants sont supprimés 2020-04-15 04:31:29 +04:00
9fad9924ef dk: support répertoire/fichier source 2020-04-14 12:24:16 +04:00
1d7e2d0949 bug 2020-04-10 17:09:32 +04:00
7268cecce6 pff: workaround pour certaines erreurs de packaging 2020-04-10 17:04:41 +04:00
aa269661cb dk: support build args avec la syntaxe NAME=VALUE 2020-03-31 23:38:53 +04:00
f7b3f90ba0 dk: augmenter la largeur de la colonne node 2020-03-29 21:27:21 +04:00
1c4c1c3faf dmctl: l'option -a supporte les répertoires 2020-03-29 21:04:44 +04:00
ccf3c67278 dk: aliases de filtres 2020-03-27 18:58:23 +04:00
1b12cee1fb dk: afficher un warning si le profil n'est pas défini pour une machine 2020-03-26 22:57:04 +04:00
45976f45c2 dk: sta affiche le statut pour tous les services 2020-03-26 22:33:25 +04:00
1960c0c94e dk: implémenter status 2020-03-26 16:40:37 +04:00
4f206d732c dk: frontend plus 'transparent' 2020-03-20 22:51:05 +04:00
d666859b83 dk: supprimer avec image:tag si possible 2020-03-18 05:25:05 +04:00
4ee346b521 maj chemin ip 2020-03-13 10:46:54 +04:00
c9796b2562 ipaddr: frontend pour ip addr 2020-03-12 21:36:39 +04:00
668eec1497 dmctl: possibilité d'importer toutes les machines d'un répertoire 2020-03-11 15:23:47 +04:00
abd178bf0d Intégration de la branche release-9.6.0 2020-02-24 09:13:57 +04:00
b0db9af448 Intégration de la branche release-9.6.0 2020-02-24 09:13:57 +04:00
d7763fd8b7 Init changelog & version 9.6.0 2020-02-24 09:13:57 +04:00
b7492fc34e dk: ajout de l'option -e 2020-02-14 11:18:32 +04:00
08c081ac33 modification pour support des valeurs spéciales (ne sont pas synchronisées) dans LDAP 2020-02-13 09:04:26 +04:00
98129cd400 passer par un script annexe pour cssh 2020-02-07 08:45:57 +04:00
99c0ccd66d dk: support de PHP_VERSION_MAX 2020-01-30 14:32:44 +04:00
2283a66201 Intégration de la branche release-9.5.0 2020-01-28 14:06:01 +04:00
412ad542f4 Intégration de la branche release-9.5.0 2020-01-28 14:06:01 +04:00
8f1810f52b Init changelog & version 9.5.0 2020-01-28 14:06:01 +04:00
640a2b1158 maj doc 2020-01-28 14:05:43 +04:00
7f143c0fd4 Intégration de la branche release-9.4.4 2020-01-27 08:48:56 +04:00
e873ad523e Intégration de la branche release-9.4.4 2020-01-27 08:48:56 +04:00
625b45582a Init changelog & version 9.4.4 2020-01-27 08:48:56 +04:00
300935c83e bug 2020-01-26 09:27:36 +04:00
43330297e3 Intégration de la branche release-9.4.3 2020-01-24 13:02:51 +04:00
046ba0d323 Intégration de la branche release-9.4.3 2020-01-24 13:02:50 +04:00
7fd6b81742 Init changelog & version 9.4.3 2020-01-24 13:02:50 +04:00
4ba6909e4b ajouter le support de buster pour la completion 2020-01-24 12:52:43 +04:00
0c21e704c3 Intégration de la branche release-9.4.2 2020-01-24 08:52:32 +04:00
c8b8f107a1 Intégration de la branche release-9.4.2 2020-01-24 08:52:31 +04:00
979c39c01b Init changelog & version 9.4.2 2020-01-24 08:52:31 +04:00
fd5b7872a3 dk: bug 2020-01-24 08:52:22 +04:00
ad1898388f maj de l'image par défaut 2020-01-23 20:25:04 +04:00
c33ff4c5ef ajouter le support de buster 2020-01-23 13:59:34 +04:00
247b449752 dk: maj doc 2020-01-22 13:56:34 +04:00
28f4d398c2 dk: support de COMPOSER_PHP 2020-01-22 10:47:14 +04:00
f28df5266c maj image composer 2020-01-21 22:15:09 +04:00
1210ca7382 Intégration de la branche release-9.4.1 2020-01-20 14:46:16 +04:00
46416f713c Intégration de la branche release-9.4.1 2020-01-20 14:46:16 +04:00
60a8796f4c Init changelog & version 9.4.1 2020-01-20 14:46:16 +04:00
6f01bac2be dk: si la commande est inconnue, la transmettre à docker 2020-01-12 07:25:48 +04:00
175f6edce6 cssh: traiter le cas où screen n'est pas disponible 2019-12-26 15:34:25 +04:00
73db7284cf umail: possibilité de spécifier le type de body 2019-12-18 21:50:17 +04:00
5fc55cc3e7 dk: support des fonctions de nettoyage par profil 2019-12-13 22:14:56 +04:00
21274af799 dk: APPS peut avoir une valeur dépendante du profil 2019-12-13 18:17:51 +04:00
f7f8889bba support des filtres avec wildcards 2019-12-05 14:43:33 +04:00
747c563a2b repoctl: divers bugs 2019-12-05 11:56:34 +04:00
4fdd23c8eb dk: support limité de podman 2019-12-03 06:39:00 +04:00
5457228b02 dk: support des aliases pour les mappings pff 2019-12-03 06:27:46 +04:00
a55f9c4a04 dk: ajout de get-profile 2019-11-21 08:55:09 +04:00
ac7efadaae dk: possibilité de forcer la suppression des images 2019-11-07 12:09:39 +04:00
528483893f typo 2019-11-06 15:19:46 +04:00
d5c51622c2 dk: dans build.env, une variable peut en mentionner une autre 2019-11-05 01:14:07 +04:00
f7d036a60f repoctl: cosmetic 2019-10-10 10:41:13 +04:00
87b8d5b5b0 Intégration de la branche update-repoctl 2019-10-10 10:24:11 +04:00
0866bbd4d9 finaliser edit et implémenter get 2019-10-10 10:24:07 +04:00
8daf4ec6a1 début implémentation edit 2019-10-08 23:07:55 +04:00
ef1c8f2996 utiliser dk composer, et ne pas utiliser de container par défaut 2019-10-03 19:43:46 +04:00
269379f3a2 dk: rendre le code overridable 2019-10-03 19:20:32 +04:00
aae3703558 bug avec traitement des variables de docker-machine -u 2019-10-03 19:12:38 +04:00
f8750935a8 dk: par défaut, forcer l'utilisation de la machine locale pour dk composer 2019-10-03 18:56:33 +04:00
c202a279dd dk: support COMPOSER_SETUP et COMPOSER_CMD 2019-10-03 15:58:07 +04:00
921caa1acc dk: le shell est lancé en root 2019-10-02 22:20:48 +04:00
ce98445e41 dk: support de composer shell 2019-10-02 22:16:40 +04:00
2b5ed18ee3 dk: ajouter un frontend pour composer 2019-10-02 22:04:10 +04:00
29c54e7548 dmctl: import/export de docker machines 2019-09-28 17:30:10 +04:00
de53bae548 Intégration de la branche add-repoctl 2019-09-28 12:33:19 +04:00
600b8246fa support limité de pcrone et pclone 2019-09-28 12:33:03 +04:00
914f635fe1 implémentation initiale de create, list, delete 2019-09-18 10:57:20 +04:00
a774497248 squelette 2019-09-18 10:57:20 +04:00
5a444a65b9 dk: support pff 2019-09-18 10:57:12 +04:00
425e8a5642 dk: maj format ps 2019-09-18 00:35:10 +04:00
52c3d7a690 dk: ps, ls et rm prennent des filtres. ajout de pull 2019-09-18 00:13:22 +04:00
d5f8fa4fff cx-updatedev: ajout de l'option -g 2019-08-27 16:48:27 +04:00
5fe5137328 dk: support de COMPOSER_ACTION et sqlmig NOFIX 2019-08-26 16:12:53 +04:00
74cf35b47c typo 2019-08-21 11:20:21 +04:00
046862389d alias pour docer-machine 2019-08-21 09:57:08 +04:00
3dfe5427e9 dk: support de scripts génériques 2019-08-14 17:29:30 +04:00
488a2574a8 délai pour éviter les maj intempestives d'eclipse 2019-07-19 16:27:42 +04:00
13ce5b8254 dk: tagger aussi avec la distribution 2019-07-18 22:51:43 +04:00
d03b04f822 dk: ajouter automatiquement le suffixe -$DIST à la version 2019-07-18 20:57:53 +04:00
68794910a6 maj doc 2019-07-15 09:11:52 +04:00
7fad3635e2 cssh: compat avec les vieilles versionsd de linux 2019-07-14 21:49:18 +04:00
f65dda68e4 bug 2019-07-13 04:57:58 +04:00
bc7eebc487 ajouter --with-registry-auth à dk update 2019-06-29 12:17:07 +04:00
8af50f4b91 nettoyage de logs webobjects 2019-06-26 11:08:24 +04:00
458ccd3df1 dk: support de certaines options pour dk run 2019-06-25 11:02:52 +04:00
c97bc6a92e dk: support de la commande run 2019-06-24 23:57:02 +04:00
ae70f66089 synchro des dépendances uniquement pour le type composer 2019-06-20 15:10:42 +04:00
f508dae60f support des mises à jour en mode devel 2019-06-20 14:58:00 +04:00
60a4c73857 cx-conndev: ajouter l'option -d 2019-06-19 23:22:17 +04:00
85ac283eff cx-conndev: renommer l'option en --mysql-cmd 2019-06-19 15:51:31 +04:00
80db4629f6 cx-conndev: ajout de l'option --cmd 2019-06-19 14:50:34 +04:00
4400ba758a ajout de ensure-vip 2019-06-18 07:16:06 +04:00
ae7ffeb7b1 cx-updatedev: remplacer --ru par -w, --ud, --ur en fonction des besoins 2019-06-12 23:19:00 +04:00
9bfd515cac dk -c est auto-complete friendly 2019-06-11 08:18:43 +04:00
a5a41d9b1e dk: support de fichiers compose non défaut 2019-06-11 08:06:29 +04:00
7e5859eee5 bug 2019-06-11 06:39:13 +04:00
b3429603c9 bug 2019-06-07 15:15:12 +04:00
c44d1d31f7 dk: par défaut, ne pas ajouter le profil au nom de projet 2019-06-05 18:23:07 +04:00
aa4eb4a481 cx-updatedev: ajout des mises à jour récursives 2019-06-05 15:45:37 +04:00
4c58b127af Intégration de la branche release-9.4.0 2019-06-05 10:15:32 +04:00
991f94b48c Init changelog & version 9.4.0 2019-06-05 10:15:32 +04:00
fb96852bf6 Intégration de la branche dk-deploy 2019-06-05 10:14:23 +04:00
386fc0d070 implémenter service, update, scale 2019-06-05 10:14:08 +04:00
c2f43e6b6d optimiser l'utilisation de docker-machine 2019-06-05 10:14:08 +04:00
8cb3b2fc57 ajouter la commande deploy 2019-06-05 10:14:07 +04:00
5967541159 cx-updatedev: ajouter l'option -j 2019-06-03 09:41:29 +04:00
d79e218dfc dk: support de push pour docker-compose 2019-05-31 17:14:59 +04:00
ccbfff4366 dk: simplifier la gestion du nommage des services 2019-05-31 15:42:11 +04:00
50dee34e6f dk: support de build d'un service en particulier 2019-05-30 23:25:34 +04:00
99d5069b55 bug 2019-05-30 22:43:23 +04:00
a825f3b931 bug 2019-05-27 10:07:18 +04:00
8c143e16c3 foreach: ajout de --cc 2019-05-27 10:00:33 +04:00
7e26ae1e0c foreach: ajout des raccourcis -G et -C 2019-05-26 23:05:59 +04:00
cbb34ecd3f cx-conndev: afficher les erreurs 2019-05-24 11:49:11 +04:00
7524a2869a cosmetic 2019-05-22 23:07:41 +04:00
9b03dcd69f cx-updatedev: ajout de -i et -u 2019-05-22 23:04:52 +04:00
c7eca6ae7d cx-updatedev: ajout des options -l et -c 2019-05-21 10:54:54 +04:00
8b4067ab49 bug 2019-05-21 09:50:42 +04:00
3971dca710 scripts pour gérer projets composer 2019-05-21 09:40:15 +04:00
c66eee117e scripts pour gérer projets composer 2019-05-21 09:31:23 +04:00
7c135faa60 fconv, fnconv: support de sed 2019-05-18 07:44:46 +04:00
72c3512072 dk: bug dans la détection du type de projet 2019-05-10 16:29:30 +04:00
0891e89278 sqlmig: corriger la lecture des paramètres 2019-05-09 12:48:17 +04:00
d197fc0420 sqlmig: support de l'importation directe des fichiers csv 2019-05-09 12:21:07 +04:00
d028c47842 dk: maj doc et support d'origine de profil 2019-05-02 13:46:08 +04:00
b068a12c02 dk: maj doc et support de branche de profil 2019-05-02 13:39:24 +04:00
d7c981d257 dk: afficher l'adresse ip 2019-04-17 02:31:09 +04:00
7ec538187b dk: renommer service en systemd-unit 2019-04-10 07:25:20 +04:00
43c5445603 Intégration de la branche release-9.3.0 2019-04-02 16:03:38 +04:00
0054d4de70 Init changelog & version 9.3.0 2019-04-02 16:03:38 +04:00
6a03853aa7 ajout de update-apps en natif 2019-04-02 15:59:47 +04:00
6462bec2c6 dk: ajouter exec, maj doc 2019-03-28 10:53:50 +04:00
7a728a9d34 dk: stop, logs et down acceptent maintenant un argument 2019-03-28 10:19:55 +04:00
df788f6159 support mariadb 2019-01-17 09:16:01 +04:00
edaaec19ee bug 2019-01-14 16:09:03 +04:00
41089f7ed0 dk: ajout de l'action bs 2018-12-09 22:33:07 +04:00
af2b74f31f sqlmig: init crée aussi 02grants.sql 2018-12-08 15:48:12 +04:00
de5727e7e2 Intégration de la branche release-9.2.0 2018-12-08 11:58:23 +04:00
49c8e756e6 Init changelog & version 9.2.0 2018-12-08 11:58:23 +04:00
71bb5aaaec bug 2018-12-08 11:57:53 +04:00
44b1954a43 dk: s'assurer que docker-compose et docker existent quand on crée le service 2018-12-07 16:04:18 +04:00
d70825c296 dk: bug dans la définition du service 2018-12-01 23:04:28 +04:00
45d912d495 EnsureVM: être en mode shared par défaut 2018-11-27 23:15:04 +04:00
3292686e33 EnsureVM: ne plus chercher à décharger les modules par défaut 2018-11-24 16:28:57 +04:00
5139c09d70 Intégration de la branche release-9.1.0 2018-11-22 15:40:33 +04:00
25a4f9640d Init changelog & version 9.1.0 2018-11-22 15:40:33 +04:00
ba29496150 dk: génération d'un service systemd 2018-11-22 15:34:07 +04:00
f72dd86584 option -n pour pcrone le clone pas le dépôt nouvellement créé 2018-11-21 22:19:35 +04:00
01325d0c23 sqlmig: support chemin config/sqlmig et bug avec csv_null 2018-11-19 22:24:28 +04:00
45da726704 dk: ajout de l'option --fake pour afficher les commandes 2018-11-19 09:56:04 +04:00
dcb637e054 dk: support de --no-cache pour docker-compose build 2018-11-16 21:22:05 +04:00
9c6f606daa Intégration de la branche update-pcrone 2018-11-16 20:53:43 +04:00
764dd53bf8 maj prefixe et meilleur affichage des erreurs 2018-11-16 20:53:33 +04:00
307fa4827a dk: option -j pour désactiver le cache 2018-11-16 20:48:51 +04:00
45c6422e62 profils pour docker-machine 2018-11-16 16:25:33 +04:00
a9004fa1d2 dk: PROFILE est exporté 2018-11-16 14:16:16 +04:00
434a87019f Intégration de la branche release-9.0.0 2018-11-15 09:40:20 +04:00
6d0b122a8f Init changelog & version 9.0.0 2018-11-15 09:40:20 +04:00
af969e4876 maj de l'url source de nutools 2018-11-15 09:40:06 +04:00
b0d9cd91bb Intégration de la branche release-8.3.0 2018-11-15 09:32:01 +04:00
0c4af8a27a Init changelog & version 8.3.0 2018-11-15 09:32:01 +04:00
7ff32caed0 dk brd honore les scripts de build 2018-11-14 14:28:24 +04:00
3293d09e90 support docker-machine use 2018-11-12 16:36:58 +04:00
e6be47eb32 ajouter de nouveaux formats pour parse_date 2018-11-10 09:58:22 +04:00
1151b5c01a latin1compat gère les points de suspension 2018-11-08 15:18:10 +04:00
2f86786c94 ajouter le template pour yaml 2018-11-08 10:25:44 +04:00
e9d0aeebaf Intégration de la branche release-8.2.0 2018-11-02 15:06:18 +04:00
0193e7c35d Init changelog & version 8.2.0 2018-11-02 15:06:18 +04:00
7583dedaea Intégration de la branche update-pff 2018-11-02 15:05:54 +04:00
96c146e0c5 ajout de l'option NOMERGES pour ne pas tenter de fusionner avec git des fichiers binaires 2018-11-02 15:05:49 +04:00
4f7cb900d2 dk: support de .compose.env pour le nom du projet 2018-10-09 19:12:07 +04:00
9d991e2d43 pcrone: possibilité de créer des dépôts gogs 2018-10-09 11:14:05 +04:00
e3ba5800c0 dk: corriger push 2018-10-09 10:02:57 +04:00
48c662be2e gérer les tags autrement. ajouter push 2018-10-08 11:50:56 +04:00
566f1d7afb tailor.py: possibilité de modifier les préréglages par les options 2018-10-06 16:46:15 +04:00
f34b63a51e bug 2018-10-01 20:49:00 +04:00
2873638aa5 afficher le profil courant 2018-10-01 09:28:20 +04:00
3a4cc1258d Intégration de la branche release-8.1.0 2018-09-28 08:39:31 +04:00
22adfe63ee Init changelog & version 8.1.0 2018-09-28 08:39:31 +04:00
e74480cccc dk: action build par défaut 2018-09-27 21:51:33 +04:00
56b18a4eb6 dk: rendre overridable VERSION 2018-09-27 21:46:24 +04:00
ed180b5bfb dk pour faciliter l'utilisation de docker 2018-09-27 21:00:45 +04:00
4ad84c0c47 sqlmig: ajout de la restauration de la base test à partir d'une copie de la prod 2018-09-24 09:20:24 +04:00
a5be8d8770 maj gitignore initial 2018-09-10 07:54:53 +04:00
19267dd993 utempl: support du datage automatique des fichiers 2018-07-21 10:34:02 +04:00
dbf965db90 Intégration de la branche release-8.0.0 2018-07-21 10:21:05 +04:00
3ac0859c0a Init changelog & version 8.0.0 2018-07-21 10:21:04 +04:00
a60f23a2af maj version ulib 2018-07-21 10:20:53 +04:00
6cfb62b92d sqlmig: ignorer les opérations de maintenance 2018-07-21 10:19:23 +04:00
305a1808bf bug 2018-06-19 09:06:49 +04:00
6184fde5a2 tailor.py: avec le preset php, traiter \n 2018-06-19 01:15:39 +04:00
7676c7635a tailor.py: ajouter l'analyse de php fatal error 2018-06-18 23:18:07 +04:00
775bc8eee6 tailor.py: préréglages pour apache et php 2018-06-18 22:10:00 +04:00
d620760681 sqlmig: support des préfixes alphanumériques pour les fichiers csv 2018-06-18 09:06:02 +04:00
fe0e2718d8 maj doc 2018-06-12 10:44:01 +04:00
300d42ab04 cosmetic 2018-06-07 07:33:22 +04:00
16114f54d6 maj doc 2018-06-04 15:37:14 +04:00
827dd141b7 sqlmig: l'option -f supporte plusieurs fichiers 2018-06-04 14:26:29 +04:00
e78ec7f61c sqlmig: support des préfixes avec '.' pour les conversions csv --> sql 2018-06-04 14:06:19 +04:00
0ae44bd3ed maj scripts docker 2018-06-03 13:29:53 +04:00
1a2f6c4335 maj docker 2018-06-02 22:00:01 +04:00
cdd152f716 maj docker 2018-06-02 21:55:40 +04:00
04e37db5cb docker: ajout run 2018-06-02 19:52:40 +04:00
75385a76bf cosmetic 2018-06-02 19:15:20 +04:00
c1d98a01dc interpréteur interactif sous docker 2018-06-02 18:29:18 +04:00
ba2c8063a8 image docker 2018-06-02 18:20:02 +04:00
e621a5671e sqlmig: possibilité de spécifier csv_null pour la conversion des fichiers csv 2018-05-31 15:28:25 +04:00
6f1b8b4926 mysqlloadcsv: bug avec les valeurs de la forme 00+ 2018-05-31 02:25:49 +04:00
a88c24e747 sqlmig: ajout de l'option --connect 2018-05-30 07:18:48 +04:00
bad6c4811a sqlmig: corriger le suivi des maj admin 2018-05-24 22:53:32 +04:00
4b85c93251 sqlmig: support des suffixes pour les noms de base de données 2018-05-24 22:13:06 +04:00
9600fb801a sqlmig: bug avec option conflictuelle 2018-05-22 10:23:05 +04:00
7181725056 sqlmig: ajout de l'option --update-one 2018-05-15 10:02:43 +04:00
6a6b2a5f32 sqlmig: mode fake pour afficher les opérations qui doivent être faites 2018-05-11 11:13:33 +04:00
e0d6910271 nulib: afficher les lignes d'action 2018-05-09 00:18:25 +04:00
c7286d1406 nulib: corriger l'affichage du menu 2018-05-08 21:45:53 +04:00
4d2bf89e23 settings pour projet eclipse 2018-05-08 21:45:37 +04:00
0bbcef690b nulib: génération d'une table 2018-05-08 15:20:45 +04:00
51f4e92c3d ajouter projet pydev pour nulib 2018-05-08 08:50:11 +04:00
8b8cffd9f8 mysqlloadcsv: insérer les valeurs dans une transaction 2018-05-07 14:26:05 +04:00
d4137906be ulib/web: possibilité d'avoir un container non fluid pour menu 2018-05-07 11:23:59 +04:00
6e142b7e61 bug 2018-05-07 11:12:49 +04:00
1a3550ed9a nulib/web: ajout de redirect() et set_profile(). améliorer la lisibilité des arguments 2018-05-07 10:49:00 +04:00
c58a6ccaf7 sqlmig: ne pas utiliser truncate par défaut 2018-05-06 15:26:22 +04:00
7bc3af2869 sqlmig: conversion automatique des fichiers *.csv en *.sql 2018-05-06 14:37:05 +04:00
4c43b01739 sqlmig: mode dépendant du profil 2018-05-06 11:50:45 +04:00
174c08759e sqlmig: support des fichiers spécifique au mode devel 2018-05-06 00:25:47 +04:00
e493b49811 sqlmig: support des profils 2018-05-04 10:13:21 +04:00
66e1674c00 pff: support de DISTTYPE 2018-05-03 15:35:33 +04:00
f1dca506fb sqlmig: support des mises à jour administratives 2018-05-03 14:17:30 +04:00
b5e2417514 création de sqlmig pour gérer les mises à jour sur une base de données 2018-05-02 22:18:47 +04:00
7f503ae2ab pff: utiliser git diff pour la colorisation 2018-04-30 15:08:06 +04:00
96449de8d6 base: page_maybe() affiche les codes couleurs 2018-04-30 14:42:21 +04:00
6e45dfe457 pff: bug avec filtres 2018-04-30 13:36:32 +04:00
60f3e4d344 Intégration de la branche nulib-experiment 2018-04-26 23:23:10 +04:00
a3c5ffbd88 maj logo univ2017 2018-04-26 23:22:46 +04:00
4535b67045 support deploydb et pffprofile 2018-04-26 23:22:46 +04:00
7356c1da73 déploiement d'application webpyapp 2018-04-26 23:22:45 +04:00
1c3c07f8b2 début d'implémentation nulib 2018-04-26 23:22:45 +04:00
db57d7958f mysqlloadcsv: support de l'option --prefix 2018-04-25 19:07:41 +04:00
a4e758ec5d pff: afficher la version du projet 2018-04-17 17:01:52 +04:00
777bb1fc68 Intégration de la branche update-pff 2018-04-17 09:31:00 +04:00
9c86a6ff6e début du support de la variable PROTECTS 2018-04-17 06:29:47 +04:00
f9d3f906f2 après Commit, vérifier qu'il n'y a pas encore des marques de conflit 2018-04-17 05:44:32 +04:00
fa6e87a425 possibilité de spécifier merge_strategy pour les conflits 2018-04-17 05:18:11 +04:00
5f68f3eb50 l'utilisateur doit faire Commit ou Abort. sinon lui demander son choix 2018-04-17 04:50:28 +04:00
33b7dbabd8 chrono.py: ajouter le bouton pause 2018-04-15 03:30:31 +04:00
49df32157d uinst: support des exclusions pour chmod et chown 2018-03-20 12:03:17 +04:00
daafe41e63 pcrone: créer les fichiers .gitignore et .gitattributes 2018-03-14 09:59:49 +04:00
3c8b6f8d5f norm_properties: supprimer les espaces de fin 2018-03-08 16:36:46 +04:00
045885c77a les fichiers properties sont parfois considérés comme binaires 2018-03-08 16:05:11 +04:00
1b1589e046 pff: ne pousser que si un remote est défini pour la branche 2018-03-08 15:49:52 +04:00
13440e2fd9 pff: support des filtres à l'intégration 2018-03-08 15:44:30 +04:00
ee3b58354c pff: support du paramètre MKDIRS 2018-03-08 14:54:40 +04:00
56972a669c toinst: ajouter l'option --ct 2018-03-08 14:50:19 +04:00
952b4edcef pff: raccourcis pour abort() et done() 2018-03-08 14:50:07 +04:00
51109be813 pff: forcer le mode des fichiers du profil Base parce que git n'enregistre pas les autorisations 2018-03-08 10:47:18 +04:00
82c366957f pff: les fichiers du profil Base sont en lecture seule 2018-03-08 10:36:22 +04:00
2fa28d5cd3 pff: honorer l'ordre de .pff.conf pour le premier profil 2018-03-07 11:07:35 +04:00
af006c4db9 pff: sélectionner le premier profil par défaut 2018-03-07 11:01:32 +04:00
e20757b45e Intégration de la branche update-pff 2018-03-06 13:08:59 +04:00
cb21c53895 finaliser l'implémentation de patch_cmd() 2018-03-06 13:08:18 +04:00
04f2f91d08 intervertir les options -a et -b. en effet, -a est susceptible d'être plus utilisé et est plus naturel 2018-03-06 13:08:06 +04:00
4bc810843e corriger l'affichage de diff_cmd() 2018-03-06 13:08:06 +04:00
7299aeb98c suite implémentation patch_cmd() 2018-03-06 13:08:05 +04:00
eee9a65c70 support de l'édition dans le profil ALL et rajouter les raccourcis -P, -T, -A 2018-03-06 13:08:05 +04:00
6b33929b17 début d'implémentation de patch_cmd() 2018-03-06 13:08:05 +04:00
2b1ad2b531 implémenter l'option -p avec edit_cmd() 2018-03-06 13:07:53 +04:00
a0752e9d94 maj doc 2018-03-01 14:27:31 +04:00
ad303993e0 Intégration de la branche update-pu 2018-03-01 10:22:33 +04:00
7408760ca7 finaliser l'implémentation 2018-03-01 10:22:29 +04:00
1ec281d746 début d'implémentation 2018-02-26 16:28:41 +04:00
5d828c4894 pff: créer automatiquement le profil Common 2018-02-23 09:22:13 +04:00
9481cad10c pff: bug avec l'intégration de fichier origines locaux 2018-02-23 09:15:53 +04:00
f17dccaaf9 maj des logos de l'université 2018-02-14 12:15:40 +04:00
a61452c816 pff: enregistrer les profils définis et les créer sans confirmation si nécessaire 2018-02-07 17:23:47 +04:00
86963ec09f pff: cosmetic 2018-02-07 16:58:54 +04:00
9eaed33548 pff -d: ajout de --list-names pour afficher seulement les noms de fichiers 2018-02-07 16:43:06 +04:00
70165cb09f pff: ajout de --diff et --infos -l 2018-02-07 16:22:50 +04:00
ed0659f2a1 pff: améliorer l'affichage de pff --infos 2018-02-07 15:32:11 +04:00
f0ae5ae118 Intégration de la branche update-pff 2018-02-07 12:32:54 +04:00
9a37329cc1 utiliser le profil Common par défaut 2018-02-07 12:32:46 +04:00
6f6fc747e2 maj doc 2018-02-07 12:03:51 +04:00
7954e7fcc8 pff: support des projets pff déployés avec toinst 2018-02-05 10:20:43 +04:00
ab535b759b toinst: exclure le répertoire des profils pff 2018-02-05 10:09:30 +04:00
625f93d80e Intégration de la branche add-pff 2018-02-01 14:58:21 +04:00
4a8c5d1e3d completion automatique 2018-02-01 14:57:38 +04:00
151e083a49 multiconf: ajout de conf_update() 2018-02-01 14:57:38 +04:00
7c86854605 maj du prompt 2018-02-01 14:57:38 +04:00
20d083b4f7 implémentation initiale 2018-02-01 14:57:38 +04:00
4a46cd33f0 maj sqlcsv 2018-01-24 10:12:55 +04:00
bdd859c5ae bug avec l'utilisation de gensub() 2018-01-23 11:07:48 +04:00
bda961fc5b update-nutools: support de l'option --devel 2018-01-13 19:03:37 +04:00
f35e9e8560 ufile: ajouter le mode local uniquement 2018-01-13 17:42:47 +04:00
bc4c8cbb81 Intégration de la branche ufile-named-rules 2017-12-27 10:21:42 +04:00
be4985f61a possibilité de choisir la réponse par défaut pour copy_update_ask et conf_install 2017-12-27 10:21:32 +04:00
0e6f55abb9 support des variables 2017-12-27 10:21:00 +04:00
191d3c223d ufile: support des règles nommées 2017-12-27 07:44:51 +04:00
2d84c44c5b Intégration de la branche release-7.4.0 2017-12-20 19:01:55 +04:00
b40388f3a5 Init changelog & version 7.4.0 2017-12-20 19:01:55 +04:00
48e43599b8 sqlcsv: possibilité de spécifier le chemin de chargement des drivers jdbc 2017-12-20 19:01:10 +04:00
a7e6228669 ufile: par défaut -c ne charge que le fichier spécifié 2017-12-17 11:46:58 +04:00
0b595837ba support de quelques combinaisons de diacritiques 2017-11-13 12:05:12 +04:00
4f520db786 authftp: support préliminaire de --sftp 2017-11-13 11:21:17 +04:00
4f11cc40d6 ufile: possibilité d'écraser les fichiers sans confirmation 2017-10-28 11:25:11 +04:00
9132d6d6ec Intégration de la branche release-7.3.0 2017-10-19 12:12:34 +04:00
b07b894e01 Init changelog & version 7.3.0 2017-10-19 12:12:34 +04:00
72d7d15cca maj version ulib 2017-10-19 12:11:41 +04:00
9fb19b4cef ulib/multiconf: améliorer conf_install() 2017-10-19 12:11:03 +04:00
6c3ae24a67 openurl: supprimer la sortie erreur pour cacher les warnings GTK 2017-10-19 09:12:08 +04:00
528a281e30 em: supprimer la sortie d'erreur par défaut. rendre configurable la géométrie 2017-10-18 06:55:51 +04:00
489b31ded9 moiso: améliorer l'ergonomie pour le démontage 2017-10-18 06:37:44 +04:00
7bd0a95b3e ufile: support des pattern regex 2017-10-17 22:45:47 +04:00
6130c2ff7f chrono.py: 0 est équivalent à la chaine vide 2017-10-17 21:46:01 +04:00
9c5b46b372 pyulib: ajouter ShConfig 2017-10-16 04:37:26 +04:00
f31f5f72ad corriger un problème de compilation sur OL6 2017-10-13 12:02:19 +04:00
ab8ede8c28 awk: support du format dd/mm/yy 2017-10-12 21:03:59 +04:00
312c7dcc1b ajouter des fonctions pour simplifier le check de la version de l'os et l'installation de paquets 2017-10-12 19:47:53 +04:00
5bf55e5999 bug 2017-09-28 10:43:04 +04:00
b6ff411b8f maj doc uscrontab 2017-09-27 21:58:29 +04:00
1569bfb29a Intégration de la branche release-7.2.0 2017-09-26 17:01:37 +04:00
45573e23f7 Init changelog & version 7.2.0 2017-09-26 17:01:35 +04:00
1e576da4ae multiconf: rajouter conf_upgrade() dans conf_auto() 2017-09-25 23:18:51 +04:00
eeef48dfe1 Intégration de la branche update-config 2017-09-24 14:07:29 +04:00
ea45055864 implémentation simplifiée avec conf_upgrade() 2017-09-24 14:07:09 +04:00
efc60b36ab description des modifications 2017-09-24 11:38:26 +04:00
36eec4a517 Intégration de la branche update-ufile 2017-09-22 21:15:34 +04:00
2afffefa75 ne pas implémenter la recherche automatique de fichier de configuration 2017-09-22 21:15:04 +04:00
6ec37f6af4 ufile: implémenter l'option -r 2017-09-22 21:14:16 +04:00
6e8c200803 maj TODO 2017-09-22 20:44:32 +04:00
cf629e62e1 uscrontab: support des oneshot vars 2017-09-21 02:09:05 +04:00
a66c0c231f uscrontab: ajout des options -@, -H, -M 2017-09-21 01:20:56 +04:00
52e838e383 uwatch: ajouter les options -w et -p pour attendre la disparition d'un fichier ou d'un processus 2017-09-21 00:54:32 +04:00
8ad2e4c1e1 lftp ne supporte pas l'utilisation des guillemets 2017-09-20 23:58:30 +04:00
7fb81a0bc9 désactiver la vérification du certificat par défaut 2017-09-20 09:12:22 +04:00
dbc3daa737 multiconf: bug 2017-09-19 08:19:12 +04:00
aff1c15931 multiconf: support des variables de type path et compatibilité avec bash 4.3 2017-09-18 11:47:20 +04:00
8e17fb1fb3 Intégration de la branche add-multiconf 2017-09-15 07:05:12 +04:00
a916180ef2 ajouter conf_install pour installer les fichiers de configuration dans un répertoire standardisé 2017-09-14 23:11:26 +04:00
0372a5c44c ufile charge les fichiers de ~/etc/ufile.d/ 2017-09-14 22:21:53 +04:00
7d1ec90345 simplifier l'API 2017-09-14 22:21:34 +04:00
c9886925a3 fin implémentation 2017-09-14 21:51:23 +04:00
72e0c369c3 maj doc 2017-09-14 08:28:40 +04:00
f4725018aa squelette initial 2017-09-13 08:13:11 +04:00
1267056d2f Intégration de la branche release-7.1.0 2017-09-10 19:20:38 +04:00
3f105f12d5 Init changelog & version 7.1.0 2017-09-10 19:20:38 +04:00
f131e21177 uwatch: ajout de l'option -r 2017-09-09 21:25:40 +04:00
d99718e692 cosmetic 2017-09-07 16:11:44 +04:00
1aee0cb4e6 maj sqlcsv 2017-09-07 15:32:23 +04:00
f05382cdac Intégration de la branche release-7.0.0 2017-08-25 15:54:19 +04:00
747c056aec maj ulib 2017-08-25 15:54:10 +04:00
1ee4de04c4 Init changelog & version 7.0.0 2017-08-25 15:53:53 +04:00
e4f154efc6 uawk: possibilité de lancer les versions locale-aware 2017-08-25 15:45:39 +04:00
ef00e07b21 bug 2017-08-24 13:39:49 +04:00
377ca5e82f implémenter awkcsv2fsv. corriger un bug avec les outils qui utilisaient cawkrun à l'intérieur d'une fonction l* 2017-08-24 12:15:16 +04:00
2f448d542d ussh: problèmes de compatibilité 2017-07-29 23:02:39 +04:00
2cc24119b5 bug potentiel 2017-07-26 11:44:17 +04:00
65bd363a13 webpyapp: réorganiser les fichiers pour supporter des librairies locales 2017-07-20 09:13:51 +04:00
0b39b2324b webpyapp: les variables de server.conf sont configurables 2017-07-20 01:30:56 +04:00
d1a1d4d664 webpyapp: cosmetic 2017-07-20 00:16:02 +04:00
46fbec7974 webpyapp: bootstrap facilité des sessions 2017-07-19 23:46:46 +04:00
c541958828 webpyapp: support du mode développement 2017-07-19 23:46:37 +04:00
e2ea2ead3c ufile: ajout de --force-cp 2017-07-19 23:12:06 +04:00
eacc23902f Intégration de la branche release-6.7.0 2017-07-19 15:45:16 +04:00
8e404c4f65 Init changelog & version 6.7.0 2017-07-19 15:45:15 +04:00
1b922757c0 apacheconfig: support d'un script post-update.sh 2017-07-18 10:49:45 +04:00
70fedc230c webpyapp: support de bootstrapcss 2017-07-18 10:36:19 +04:00
eca8c11900 webpyapp: installation du service 2017-07-18 09:32:17 +04:00
ce52d25855 support de l'activation de services systemd uniquement 2017-07-18 09:31:50 +04:00
a76d28e9fd webpy: chargement automatique de la configuration depuis server.conf 2017-07-18 07:56:15 +04:00
070f5bfff6 début de template webpyapp 2017-07-17 21:59:20 +04:00
3f464145aa web.py: ajout de la fonction _utf8plaintext() 2017-07-17 21:59:00 +04:00
335ca05aaa compatibilité avec les vieilles versions de bash 2017-07-17 16:15:30 +04:00
04717850a5 support de stretch pour la completion 2017-07-10 20:07:31 +04:00
c659159188 corriger le calcul de la version de tomcat à sélectionner 2017-06-29 00:26:26 +04:00
e3344f512e bug 2017-06-28 23:33:02 +04:00
f663e59746 pdev: ajout de l'option -n 2017-06-27 11:03:25 +04:00
796898b528 apacheconfig: destdir n'est peut-être pas spécifié 2017-06-20 13:17:30 +04:00
4f9939715b apacheconfig: mettre à jour le dépôt avant de charger la configuration 2017-06-20 13:11:30 +04:00
80ae9d74bd apacheconfig -up met à jour le dépôt avant le déploiement 2017-06-20 13:09:23 +04:00
2a6cd4ddec javaproperties: support de l'échappement de : et = 2017-06-14 15:51:56 +04:00
1f4362c226 Intégration de la branche release-6.6.0 2017-06-10 11:22:12 +04:00
6df782178d Init changelog & version 6.6.0 2017-06-10 11:22:12 +04:00
302986d345 maj dépot jclain.fr en repos.ct 2017-06-10 11:21:53 +04:00
e1311bb5c5 Intégration de la branche release-6.5.0 2017-05-30 17:12:12 +04:00
63ab5fe49c Init changelog & version 6.5.0 2017-05-30 17:12:11 +04:00
f9f0ffc4ab toinst: les options -r et -B ne requièrent pas que la webapp source existe 2017-05-18 09:23:55 +04:00
d4591dfe8e rtoinst: ne pas copier les fichiers de VCS lors du déploiement 2017-05-16 10:04:38 +04:00
bef927cc3b umirror: ajouter les options -g et -n pour faciliter le téléchargement des livraisons APOGEE 2017-05-16 09:27:14 +04:00
5d3f576994 upassword: nouvelles options -m et -n pour la gestion des salts 2017-05-15 14:43:46 +04:00
084b96a65b Intégration de la branche release-6.4.0 2017-05-05 16:50:31 +04:00
8b3a7a2cac Init changelog & version 6.4.0 2017-05-05 16:50:31 +04:00
c25160c63b fndate: maj doc et améliorations ergonomiques 2017-05-04 21:49:56 +04:00
d5f4ae25c0 pclone: filtrer les projets de type wildcard 2017-05-04 17:51:05 +04:00
f8f731e3ed support de la complétion pour rwoinst -w 2017-05-03 15:27:38 +04:00
e4b7714799 tailor.py et chrono.py: améliorer l'affichage de l'aide 2017-05-01 13:39:40 +04:00
6f1d5e5947 Intégration de la branche rwoinst-updates 2017-05-01 12:05:25 +04:00
4aaded5ab9 support des répertoires source maven et de l'interrogation de deploy pour: profil, déploiement des resources web, variables bounce, notag, exec, dbconfig, dbconfigmap 2017-05-01 12:02:51 +04:00
f20cc48176 rwoinst: ajouter l'option -w qui peut être spécifiée en parallèle de -h pour déployer les resources web vers un serveur différent 2017-04-28 14:43:12 +04:00
9e4ccaef00 woinst: support des préfixes dans les variables 2017-04-28 14:42:11 +04:00
8f9ddb5bb2 uinst.sh et woinst.sh: améliorer la comptabilité 2017-04-28 14:41:22 +04:00
e01cabb65d makeself: retourner le code d'erreur même avec un auto-extractible temporaire 2017-04-28 14:39:59 +04:00
8482d61288 pclone: ajouter l'option --master 2017-04-27 23:06:30 +04:00
a264b3e484 pclone: implémenter le clonage récursif avec -r ainsi que les options -n et -u 2017-04-27 17:35:34 +04:00
262048fee5 ufile: possibilité de classer vers plusieurs destinations 2017-04-25 08:27:09 +04:00
8c22012d13 ufile: copier en local sans utiliser scp si possible 2017-04-22 10:22:18 +04:00
dec100b23b ufile: support du classement par scp 2017-04-22 10:08:13 +04:00
c82c90840e ufile: support des inclusions, d'un fichier de configuration alternatif 2017-04-22 09:49:25 +04:00
d535df3629 ufile: le code de retour de renamef peut annuler une règle 2017-04-22 00:24:04 +04:00
0365c5483c améliorer l'ergonomie de ruinst, rwoinst, toinst: pas la peine de confirmer le répertoire courant s'il est déployé sur un hôte 2017-04-21 17:50:54 +04:00
8ce9821095 fndate: améliorer l'ergonomie de l'option -@ 2017-04-21 16:32:54 +04:00
5b0f13dde1 ufile: changer la sémantique de renamef 2017-04-21 11:16:47 +04:00
fec6b2fb8b pu: support du scenario ou la branche de feature distante a été supprimée 2017-04-21 11:04:21 +04:00
151433b85c ufile: ajout des options --list et --edit 2017-04-21 10:12:25 +04:00
a99f313014 ufile: classement automatique de fichiers 2017-04-20 23:20:18 +04:00
540e718180 base.core: qwc supporte les classes de caractères 2017-04-20 23:19:55 +04:00
78e0a8e99c cosmetic 2017-04-20 16:33:47 +04:00
027b416398 ppath2() est plus approprié dans certaines circonstances 2017-04-20 16:06:02 +04:00
c03411536e revert 9d8b32bcd1: la correction du bug était incorrecte 2017-04-20 10:54:28 +04:00
1dbe02f6af Intégration de la branche tomcat-deploy 2017-04-19 11:29:15 +04:00
2394edf7da toinst: implémenter la sauvegarde 2017-04-19 11:28:55 +04:00
fc467cb250 finaliser le support de .toinst.conf et traiter les options --exclude, --protect et --rsync-option 2017-04-19 10:49:05 +04:00
9d8b32bcd1 parse_args: bug avec la fonction reset 2017-04-19 10:48:03 +04:00
9084e7eb34 début du support de .toinst.conf 2017-04-19 08:12:32 +04:00
a84775ce48 support des options --wamap et --protect depuis la configuration locale de déploiement 2017-04-19 01:00:55 +04:00
3bbabbf811 deploy: support des options --of, --df, --lf 2017-04-19 00:35:07 +04:00
c1a536be52 deploy: support des options -old pour afficher des informations supplémentaires 2017-04-19 00:15:01 +04:00
2daf190c60 quelques améliorations dont support du profil de déploiement 2017-04-18 22:03:00 +04:00
0b468307f7 implémenter toinst et rtoinst 2017-04-18 11:35:54 +04:00
836c933949 maj doc ruinst et désactiver déploiement de clé par rwoinst 2017-04-18 11:35:27 +04:00
2991e63d5b deploy: requête récursive par défaut 2017-04-18 11:33:26 +04:00
52bb0d584f base.core: ajout de la fonction echo_setv2() pendant de echo_seta2() 2017-04-18 11:33:26 +04:00
bab9c501e5 tailor.py: suivre un fichier est optionnel 2017-04-12 06:39:48 +04:00
4593ad8f8e ajout de tailor.py: affichage d'un fichier en mettant en surbrillance certains patterns 2017-04-12 06:14:09 +04:00
8e5ad225f1 Intégration de la branche release-6.3.1 2017-04-06 22:34:13 +04:00
a4b83564c8 Init changelog & version 6.3.1 2017-04-06 22:34:12 +04:00
b3e6ff6092 cgilsxml.py: maj doc 2017-04-06 22:32:53 +04:00
ee2e411856 cgilsxml.py: bug 2017-04-06 22:23:37 +04:00
e44003526f Intégration de la branche release-6.3.0 2017-04-04 04:05:37 +04:00
396728a5d8 maj ulib 2017-04-04 04:05:32 +04:00
a6160b308a Init changelog & version 6.3.0 2017-04-04 04:04:59 +04:00
2fb17f7402 implémenter dumpcsv --awk-map 2017-04-02 19:09:51 +04:00
42c6fa6218 ne pas activer git-ssh.userconf par défaut 2017-03-25 10:43:35 +04:00
5061d4b6e4 bug dans les règles par défaut de mssh 2017-03-24 23:41:00 +04:00
14c56673a1 mssh: portage générique de mfssh pour choisir l'exécutable ssh en fonction du réseau source et destination 2017-03-24 23:30:53 +04:00
a2480ec269 apacheconfig: *.conf matche aussi *.ssl.conf et *-certs.conf 2017-03-24 17:14:11 +04:00
95aa12fb25 Intégration de la branche update-apacheconfig 2017-03-24 15:06:47 +04:00
f233ae1bca support de l'option -p pour traiter les ligne de la forme <VirtualBox *:PORT>#*ip:IP 2017-03-24 15:06:40 +04:00
f908e1ce1d support de SITE_IP 2017-03-24 09:42:38 +04:00
999fb7f78d bug 2017-03-23 12:15:27 +04:00
37a2dce795 apacheconfig -K: support de plus de patterns pour le fichier modèle 2017-03-17 20:41:34 +04:00
ab4148c0ac cgilsxml.py: nouvelles options --first-spec et all-specs 2017-03-13 15:39:17 +04:00
6970b5dcec Intégration de la branche release-6.2.0 2017-03-13 11:28:17 +04:00
37a2ff3d8d maj ulib 2017-03-13 11:28:13 +04:00
8f4a5acb06 Init changelog & version 6.2.0 2017-03-13 11:27:58 +04:00
4a7b14b929 ajouter un argument force à testupdated et testnewer 2017-03-13 11:27:05 +04:00
8a6678cc0c ruinst et rwoinst: piloter l'interaction distante à partir du paramétrage local 2017-03-09 13:23:59 +04:00
e9b574d83d rwoinst: intégrer des fonctionnalités de ruinst; support préliminaire de deploy 2017-03-09 07:15:09 +04:00
2561f67213 ruinst: utiliser la configuration ruinst par défaut pour deploy 2017-03-09 06:42:22 +04:00
38f21aa312 ruinst: support de deploy pour calculer l'hôte pour le déploiement 2017-03-09 06:40:02 +04:00
d5846bab1d deploy: possibilité de filtrer les variables à afficher. en cas d'échec, afficher false pour faciliter l'utilisation avec eval() 2017-03-09 06:39:33 +04:00
8fa58e24e3 quelques corrections sur deploy 2017-03-08 00:48:52 +04:00
20df6c462f support du depot deploy 2017-03-07 16:48:11 +04:00
3a24e8301e régression dans set_array_cmd() 2017-03-02 03:14:49 +04:00
31fb39d642 réorganiser certaines fonctions 2017-03-02 02:38:04 +04:00
528d5795ec ajout des fonctions seta(), _seta(), echo_seta() 2017-03-02 02:37:47 +04:00
a43359c760 maj doc 2017-03-02 01:45:26 +04:00
2177e6acc6 cesser d'utiliser des fonctions obsolètes 2017-03-01 22:34:59 +04:00
9a777b3307 cosmetic 2017-03-01 20:14:07 +04:00
a5fcf7858f ajout de evali() 2017-03-01 20:13:42 +04:00
af3bb37f3d ajout de evals() 2017-03-01 20:11:21 +04:00
fbad98660d corriger un problème potentiel avec should_quote() 2017-03-01 18:10:28 +04:00
f570438117 bug avec recho -n; maj doc 2017-03-01 18:10:14 +04:00
3d1b826976 cosmetic 2017-02-28 17:28:10 +04:00
e800376e40 cosmetic 2017-02-24 15:19:00 +04:00
0805f4f522 SVirtualBox: ajout de l'option -r pour relancer avec restauration du snapshot 2017-02-24 14:11:29 +04:00
225060c0b1 utempl/www: correction des options et modification cosmétique 2017-02-24 07:09:43 +04:00
ad88c99fc5 Intégration de la branche update-templates 2017-02-23 20:41:37 +04:00
532d21d2a4 support de la génération de pages html avec bootstrap 2017-02-23 20:40:04 +04:00
c52031b38a maj de la description 2017-02-23 16:33:08 +04:00
ca4de19902 Intégration de la branche update-apacheconfig 2017-02-21 19:19:20 +04:00
02f52af289 afficher un menu si plusieurs répertoires de templates sont disponibles 2017-02-21 19:19:07 +04:00
f2b6381943 SVirtualBox: démarrer en mode separate par défaut 2017-02-21 06:45:55 +04:00
6192c0ab25 description des modifications à apporter 2017-02-20 22:31:12 +04:00
7a385357de support des hôtes de l'université 2017-02-20 14:40:49 +04:00
b6b7fa94ca uscrontab: support de l'option -G pour les tests 2017-02-20 13:55:49 +04:00
e58ff74d83 maj du template pour runs 2017-02-16 15:53:34 +04:00
c6d0fe5e95 Intégration de la branche release-6.1.0 2017-02-13 17:06:44 +04:00
c5ef5ceea6 maj ulib 2017-02-13 17:06:40 +04:00
5411b3b1f9 Init changelog & version 6.1.0 2017-02-13 17:06:29 +04:00
748c2f7ab0 Intégration de la branche update-network 2017-02-13 17:05:58 +04:00
367acfe620 marquer les fichiers à ignorer pour les projets dépendants 2017-02-13 17:05:41 +04:00
ad19121f6b ipcalc: utiliser ip route au lieu de route 2017-02-13 17:04:24 +04:00
feb00bcf11 support de libvirt sur jessie 2017-02-13 10:58:36 +04:00
fa3d3b48b1 début de réorganisation des fonctions 2017-02-13 08:15:35 +04:00
b266663d8a uproject push: support des options -abt avec des arguments 2017-02-12 11:46:13 +04:00
286d1fe959 pcrone: support des dépôt en http 2017-02-12 11:17:17 +04:00
67f29ddea4 ulib/sysinfos: implémenter dump_sysinfos, unsupported_system, require_sysinfos 2017-02-10 15:26:41 +04:00
a8fa7227b8 ulib/runs: quelques corrections mineures 2017-02-10 12:14:30 +04:00
e9e4e6a56e correction mineure avec les options de yum 2017-02-10 11:01:03 +04:00
e5f0df2e18 ulib/sysinfos: support de oracle linux; correction d'un bug pour macosx 2017-02-10 10:17:50 +04:00
27a2ab0c01 pyulib: ajouter l'argument nocopy=False à seqof() pour éviter des bugs subtils 2017-02-08 00:36:16 +04:00
11b87fdfd1 ajout de netconfig: gestion des interfaces réseaux 2017-01-24 00:40:53 +04:00
87edaad648 Intégration de la branche better-umountr 2017-01-10 16:37:50 +04:00
83d6db3072 auto-complétion pour umountr 2017-01-10 16:37:41 +04:00
f34f32a7a3 support des options --[no-]recursive et --[no-]poweroff 2017-01-10 16:32:00 +04:00
35a55f07d1 ajout du script create-user, pour créer un utilisateur sudoer et lui installer une clé publique ssh 2017-01-01 01:58:02 +04:00
5524d3f245 Intégration de la branche release-6.0.1 2016-12-30 18:39:35 +04:00
e6e73bb8aa Init changelog & version 6.0.1 2016-12-30 18:39:35 +04:00
e79658e0c5 maj de la doc 2016-12-30 18:39:24 +04:00
04681449a0 Intégration de la branche release-6.0.0 2016-12-30 18:26:44 +04:00
96447b9430 maj version ulib 2016-12-30 18:26:36 +04:00
739a94d44d Init changelog & version 6.0.0 2016-12-30 18:26:14 +04:00
a7767f7983 Intégration de la branche better-apacheconfig 2016-12-30 18:22:58 +04:00
683d5df062 pour simplifier le débuggage, set -x est désactivé pour les fonction urequire(), parse_args() et awkdef() 2016-12-30 18:22:42 +04:00
ed1633a30b module template: support de variables supplémentaires avec TEMPLATE_USER_VARS et de la description des variables dans le fichier de configuration 2016-12-30 18:21:25 +04:00
b920641fca l'installation distante de modules uinst par rruns se fait par défaut sans confirmation 2016-12-30 18:18:56 +04:00
fd9105fa44 bug dans le module base.num: 'is*num -' était vrai 2016-12-30 18:17:46 +04:00
6366256c52 module ipcalc: ajout de ipcalc_network() 2016-12-30 18:14:53 +04:00
fbc1a5cc9b mise à jour du module debian
- support de jessie+
- possibilité de spécifier qu'une interface n'a pas de passerelle avec la
  syntaxe iface//-:ipsuffixes
- support de la configuration de réseau partiel
- support de la mise à jour de /etc/networks
2016-12-30 18:14:01 +04:00
e3cd3cec3f diverses modification de apacheconfig et apache.tools
- rétablir deux répertoires de templates différents: celui pour debian wheezy-
  est distinct de celui pour jessie+
- support d'une configuration complète ou partielle
- support de la mise à jour de la configuration réseau: configuration complète
  (interfaces standards et bridge) ou partielle (ajout d'adresse ip)
- support de templates pour la création de nouveaux site
- améliorer le support des certificats: utiliser ceux qui sont déjà installés le
  cas échéant.
- support de fichiers *rewrite*.rules directement dans le répertoire
  principal. Les fichiers de RewriteRules/ sont obsolètes.
- quickstart pour apacheconfig, afin de simplifier son utilisation dans des
  scripts
- fonction legacy_mkRewriteRules() pour pouvoir traiter les fichiers
  *rewrite*.rules dans des scripts.
2016-12-30 18:10:59 +04:00
c552d2de56 corriger le module python ulib.ext.xpath 2016-12-25 12:44:31 +04:00
62a59e51f4 kill-ssh-user-sessions.service: laisser un peu de temps pour que le client soit notifié 2016-12-21 06:00:13 +04:00
4b7d4f4c04 ajouter une option pour installer le service kill-ssh-user-sessions 2016-12-21 05:23:20 +04:00
c95d1cd39a ajouter un service pour tuer les sessions ssh lors de l'arrêt de la machine 2016-12-21 05:08:45 +04:00
4e1e5a44ca ruinst: tracer la collecte d'informations sur l'hôte distant 2016-12-15 08:40:08 +04:00
5aa60a3367 désactiver la création du lien pour xpathtool.py, qui ne fonctionne qu'à partir de lib/ulib/support 2016-12-08 16:49:35 +04:00
6a4e6a7146 foreach: ajouter une syntaxe alternative pour lister directement les éléments 2016-12-04 17:53:53 +04:00
24a8839fec update-nutools: possibilité de cloner la branche develop avec l'option --develop 2016-11-28 17:43:34 +04:00
24812c1795 initialiser PYTHONIOENCODING pour faciliter l'exécution de scripts python 2016-11-28 11:21:22 +04:00
390233a4a2 modification pour afficher l'aide même si certains outils requis sont absents 2016-11-28 09:25:52 +04:00
2425cbe0f8 maj de l'arborescence de la doc 2016-11-28 09:16:41 +04:00
96b1866049 prel: support du fichier .prel-noauto pour interdire les releases automatiques 2016-11-28 08:35:29 +04:00
a7ee78fb7f description branche 2016-11-28 08:22:33 +04:00
b278b175e3 prel: mise à jour de la commande par défaut pour les dépendances 2016-11-25 19:08:50 +04:00
9983e499a4 pver: support des aliases D et P pour .pver-map 2016-11-25 13:58:29 +04:00
e37cc8fad3 pver et prel utilisent -p par défaut pour le support maven 2016-11-25 11:01:25 +04:00
2980d15769 pver supporte la gestion des versions maven 2016-11-22 15:28:28 +04:00
190519d968 pxs ne requière plus la présence du remote origin 2016-11-19 10:28:26 +04:00
4a4094c493 déplacement de is_defined() et is_array() dans base.core 2016-11-01 00:03:25 +04:00
d735b7b695 ulib: strops: ajout des opération mid et repl 2016-10-21 15:31:02 +04:00
8d486dc4e3 ulib: ajouter la fonction strops 2016-10-21 15:19:53 +04:00
db24c7084f ulib: ajout de la fonction is_array() 2016-10-21 13:46:14 +04:00
3ccd4edc7d apacheconfig: ne pas chercher à utiliser site-certs.conf s'il n'y a pas les variables @@{cert,key,ca}@@ 2016-10-20 10:28:06 +04:00
b9dc5ca71e bug dans apacheconfig 2016-10-19 11:57:35 +04:00
b4ade73a8f TODO de branche 2016-10-17 23:45:33 +04:00
44fe622ac8 chrono.py: chronomètre graphique 2016-10-14 13:52:51 +04:00
2a6d0899ca ulib/base: implémenter ask_any() 2016-10-07 17:20:06 +04:00
94615de67a conversion de CHANGES.txt en CHANGES.md 2016-10-06 00:34:02 +04:00
d2a56d6f1f prel: ajout de l'option --uc pour convertir CHANGES.txt en CHANGES.md 2016-10-06 00:26:56 +04:00
f3ba5e3b7c prel: générer un fichier CHANGES.md par défaut avec une syntaxe un peu différente 2016-10-06 00:18:54 +04:00
40babfe24a sqlcsv: l'option -l supporte une url jdbc, et la recherche de sqlcsv.properties se fait dans tous les répertoires parent jusqu'à $HOME 2016-10-03 11:00:41 +04:00
f4f49c048c Intégration de la branche release-5.3.0 2016-09-28 23:32:03 +04:00
87d8797666 Maj des fichiers 2016-09-28 23:31:50 +04:00
cbf79b19af Init changelog & version 5.3.0 2016-09-28 23:31:32 +04:00
5c466d8c2c ldif et ldap: match des suffixes sans tenir compte de la casse. modrdn prend un nouvel argument SUFFIX 2016-09-28 23:28:27 +04:00
9eb566acf5 runsmod: modifier chemins par défaut 2016-09-02 10:02:09 +04:00
a08278896a bash_completion: bug sur certains serveurs 2016-09-02 10:02:09 +04:00
9710cf7e70 Intégration de la branche release-5.2.1 2016-09-01 15:44:28 +04:00
45df4e36dd Init changelog & version 5.2.1 2016-09-01 15:44:28 +04:00
9995f9583c runsmod: bug 2016-09-01 15:44:21 +04:00
538b84fbe5 Intégration de la branche release-5.2.0 2016-08-31 22:30:44 +04:00
5c9144f0b9 maj ulib 2016-08-31 22:30:32 +04:00
ca5c076718 Init changelog & version 5.2.0 2016-08-31 22:30:19 +04:00
361f1b287f Intégration de la branche runsmod-goodies 2016-08-31 22:27:29 +04:00
8854469a64 maj de la config par défaut 2016-08-31 22:24:47 +04:00
f0a71e4598 bug avec la génération de sysinfos.conf 2016-08-31 12:19:36 +04:00
830a33b96f rruns calcule aussi les chemins d'hôtes automatiquement 2016-08-31 11:21:09 +04:00
40f5347656 préparer le calcul automatique des chemins 2016-08-30 18:44:20 +04:00
2fbc599113 bug avec git clone lors du basculement sur la branche develop 2016-08-30 16:46:20 +04:00
5bef9b104a utiliser la même logique que uproject pour cloner en mode devel 2016-08-30 16:28:08 +04:00
96afb2a10f mapping des répertoires de destination 2016-08-30 16:15:25 +04:00
4b212d85ba ne pas utiliser %n tout de suite 2016-08-30 14:12:25 +04:00
30e5ddabbb runs et rruns: améliorer le calcul des chemins 2016-08-30 14:12:25 +04:00
55c57551eb support de //...%h... 2016-08-30 14:12:25 +04:00
409e4062f1 préparer implémentation de %n 2016-08-30 14:12:25 +04:00
208f30ddad Intégration de la branche better-fndate 2016-08-30 13:47:36 +04:00
f388f27495 ajouter des liens pour les fonctions courantes de fndate. En mode automatique, si le fichier contient déjà une mention de date, ne pas la modifier. rajouter l'option -@ pour forcer la modification de la date 2016-08-30 13:47:31 +04:00
cdbcddb7f4 Intégration de la branche release-5.1.0 2016-08-25 15:36:52 +04:00
ddf9d7c71c maj ulib 2016-08-25 15:36:48 +04:00
7f06888e34 Init changelog & version 5.1.0 2016-08-25 15:36:31 +04:00
8a334183bb ulib/ldif: support de l'opération modrdn 2016-08-25 15:35:47 +04:00
b710461786 Intégration de la branche apacheconfig 2016-08-24 11:50:21 +04:00
e52d6c6558 déplacer la logique de apacheconfig dans le module apache.tools 2016-08-18 17:01:49 +04:00
9fa8e3c19b Intégration de la branche release-5.0.0 2016-08-09 09:43:27 +04:00
c3b9bba98a maj ulib 2016-08-09 09:43:16 +04:00
35334b63cd Init changelog & version 5.0.0 2016-08-09 09:42:44 +04:00
c00d9e42ed cgilsxml.py: prévoir le cas où le fichier disparait pendant que la liste est construite 2016-08-09 09:42:00 +04:00
2fc7392fe1 uxpath.py: bug 2016-08-06 11:27:50 +04:00
f85cd8aafb foreach: implémenter la syntaxe %var par défaut 2016-07-29 12:44:51 +04:00
de383beab1 foreach: définir des variables supplémentaires pour chaque fichier trouvé 2016-07-29 11:05:39 +04:00
a7fd880ea4 foreach: maj doc 2016-07-28 16:36:13 +04:00
c01eb20bda ulib/awk: maj doc 2016-07-05 13:11:27 +04:00
04b723f512 qsql: compatibilité avec anciennes versions de bash 2016-07-01 19:31:30 +04:00
dcf0e613e1 module apache: ajout de HTDOCSBASE pour le déploiement multi-homé 2016-06-23 06:52:29 +04:00
75654610f7 woinst: support du déploiement d'applications construites avec Maven 2016-06-22 15:43:26 +04:00
eb0a3be78e woctl _create: enlever le suffixe .woa par défaut 2016-06-21 12:59:07 +04:00
d251a4e764 woinst: tenir compte des variables utilisateurs 2016-06-21 12:46:29 +04:00
2fd51b65a6 pclone bascule automatiquement sur la branche develop si elle existe 2016-06-18 17:40:02 +04:00
d056be4a2a foreach: ajouter l'option --parent 2016-06-13 08:18:37 +04:00
63e78f44ef ulib: compatibilité avec versions précédentes de bash 2016-06-10 10:58:59 +04:00
64699c045d ensure_hostname(): clarification du message affiché 2016-06-10 09:31:22 +04:00
22acf0a947 ulib: ajouter _qsql() et qsql() pour quoter des chaines sql 2016-06-10 08:53:26 +04:00
18b25016ab prel: améliorer l'affichage du résumé 2016-06-10 06:13:54 +04:00
b8bf04b689 uawk dump: ajouter le format -v qui affiches des variables individuelles 2016-06-10 05:37:45 +04:00
d57839dc3c Intégration de la branche cgilsxml 2016-06-10 04:30:05 +04:00
6e67302691 la disposition, le type et l'encoding peuvent être spécifique à un expression --spec ou --glob 2016-06-10 04:28:01 +04:00
b7600aa43b possibilité de matcher des sous-répertoires dans l'expression --spec. Support du match de type --glob 2016-06-10 03:57:07 +04:00
a49d6e2a24 les valeurs None ne sont pas affichées. <break_here/> n'a pas de valeur 2016-06-10 01:34:38 +04:00
16c1936e65 uawk dump: avec la méthode -a, afficher par défaut un tableau vide avant 2016-06-09 17:32:55 +04:00
c6b6dd41c9 uawk: ajout de l'alias dump qui avait été oublié 2016-06-09 17:16:39 +04:00
d8ab7f74ac cgilsxml.py: cosmetic 2016-06-09 16:29:24 +04:00
0204a21aeb cgilsxml.py: possibilité de classifier des fichiers au sein d'un groupe avec --break-on 2016-06-08 16:06:23 +04:00
3a9bf0492e cgilsxml.py: possibilité de spécifier la disposition du contenu, le type de contenu, ainsi que l'encoding 2016-06-08 15:05:41 +04:00
a730609280 cgilsxml.py: permettre de télécharger le fichier avec la disposition inline 2016-06-08 14:07:39 +04:00
ce0193f64b cgilsxml.py: corriger la doc 2016-06-08 12:34:52 +04:00
1eba9a75af foreach: améliorer l'affichage 2016-06-08 12:34:22 +04:00
c669e8fa57 utempl -t wosrc: si on crée un wosrc dans le répertoire java, enlever automatiquement le package pour les fichiers resources pour une configuration maven 2016-06-07 16:08:35 +04:00
f0f7a6ff3e utempl -t wosrc: génère des pages bootstrap par défaut 2016-06-07 15:46:07 +04:00
8fced87f34 woctl run: permettre de choisir la version de java utilisée pour le lancement 2016-06-07 09:26:00 +04:00
9fe17b3593 Ajouter le script foreach 2016-06-07 02:06:59 +04:00
f5db579658 uxpath: support de la modification de la valeur d'un noeud 2016-06-06 00:27:58 +04:00
3653f7db5a Ajout des fonctions {build,eval}cmd et upvar 2016-06-05 17:41:00 +04:00
7091ecff64 support de la création d'un template wosrc pour un projet maven 2016-06-04 18:53:27 +04:00
34dbba9991 support de l'utilisation des valeurs spécifiques de GIT_ANNEX pour rsync avec git-annex 2016-06-04 14:48:23 +04:00
470d7cfe41 pcrone peut utiliser un répertoire existant 2016-06-02 17:52:33 +04:00
e4b77298bc corriger le template shell 2016-06-02 17:40:08 +04:00
28bb531203 activer l'auto-complétion sur debian jessie 2016-06-02 17:24:46 +04:00
317dbca756 ajout de compileAndGo dans les templates 2016-06-01 18:33:29 +04:00
01b9a6804f ulib/vcs: corriger le code de git_track_branch. Utiliser ce code dans pdev --sync 2016-05-25 19:43:17 +04:00
fc75fcd960 runsmod: quelques corrections mineures 2016-05-24 12:25:38 +04:00
50580856f0 runsmod: Implémenter les fonctionnalités documentées 2016-05-24 11:47:59 +04:00
12c521cfb2 indenter l'affichage des fonctions qui demandent une saisie de l'utilisateur 2016-05-23 12:12:42 +04:00
Jephte CLAIN
86a5787510 em: forcer -nw en mode non display 2016-05-17 11:17:16 +04:00
e74d9e4a46 bug 2016-05-17 10:16:43 +04:00
9218941135 ajouter l'option -g à caturl 2016-05-13 09:38:34 +04:00
fcacf64679 maj doc 2016-05-11 07:30:14 +04:00
01ea57ea6d changer l'affichage de udir, et mettre à jour la doc 2016-05-11 07:25:19 +04:00
9fe71b3e11 ajouter fndate pour dater les fichiers 2016-05-10 22:23:15 +04:00
8143452c1b rendre ppath() plus résistant 2016-05-10 20:06:05 +04:00
c9ce115f78 Intégration de la branche improve-tls 2016-05-10 13:49:22 +04:00
d9153af17f support de la configuration tls selon https://wiki.mozilla.org/Security/Server_Side_TLS 2016-05-10 13:49:06 +04:00
135dbf667d diverses corrections sur runs 2016-05-10 11:22:03 +04:00
3d5aeb2be0 Ajouter l'option -c à umountr 2016-05-09 18:46:39 +04:00
278bf5a2d0 renommer rumount un umountr 2016-05-09 18:37:34 +04:00
db76c12a1f Intégration de la branche runsmod-paths 2016-05-09 17:55:05 +04:00
a31f8c29ee changer la convention de nommage pour les répertoires ~/runs 2016-05-09 17:54:58 +04:00
5a31e7e09a ulib/java: ajout de la fonction get_java_version() 2016-04-28 10:40:13 +04:00
Jephte CLAIN
f74b5e3b26 Générer la doc au format markdown pour tagadoc 2016-04-27 03:34:32 +04:00
ded89be259 pdev: corrections pour supporter nouvelle version de git 2016-04-25 21:20:56 +04:00
5d3e9fefd7 runsmod: corriger les valeurs par défaut pour les hôtes dans la bulle serveur 2016-04-25 15:00:14 +04:00
ada36863be uenv: bug dans le calcul des répertoires destination 2016-04-25 10:35:57 +04:00
deaa416ff8 Intégration de la branche runsmod-only 2016-04-24 22:51:50 +04:00
f96c4821cd proposer de créer la configuration par défaut 2016-04-24 22:50:10 +04:00
f04e862bc0 implémentation initiale de runsmod 2016-04-24 19:04:39 +04:00
42b959010c cosmetic 2016-04-24 19:03:12 +04:00
9bc373f60b cgiparams.py: implémenter le code de retour 2016-04-24 18:09:59 +04:00
1834d296bb intégrer les fonctionnalités de cgiupload.py dans cgiparams.py 2016-04-24 18:06:26 +04:00
a18fa53945 Intégration de la branche release-4.4.1 2016-04-15 12:24:10 +04:00
9fc1c673de maj ulib 2016-04-15 12:24:07 +04:00
6c93dc161a Init changelog & version 4.4.1 2016-04-15 12:24:01 +04:00
a45fd99410 awkrun: ajouter l'argument suffix à qsql(), cqsql(), cval() 2016-04-15 12:23:27 +04:00
339ac983d8 Intégration de la branche release-4.4.0 2016-04-15 12:04:39 +04:00
57f608de23 maj ulib 2016-04-15 12:04:36 +04:00
287c82374c Init changelog & version 4.4.0 2016-04-15 12:04:24 +04:00
73391a9a72 awkrun: ajout d'un champ field à cqsql 2016-04-15 12:03:49 +04:00
2f60fece01 git_track_branch(): support de git >= 1.8.x 2016-04-14 14:39:05 +04:00
Jephte CLAIN
130b4d1618 tenir compte du fichier /etc/debian_chroot pour initialiser UTOOLS_CHROOT 2016-04-14 05:39:07 +04:00
48c04203bf ne pas afficher d'erreur si apache n'est pas installé 2016-04-13 15:39:57 +04:00
5e1a6cf517 Intégration de la branche rumount 2016-04-13 15:39:34 +04:00
1ad804b0d5 implémentation initiale de rumount 2016-04-13 14:51:37 +04:00
f460399dd5 améliorer le calcul du répertoire destination avec pclone/pcrone 2016-04-13 10:01:37 +04:00
6411e639d9 configurer la valeur de l'umask 2016-04-13 09:58:42 +04:00
Jephte CLAIN
eb4362dd5a apacheconfig: déploiement pour plusieurs systèmes à partir des mêmes sources 2016-04-07 23:55:50 +04:00
Jephte CLAIN
2d45f23bc9 Intégration de la branche release-4.3.0 2016-04-07 14:58:07 +04:00
Jephte CLAIN
9068873219 maj ulib 2016-04-07 14:58:02 +04:00
Jephte CLAIN
66f39c7adb Init changelog & version 4.3.0 2016-04-07 14:57:46 +04:00
Jephte CLAIN
d021c97ede support de on_debian() avec des arguments 2016-04-07 14:57:20 +04:00
1a9358f08b Intégration de la branche release-4.2.0 2016-04-06 14:25:45 +04:00
2df5603ba3 maj ulib 2016-04-06 14:25:41 +04:00
e120fa6f8f Init changelog & version 4.2.0 2016-04-06 14:25:18 +04:00
a710c5ab4b Intégration de la branche stdout 2016-04-06 14:24:59 +04:00
ba969e3788 ajout de stdredir pour pallier l'absence éventuelle de /dev/std* 2016-04-06 14:24:53 +04:00
472f2c7786 Intégration de la branche sysinfos 2016-04-05 12:23:20 +04:00
1864cdf4dd fonctions pour faciliter la gestion des dépendances sous debian 2016-04-05 12:23:10 +04:00
2c27f03ba0 uproject: ajouter la commande xconfig-export 2016-03-23 00:02:07 +04:00
ed3de6d6e1 umail: ajout de l'option --gencmd 2016-03-08 16:16:40 +04:00
d445368841 Intégration de la branche release-4.1.1 2016-03-08 12:04:23 +04:00
06954efd35 maj ulib 2016-03-08 12:04:19 +04:00
abbbfd5949 Init changelog & version 4.1.1 2016-03-08 12:04:05 +04:00
0bd2b1fda3 correction de bugs avec apacheconfig 2016-03-08 11:51:46 +04:00
7cdedc8d03 Intégration de la branche release-4.1.0 2016-03-03 11:02:15 +04:00
62ad86607f Init changelog & version 4.1.0 2016-03-03 11:02:14 +04:00
4024b2a2c8 pyulib/umail: possibilité de spécifier le type de contenu 2016-03-03 11:01:55 +04:00
14c2751d80 Intégration de la branche release-4.0.0 2016-03-01 19:08:32 +04:00
4cb3b3cfb7 maj ulib 2016-03-01 19:08:28 +04:00
3ff10d0cf1 Init changelog & version 4.0.0 2016-03-01 19:08:14 +04:00
c46626cdc2 ldif: support de dumpcsv et printcsv dans get_transform_cmd() 2016-03-01 18:32:25 +04:00
d661e439cb doinplace fonctionne comme la fonction. la version étendue est un lien nommé doinplacex 2016-03-01 17:04:25 +04:00
Jephte CLAIN
d6540ac596 dumpcsv: ajouter l'option --hname 2016-03-01 07:05:51 +04:00
Jephte CLAIN
903d500c14 dumpcsv: ajouter les options --keep-fields, --skip-fields, --dump-headers 2016-03-01 00:28:27 +04:00
Jephte CLAIN
af183325fe implémenter printcsv 2016-02-29 23:55:54 +04:00
Jephte CLAIN
383410a451 *csv: améliorer cohérences des arguments 2016-02-29 23:27:21 +04:00
Jephte CLAIN
4808fa027d dumpcsv: ajout de l'option -b 2016-02-29 23:16:35 +04:00
Jephte CLAIN
939b5add30 implémenter dumpcsv et nettoyer un peu le code 2016-02-29 22:01:49 +04:00
Jephte CLAIN
cb0e553a4c script doinplace qui mélange les fonctionnalités des fonctions doinplace et evalp 2016-02-29 20:36:39 +04:00
Jephte CLAIN
0cf8e041f5 scripts noerror, noout, noerr qui fonctionnent comme les fonctions du même nom 2016-02-29 20:36:10 +04:00
Jephte CLAIN
66249c9d46 nutools base: ajout de noerror(), noout(), noerr() 2016-02-29 20:35:15 +04:00
Jephte CLAIN
db76488e16 maj doc 2016-02-29 20:34:45 +04:00
40f1bf6be1 prel: après avoir fusionné une branche, revenir sur develop 2016-02-26 14:03:31 +04:00
131bbe7e3d Intégration de la branche release-3.5.0 2016-02-26 11:35:19 +04:00
4119ae6579 maj ulib 2016-02-26 11:35:16 +04:00
6492637857 Init changelog & version 3.5.0 2016-02-26 11:35:05 +04:00
4648b3f744 awkrun: ajout de la fonction qarr() 2016-02-26 11:19:30 +04:00
81e7f9b672 correction de certains messages affichés 2016-02-18 09:31:59 +04:00
0ea24ec240 ajout de sqlcsv 2016-02-17 07:59:34 +04:00
Jephte CLAIN
ad06535c8d pu: autoriser fast-forward même en cas de modifications locales 2016-02-15 21:09:30 +04:00
1c397e8999 ajout des fonctions awk cqsql(), sval(), cval(). réorganiser et clarifier la doc 2016-02-15 15:09:17 +04:00
f038fbde56 Intégration de la branche release-3.4.2 2016-02-10 11:46:13 +04:00
b99d4bac33 bug ulib 2016-02-10 11:46:09 +04:00
604996f297 Init changelog & version 3.4.2 2016-02-10 11:45:49 +04:00
a5e2bdee4c Intégration de la branche release-3.4.1 2016-02-10 11:45:30 +04:00
c0afa5d32d Init changelog & version 3.4.1 2016-02-10 11:45:30 +04:00
a702b8953e mergecsv: bug quand left ne contient qu'un seul champ vide 2016-02-10 11:45:24 +04:00
b548dec8e7 Intégration de la branche release-3.4.0 2016-02-09 11:26:06 +04:00
2987a7ff59 maj ulib 2016-02-09 11:26:02 +04:00
6b70169895 Init changelog & version 3.4.0 2016-02-09 11:25:46 +04:00
788e1ff0c0 cgilsxml.py: ajout de l'option -E. bug avec le tri sur des valeurs inexistantes 2016-02-09 11:25:33 +04:00
f115b98d44 Intégration de la branche release-3.3.0 2016-02-08 09:41:57 +04:00
fc134e3a88 maj ulib 2016-02-08 09:41:53 +04:00
6335c1bbc6 Init changelog & version 3.3.0 2016-02-08 09:41:42 +04:00
da3ef60cc0 cgilsxml.py: ajouter de squery_string permettant d'ajouter un préfixe 2016-02-08 09:34:02 +04:00
bb2571129d cgi: cgierror et cgiredirect arrêtent le script 2016-02-08 08:39:47 +04:00
fda245c772 Intégration de la branche release-3.2.0 2016-02-07 23:05:48 +04:00
5af39d1e24 maj ulib 2016-02-07 23:05:41 +04:00
55474f4cfd Init changelog & version 3.2.0 2016-02-07 23:05:26 +04:00
24f32118a8 cgiparams.py et cgilsxml.py: modifications pour gérer la construction de QUERY_STRING 2016-02-07 23:03:38 +04:00
16b18f2048 Intégration de la branche release-3.1.0 2016-02-04 13:53:03 +04:00
73569bfa98 maj ulib 2016-02-04 13:52:59 +04:00
c15919bee2 Init changelog & version 3.1.0 2016-02-04 13:52:29 +04:00
3190a32228 cgilsxml.py: ajout de la variable script_base, qui permet de faire des urls relatives 2016-02-04 13:52:09 +04:00
f4537af09f ussh: bug dans l'analyse des arguments 2016-02-02 11:36:42 +04:00
9992505504 ussh: pas de valeur par défaut pour DEFAULT_USER; --parse affiche toutes les options 2016-01-27 13:17:24 +04:00
b19059ee62 Intégration de la branche ussh-auto-persist 2016-01-27 11:24:34 +04:00
5c75737a69 ussh: configuration du multiplexage pour certains hôtes 2016-01-27 11:23:13 +04:00
f40a3a240a Intégration de la branche release-3.0.1 2015-12-31 12:36:56 +04:00
5ae4cb68b2 Init changelog & version 3.0.1 2015-12-31 12:36:56 +04:00
56c305af66 awk ne supporte pas \s 2015-12-31 12:36:43 +04:00
1152c2f4eb Intégration de la branche release-3.0.0 2015-12-24 15:39:53 +04:00
cfc782409b maj ulib 2015-12-24 15:39:47 +04:00
93c95c6882 Init changelog & version 3.0.0 2015-12-24 15:39:22 +04:00
4b1c30b14a nouvelles fonctions pour le module cgi. cgilsxml, cgiupload et cgiparams sont rassemblés dans le module cgisupport 2015-12-24 15:31:55 +04:00
4bbc3f6bac Intégration de la branche release-2.26.0 2015-12-24 12:17:33 +04:00
8253055ce6 Init changelog & version 2.26.0 2015-12-24 12:17:33 +04:00
d5a2cce1df cgilsxml.py: rajouter la variable env/query_vars 2015-12-24 12:16:57 +04:00
b7d109bed3 Intégration de la branche release-2.25.0 2015-12-24 11:15:24 +04:00
25669cb4e7 maj ulib 2015-12-24 11:15:20 +04:00
d843897196 Init changelog & version 2.25.0 2015-12-24 11:15:12 +04:00
6c73940ffb cgilsxml.py: désactiver le cache par défaut 2015-12-24 11:14:57 +04:00
881b3b441f Intégration de la branche release-2.24.1 2015-12-24 10:12:15 +04:00
4d85b360e4 Init changelog & version 2.24.1 2015-12-24 10:12:15 +04:00
3aba3e3bfe bug 2015-12-24 10:09:29 +04:00
226131d9d3 Intégration de la branche release-2.24.0 2015-12-24 09:58:41 +04:00
30143af265 maj ulib 2015-12-24 09:58:33 +04:00
a19e638897 Init changelog & version 2.24.0 2015-12-24 09:58:19 +04:00
b288cf2d88 apacheconfig: support des fichiers de confs --> /etc/apache2/cond.d sur debian wheezy- 2015-12-24 09:58:09 +04:00
2e3fe66208 ussh: forcer l'allocation d'un tty avec --cc 2015-12-23 09:12:44 +04:00
58fa40c66e ussh: ajouter le support de uwatch 2015-12-23 09:08:57 +04:00
7bc63c5a1e maj doc uwatch 2015-12-23 08:45:08 +04:00
2d2754bb24 ajout de uwatch pour afficher un compte 2015-12-23 00:46:04 +04:00
4376fffe22 maj doc 2015-12-22 18:34:49 +04:00
bb176d7e33 maj du template pour runsconfig 2015-12-15 21:56:52 +04:00
73f8dd62cb Intégration de la branche release-2.23.1 2015-12-15 11:01:55 +04:00
84f4b4ca2b Init changelog & version 2.23.1 2015-12-15 11:01:55 +04:00
d8d0cc8cfd cgilsxml: sélectionner automatiquement un groupe seul 2015-12-15 11:01:27 +04:00
b45b4e6b6b Intégration de la branche release-2.23.0 2015-12-15 10:06:48 +04:00
69d8817856 maj ulib 2015-12-15 10:06:43 +04:00
8cdb92ef8d Init changelog & version 2.23.0 2015-12-15 10:06:31 +04:00
501a7d2cc4 cgilsxml: script_name et xslt peuvent être spécifié dans les paramètres QUERY_STRING 2015-12-15 10:05:45 +04:00
ebe45998ab Intégration de la branche runs 2015-12-09 22:57:22 +04:00
35eadc17af correction d'un bug avec la recherche d'un fichier de recette 2015-12-09 22:54:06 +04:00
98ba626897 les recettes ont maintenant l'extension .rr par défaut 2015-12-09 22:34:35 +04:00
a2e863e216 chercher aussi les scripts dans le sous-répertoire runs dans les répertoires d'hôte 2015-12-09 22:25:31 +04:00
a5f6893e2b Intégration de la branche release-2.22.0 2015-12-07 19:05:05 +04:00
633b4fa8d7 Init changelog & version 2.22.0 2015-12-07 19:05:05 +04:00
dbc4d9a62f uscrontab: ne pas afficher plusieurs fois un même message quand le verrou est posé. n'afficher le message sur la pause qu'avec un tty 2015-12-07 18:26:52 +04:00
9821d2021d ajouter le lien vers cgilsxml.py 2015-12-07 15:22:44 +04:00
b7c51132ff Intégration de la branche release-2.21.0 2015-12-07 15:12:53 +04:00
a7c8e21cc0 maj ulib 2015-12-07 15:12:48 +04:00
22b8ddbf9e Init changelog & version 2.21.0 2015-12-07 15:12:32 +04:00
d7b468d9fd cgilsxml: ajouter les variables dlname, size, Y, m, d, H, M, S. maj doc 2015-12-07 15:12:02 +04:00
eac94a7f32 cgiupload: possibilité de filtrer sur le nom du fichier ou son type de contenu 2015-12-07 13:10:52 +04:00
fae2111e71 ajout de cgilsxml 2015-12-07 12:26:37 +04:00
26fe7097f6 apacheconfig: -S peut aussi être utilisé avec --localhosts 2015-12-07 11:14:29 +04:00
7c6ad6a08b apacheconfig: nouvelles options pour le développement 2015-12-07 04:43:46 +04:00
c2d5eab6c1 pxs fait aussi git pull avec un dépôt sans annexe 2015-11-19 10:31:04 +04:00
dca7bee1ec pxs fonctionne pour les dépôt normaux comme pci -A 2015-11-19 10:24:40 +04:00
abbb969796 Intégration de la branche release-2.20.0 2015-11-12 15:41:27 +04:00
b9e11f51ca maj ulib 2015-11-12 15:41:19 +04:00
b32a01813a Init changelog & version 2.20.0 2015-11-12 15:41:04 +04:00
16d95d2a73 apache_autoconf(): déploiement des certificats autorité 2015-11-12 15:40:08 +04:00
775a02119e nutools: ajout de cpvcs() pour copier avec la sémantique de cpnovcs() les fichiers de VCS aussi 2015-11-02 16:43:24 +04:00
1ca0ee54b5 runs: ajout des options --force, --copy-links et --with-vcs à ref() 2015-11-02 16:42:55 +04:00
91686fb86f templatectl: il n'est plus nécessaire de spécifier explicitement fichier.template 2015-11-02 14:29:50 +04:00
90b1bf051d Intégration de la branche release-2.19.0 2015-11-02 11:04:09 +04:00
6f9a5e9a92 maj version ulib 2015-11-02 11:04:04 +04:00
d25c354fbb Init changelog & version 2.19.0 2015-11-02 11:03:38 +04:00
37f3bff0d9 apacheconfig: diverses corrections de bugs 2015-11-02 10:59:48 +04:00
5d3861b934 apacheconfig: si host==@@dhost@@, alors hostname=@@dhostname@@ et aliases=@@daliases@@ 2015-11-02 10:14:42 +04:00
27592d4450 apacheconfig: support des hôtes dynamiques ou statiques 2015-10-30 21:46:49 +04:00
93ac7ea005 re-écrire la gestion des templates pour apacheconfig et runsconfig 2015-10-29 12:43:19 +04:00
702c75317d Intégration de la branche release-2.18.0 2015-10-27 12:06:05 +04:00
753ddce2ea maj ulib 2015-10-27 12:05:57 +04:00
33c3fb85f1 Init changelog & version 2.18.0 2015-10-27 12:05:36 +04:00
434403a37d Intégration de la branche uscrontab 2015-10-27 12:05:11 +04:00
2118885e43 uscrontab: possibilité de mettre en pause sans modifier les planifications en cours 2015-10-27 12:05:00 +04:00
0eeee20c7a awkrun: renommer les fonctions quote_* 2015-10-09 14:16:40 +04:00
18691c86b9 upassword: maj doc et support des commentaires pour le mode batch 2015-10-09 11:18:27 +04:00
46d4be9fa5 Intégration de la branche release-2.17.2 2015-09-26 12:25:35 +04:00
35793eeddc Init changelog & version 2.17.2 2015-09-26 12:25:35 +04:00
1837a0c83b pxs: corriger xget, xcopy, xmove pour utiliser directement git annex sync 2015-09-26 12:25:27 +04:00
05545642b9 Intégration de la branche release-2.17.1 2015-09-26 12:21:50 +04:00
ea933d501d Init changelog & version 2.17.1 2015-09-26 12:21:50 +04:00
c8c674477e pxs: support des versions <= 5.20150825 2015-09-26 12:21:44 +04:00
b49be1f95d Intégration de la branche release-2.17.0 2015-09-26 11:51:47 +04:00
adf2d195e2 Init changelog & version 2.17.0 2015-09-26 11:51:47 +04:00
552e4ba981 améliorer pxs pour un dépôt en mode direct 2015-09-26 11:51:23 +04:00
2ce66e6717 maj doc 2015-09-25 08:58:16 +04:00
cfa5837c00 Intégration de la branche release-2.16.0 2015-09-10 11:16:54 +04:00
7ad0a11442 Init changelog & version 2.16.0 2015-09-10 11:16:54 +04:00
42aa7eae02 fonctions e*: changer l'affichage en mode NO_COLOR pour afficher les préfixes complets 2015-09-10 11:06:00 +04:00
8eaea32094 Intégration de la branche release-2.15.0 2015-09-08 10:15:00 +04:00
79731619e4 Init changelog & version 2.15.0 2015-09-08 10:14:59 +04:00
69ee45a97b Intégration de la branche prel-fixes 2015-09-08 10:14:23 +04:00
47b6e5b359 créer VERSION.txt et CHANGES.txt à la racine du projet 2015-09-08 10:14:13 +04:00
9d8a74791e faire le push à la fin des opérations d'update et/ou de merge 2015-09-08 09:47:26 +04:00
fe1d4dee11 Intégration de la branche release-2.14.0 2015-09-03 09:04:47 +04:00
57474f52ea Init changelog & version 2.14.0 2015-09-03 09:04:47 +04:00
9dcd60b244 pxs transfert les données aussi en mode direct 2015-09-03 09:04:26 +04:00
540132c918 Intégration de la branche release-2.13.0 2015-09-01 15:44:56 +04:00
940856aa77 Init changelog & version 2.13.0 2015-09-01 15:44:55 +04:00
8d2e3867f0 uscrontab: permettre d'ignorer le code d'erreur pour une commande planifiée 2015-09-01 15:44:28 +04:00
aa989ef063 Intégration de la branche uinst 2015-08-25 10:11:32 +04:00
58d9f16795 uinst -y pose toujours la question si le répertoire est calculé automatiquement 2015-08-25 10:11:27 +04:00
594fd4ec30 activer l'autocomplétion pour uinst -h 2015-08-25 10:07:11 +04:00
e399cf7680 Intégration de la branche release-2.12.1 2015-08-24 16:12:07 +04:00
492180543d Init changelog & version 2.12.1 2015-08-24 16:12:07 +04:00
e356c2be9a bug avec le calcul du système 2015-08-24 16:11:56 +04:00
e040cac091 Avec les fonctions e*, afficher le statut de façon explicite en mode non coloré 2015-08-24 10:57:12 +04:00
Jephte CLAIN
2a821b8deb Intégration de la branche release-2.12.0 2015-08-23 22:57:19 +04:00
Jephte CLAIN
b0f562a1e3 Init changelog & version 2.12.0 2015-08-23 22:57:19 +04:00
Jephte CLAIN
dcb85ac759 Améliorer le déploiement uinst:rsync avec préfixes pour les hôtes distants 2015-08-23 22:56:23 +04:00
1e2e568bf7 Intégration de la branche release-2.11.0 2015-08-21 10:31:46 +04:00
3c3f0932b3 Init changelog & version 2.11.0 2015-08-21 10:31:46 +04:00
d9282f756a uinst: ajouter l'option -h pour la méthode uinst:rsync 2015-08-21 10:31:13 +04:00
7643573a8e nettoyer la branche 2015-08-20 07:58:17 +04:00
8e7644aedf Intégration de la branche release-2.10.0 2015-08-19 10:23:44 +04:00
e1b5420b3d Init changelog & version 2.10.0 2015-08-19 10:23:43 +04:00
6ba41b953c support de --uses-su pour ruinst -C 2015-08-19 10:23:07 +04:00
6215aa7ddd Intégration de la branche release-2.9.0 2015-08-10 14:05:26 +04:00
ea118d0759 maj ulib 2015-08-10 14:05:15 +04:00
d8f74b9a49 Init changelog & version 2.9.0 2015-08-10 14:04:44 +04:00
Jephte CLAIN
447d13f80c support de nouvelles versions d'OS pour sysinfos 2015-08-08 23:41:01 +04:00
48e111aa0d fconv et fnconv: le premier argument est le fichier s'il n'est pas spécifié avec -f 2015-08-06 14:29:09 +04:00
Jephte CLAIN
c29f4b9144 mkiso: nouvelles options -A et -V 2015-08-06 10:02:50 +04:00
662b82f581 caturl --check ne doit pas afficher l'url 2015-07-22 19:36:31 +04:00
f1e0ca1220 Intégration de la branche release-2.8.0 2015-07-22 15:09:36 +04:00
82a86c0c38 Init changelog & version 2.8.0 2015-07-22 15:09:33 +04:00
0f5b5720c2 uinst installe maintenant les profils en mode partagé par défaut 2015-07-22 15:04:58 +04:00
fb6b492d5c améliorer l'affichage des scripts geturl et openurl 2015-07-22 12:28:52 +04:00
0a6a8b218c Intégration de la branche release-2.7.0 2015-07-17 22:03:31 +04:00
ab8fb927e6 Init changelog & version 2.7.0 2015-07-17 22:03:30 +04:00
7e2a6c3aec update-nutools ignore par défaut l'eventuel proxy défini par http_proxy 2015-07-17 22:01:59 +04:00
13215c364a apacheconfig: améliorer l'affichage de l'aide et support du répertoire .apacheconfig 2015-07-17 16:22:21 +04:00
27f5f7a905 pyulib honore maintenant UTOOLS_NO_COLORS 2015-07-17 11:45:22 +04:00
3ee6cb4d7c diminuer l'indentation pour les fonctions e* 2015-07-17 11:40:12 +04:00
d4ac5f7b10 modifier l'affichage des fonction e* 2015-07-17 08:25:26 +04:00
7685cae1c4 Intégration de la branche release-2.6.0 2015-07-10 17:32:52 +04:00
c94252402d Init changelog & version 2.6.0 2015-07-10 17:32:52 +04:00
efa6b3afae Intégration de la branche ftps 2015-07-10 17:31:13 +04:00
3288999058 authftp: support tls en forçant l'utilisation de lftp 2015-07-08 17:05:09 +04:00
58e7f6fbbc pconf reconnait maintenant les arguments offline et online 2015-07-03 22:22:46 +04:00
9e49995328 Intégration de la branche release-2.5.1 2015-07-03 08:29:46 +04:00
b1b9705de4 Init changelog & version 2.5.1 2015-07-03 08:29:46 +04:00
abc4cb955d dumpclients: possibilité de choisir les champs supplémentaires à afficher 2015-07-03 08:29:22 +04:00
Jephte CLAIN
85c63105ee Intégration de la branche release-2.5.0 2015-07-03 07:39:24 +04:00
Jephte CLAIN
b3dd4440e6 Init changelog & version 2.5.0 2015-07-03 07:39:24 +04:00
Jephte CLAIN
2e15cbed77 Ajouter l'option -z à dumpclients 2015-07-03 07:39:06 +04:00
69a0f14f26 Intégration de la branche release-2.4.0 2015-07-01 04:04:29 +04:00
3ecd9d4a0d Init changelog & version 2.4.0 2015-07-01 04:04:28 +04:00
fda97a8289 mise à jour de upassword 2015-07-01 04:04:04 +04:00
9509c955ce Intégration de la branche release-2.3.0 2015-07-01 03:09:04 +04:00
adef7bacc4 Init changelog & version 2.3.0 2015-07-01 03:09:04 +04:00
f581aa9ec0 Intégration de la branche pdev-merges 2015-07-01 03:08:31 +04:00
80d7a73092 ajouter les options -b et -s à pdev 2015-07-01 03:08:23 +04:00
cb96bddb89 Intégration de la branche release-2.2.0 2015-06-24 16:19:51 +04:00
832810f29f Init changelog & version 2.2.0 2015-06-24 16:19:51 +04:00
98cfdfc801 Intégration de la branche update-upassword 2015-06-24 16:19:34 +04:00
34f027b7b7 bug avec la présence du scheme dans sha 2015-06-24 16:19:30 +04:00
b5e6c13c30 Intégration de la branche update-upassword 2015-06-24 16:05:02 +04:00
e4e2fa7c22 mise à jour upassword pour afficher sha en hexadécimal 2015-06-24 16:04:58 +04:00
62dd37c36b Intégration de la branche release-2.1.1 2015-06-22 11:37:49 +04:00
71aa715657 Init changelog & version 2.1.1 2015-06-22 11:37:49 +04:00
40225b099a Intégration de la branche proxy-default 2015-06-22 11:37:33 +04:00
2fa0791f5f profile.d/proxy lit aussi les valeurs par défaut pour l'hôte 2015-06-22 11:37:25 +04:00
b8d3d70593 Intégration de la branche release-2.1.0 2015-06-22 10:25:29 +04:00
cc0027bb0e Init changelog & version 2.1.0 2015-06-22 10:25:29 +04:00
2a3eb76ab1 Intégration de la branche uenv-modifs 2015-06-22 10:25:03 +04:00
bd8c7f8646 correction d'un bug avec le nom final 2015-06-22 10:23:21 +04:00
d73c929594 correction d'un bug avec le choix du répertoire de destination 2015-06-22 10:09:08 +04:00
e9089d86d6 les répertoires de profil partagé et de machine sont traités comme un seul répertoire 2015-06-22 09:53:54 +04:00
e3f76cdcbc possibilité de spécifier si un profil doit être installé dans le répertoire de profil partagé 2015-06-22 01:25:27 +04:00
827ef30651 Intégration de la branche release-2.0.0 2015-06-22 00:48:49 +04:00
825 changed files with 85455 additions and 35265 deletions

6
.udir
View File

@ -16,9 +16,11 @@ rm_utools=
kvm_service= kvm_service=
# Faut-il installer le service openvz-fix-etchosts? # Faut-il installer le service openvz-fix-etchosts?
openvz_service= openvz_service=
# Faut-il installer le service kill-ssh-user-sessions?
ksus_service=
configure_variables=(dest uninst_utools rm_utools kvm_service openvz_service) configure_variables=(dest uninst_utools rm_utools kvm_service openvz_service ksus_service)
configure_dest_for=(bashrc profile lib/uinst/conf lib/uinst/rootconf lib/profile.d/nutools lib/bashrc.d/bash_completion lib/init.d/kvm-stop-all legacy/sysinc/utools legacy/sysinc/system_caps legacy/sysinc/private/init) configure_dest_for=(bashrc profile lib/uinst/conf lib/uinst/rootconf lib/profile.d/nutools.shared lib/bashrc.d/bash_completion.shared lib/init.d/kvm-stop-all legacy/sysinc/utools legacy/sysinc/system_caps legacy/sysinc/private/init)
config_scripts=(lib/uinst/conf lib/uinst/system_caps.legacy) config_scripts=(lib/uinst/conf lib/uinst/system_caps.legacy)
install_profiles=true install_profiles=true
profiledir=lib/profile.d profiledir=lib/profile.d

1445
CHANGES.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,231 +0,0 @@
## Version 2.0.0 du 22/06/2015-00:48
8286b29 Intégration de la branche uenv-modifs
c43cda0 les répertoires de profil sont spécifiques au nom de la machine
## Version 1.19.0 du 21/06/2015-10:27
387dec2 Intégration de la branche add-pxwa
4d0b734 ajout de la commande xwebapp
## Version 1.18.0 du 09/06/2015-10:40
01e2929 Intégration de la branche fix-javaproperties
b24e9ff norm_properties() affiche les caractères en majuscule, comme JavaProperties#store()
## Version 1.17.0 du 07/06/2015-14:00
e2d0c0c Intégration de la branche pdev-fix
1cc3bd4 ajouter l'option --sync à pdev
## Version 1.16.0 du 04/06/2015-22:14
4a15085 Intégration de la branche verbose-update
8a27561 pu: afficher un message s'il y a des modifications locales
## Version 1.15.0 du 22/05/2015-17:03
e715087 Intégration de la branche update-upassword
a74a373 upassword: possibilité de spécifier de façon dynamique la ligne à afficher après
## Version 1.14.0 du 22/05/2015-16:41
d8f20c3 Intégration de la branche update-upassword
dea524a ajout du mode batch
## Version 1.13.0 du 22/05/2015-16:04
275bff8 Intégration de la branche update-upassword
1ce1d98 mise à jour de upassword
## Version 1.12.0 du 22/05/2015-13:37
57fc84d correction d'un bug avec prel -s
cf108d7 Intégration de la branche prel-show-modifs
a744f48 prel -s afficher la liste des modifications qui seraient enregistrées
## Version 1.11.0 du 22/05/2015-11:41
2984052 Intégration de la branche quiet-completion
755cfa7 ne pas afficher les erreurs pour les fonctions de complétion de git
2b5eb2a Intégration de la branche pu
b004730 uproject update fait fetch puis merge, manuellement
## Version 1.10.0 du 20/05/2015-12:08
bf1d86a Intégration de la branche pu-auto-forward
8bf8164 fast-forwarder automatiquement les branches locales par rapport aux branches distantes
8baabea Intégration de la branche ptools-maj-topic
5ff5b7d déterminer les branches de topic: ignorer les branches avec un slash dans le nom
## Version 1.9.0 du 19/05/2015-18:25
5933089 Intégration de la branche awkfsv
caeb06e possibilité de spécifier les types des champs pour mysqlloadcsv
b2c9f81 uawk requière maintenant de spécifier le nom de l'outil
## Version 1.8.1 du 19/05/2015-10:45
de8d690 Intégration de la branche annex-support
2044181 ne pas synchroniser l'annexe en mode automatique
## Version 1.8.0 du 19/05/2015-10:27
4779695 Intégration de la branche annex-support
89ad130 support de git-annex pour pp et pdev
## Version 1.7.0 du 15/05/2015-16:11
16ad285 Intégration de la branche nutools
93d8262 rajouter le script nutools pour vérifier la version installée de nutools. renommer la fonction nutools() en pconf()
## Version 1.6.0 du 04/05/2015-12:40
0463b2c Intégration de la branche norm_props
48ca720 ajout de l'en-tête
## Version 1.5.1 du 29/04/2015-10:14
4c92f54 Intégration de la branche push-all
02c15f9 pp -a pousse toutes les branches et tous les tags. ajouter les options -b et -t pour pousser respectivement toutes les branches et tous les tags
## Version 1.4.1 du 29/04/2015-10:12
Release erronée, à ignorer
## Version 1.4.0 du 27/04/2015-18:12
7122fc4 Intégration de la branche norm-properties
845c54e ajout de la fonction norm_properties
## Version 1.3.0 du 24/04/2015-12:32
bdc6e9b Intégration de la branche localhost
94b2b48 reconnaitre la valeur spéciale localhost pour check_hostname()
## Version 1.2.4 du 20/04/2015-17:55
988e045 bug
## Version 1.2.3 du 20/04/2015-17:43
Correction d'un bug avec la copie des fichiers
d3ab6b8 bug
7e0d44b cosmetic
## Version 1.2.2 du 20/04/2015-01:16
## Version 1.2.1 du 20/04/2015-01:15
145acfa bug
## Version 1.2.0 du 16/04/2015-13:59
d756a6c Intégration de la branche ldapt
57dac04 support de xempty explicite, et de la possibilité de désactiver ce traitement
75f21b5 support des attributs ordonnés
00088b3 cosmetic
## Version 1.1.1 du 16/04/2015-12:10
Mise à jour de .ulibver
## Version 1.1.0 du 16/04/2015-12:09
4b445a2 Intégration de la branche ldapt-ev
f8bd000 support de la nouvelle fonction ensureval
dbd9605 Intégration de la branche ptools
1fb27d6 pousser le tag quand il a été créé
## Version 1.0.0 du 14/04/2015-10:05
commencer à suivre les versions de nutools: cette release est la première de
la série
66bbf23 Intégration de la branche update-ulibver
f5aeff7 maj de ulib
073e7b0 Intégration de la branche ptools
8f6a32b forcer la création de la destination. afficher un message informatif
48d9104 Intégration de la branche ptools
6890d30 workaround pour le bug sous debian squeeze
91de409 Intégration de la branche ptools
cd50646 ne pas mettre à jour le fichier local
f321f1c Intégration de la branche ptools
6258a6b utiliser la version au lieu de la release
5589314 bug
10a7d4e Intégration de la branche ptools
cd92832 ne pas supprimer la branche develop
3f1dc3e Intégration de la branche ptools
ce050db ajout d'un changelog possibilité d'éditer le changelog avec -e supprimer les options courtes -z et -Z
2bc314c ajout de --merge-log supprimer les options courtes -z et -Z
fc35a05 inclure la liste des modifications dans le log
4578219 Intégration de la branche ptools
5b0715e vérifier la présence dans le dépôt distant
0e6e94c Intégration de la feature branch ptools
10152b4 calcul de newver action delete
6c8e750 implémener -z et -Z
2f41de3 cosmetic
5f6d5bb ajout des options courtes -z et -Z
18bb510 supprimer l'option courte -d qui est déjà utilisée pour diff
dd2a712 ajout de -d et --force-delete
38f04ff maj doc
523d3f1 doc pour nouvelle fonctionnalité à implémenter
13dfb9a Intégration de la feature branch prel-tag
da96f72 ajout d'un tag après fusion de la branche dans master
2a71a51 Intégration de la feature branch prel-tag
09c59d8 ne pas afficher les erreurs
3e514d5 maj doc
f9d4556 Intégration de la feature branch linedots
7ae9b48 ajout de elinedots
ffa9195 fast-forwarder si possible
f64117c cosmetic
d8a3ed4 checkout par défaut
89be42e ne pas utiliser csort
881bcde tenir compte de la valeur de origin
7c67a7f tenir compte des branches potentielles
b757ca1 Intégration de la feature branch git-opts
c3683a5 bug
743e17b fast-forwarder automatiquement la branche vers laquelle on bascule
e3e3bbb ajout de git_fast_forward
1661ee5 ajout des fonctions git_is_ancestor(), git_should_ff(), git_should_push(), git_is_merged()
2e215cc utiliser l'api
b975724 maj doc
262d12e toujours charger le module
8ae0a8d utiliser nouvelle API --add-metadata
259e1be ajout de --add-metadata support de --allow-empty pour --update
8d3ab79 ajout de semver_addmetadata utiliser API moderne pour les perfs
ac940b8 ne garder que les infos sur la branche courante dans les metadata
1e11a57 ajouter pz pour faire une archive d'un projet
9389fb0 autoriser --allow-emptyp pour l'action --show
f90ad4d bug
26aa98f cosmetic
8deda74 cosmetic
f8c4a54 calcul de la version avec --prel
22a26d9 support des numéros style maven
4f0a746 support des fichiers pom.xml
6d85330 Intégration de la feature branch ptools
f60787a prel est maintenant en topevel
7647d2d prel est prêt à passer en toplevel
7c36761 possibilité de faire -u et -m dans la même commande
de618ae possibilité de ne pas supprimer une feature branch après son intégration
57bf621 cosmetic
8d4d35d mettre à jour la version avec pver
f98c977 support de -v en mode auto
4b64305 finaliser l'option -u
5862e75 ne pas charger le fichier s'il n'existe pas
e5b8b81 début d'implémentation de update
9235ce1 nettoyage
ffaed8a quelques corrections
9182dcf maj api chargement depuis ~/etc/completion.d
bbbc35a maj api chargement depuis ~/etc/completion.d
d2133c7 intégrer les modifications faites à l'ur
90772f0 Intégration de la feature branch completion
163df88 bug
e8d683b bug
041a830 suite du support de bash_completion
9c17a60 framework pour la complétion automatique
bbbe6c4 l'option -c ne fait que le basculement ou la création. Le choix de la version se fera avec -u
c5ba03b ajouter les completions pour prel
2b2b7f5 début d'implémentation de prel -c
3f925ca déplacer le code de pver dans ptools

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS service urequire service
function display_help() { function display_help() {
uecho "$scriptname: s'assurer que les services sont lancés pour un type de virtualisation uecho "$scriptname: s'assurer que les services sont lancés pour un type de virtualisation
@ -17,7 +17,7 @@ function ensure_kvm() {
# sont chargés, et que le service libvirt-bin est démarré # sont chargés, et que le service libvirt-bin est démarré
local module modified local module modified
if [ -z "$check_only" ]; then if [ -z "$check_only" -a -n "$exclusive" ]; then
# Vérifier que les modules vbox* sont déchargés # Vérifier que les modules vbox* sont déchargés
for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do
if lsmod | quietgrep "$module"; then if lsmod | quietgrep "$module"; then
@ -54,19 +54,24 @@ function ensure_kvm() {
[ -n "$modified" ] && sleep 1 [ -n "$modified" ] && sleep 1
service= service=
if check_sysinfos -d redhatlike; then function __guess_service() {
for i in libvirtd libvirtd-bin; do for i in libvirtd libvirtd-bin; do
[ -f "/etc/init.d/$i" ] && { [ -f "/etc/init.d/$i" ] && {
service="$i" service="$i"
break break
} }
done done
}
if check_sysinfos -d redhatlike; then
__guess_service
elif check_sysinfos -d debian -v jessie+; then
__guess_service
elif check_sysinfos -d debianlike; then elif check_sysinfos -d debianlike; then
service=libvirt-bin service=libvirt-bin
fi fi
if [ -n "$service" ]; then if [ -n "$service" ]; then
# s'assurer que le service tourne # s'assurer que le service tourne
service libvirt-bin startm service "$service" startm
else else
return 0 return 0
fi fi
@ -77,7 +82,7 @@ function ensure_virtualbox() {
# sont chargés, et que le service vboxdrv est démarré # sont chargés, et que le service vboxdrv est démarré
local module modified local module modified
if [ -z "$check_only" ]; then if [ -z "$check_only" -a -n "$exclusive" ]; then
# Vérifier que kvm{,_intel,_amd} ne sont pas chargés # Vérifier que kvm{,_intel,_amd} ne sont pas chargés
for module in kvm_intel kvm_amd kvm; do for module in kvm_intel kvm_amd kvm; do
if lsmod | quietgrep "$module"; then if lsmod | quietgrep "$module"; then
@ -112,9 +117,12 @@ function ensure_virtualbox() {
} }
check_only= check_only=
exclusive=
parse_opts + "${PRETTYOPTS[@]}" \ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-c,--check-only,--check check_only=1 \ -c,--check-only,--check check_only=1 \
-x,--exclusive exclusive=1 \
-s,--shared exclusive= \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
run_as_root "$@" run_as_root "$@"

61
README.md Normal file
View File

@ -0,0 +1,61 @@
# nutools
nutools est un ensemble d'utilitaires pour faciliter l'utililisation des Unixes,
en particulier Linux, mais aussi MacOS X et Cygwin.
C'est aussi une librairie de scripts shell réutilisables ([ulib](doc/ulib.md))
et une librairie de modules python réutilisables (pyulib)
## Installation
~~~sh
git clone https://git.univ-reunion.fr/modules/nutools
git checkout develop
cd nutools
./uinst -y
~~~
Dans l'exemple ci-dessous, on installe la branche develop, pour avoir toujours
la dernière version des outils.
Pour mettre à jour, il suffit de mettre à jour le dépôt et de relancer
l'installation
~~~sh
cd nutools
git pull
./uinst -y
~~~
Alternative, il est possible de demander à nutools à se mettre à jour avec la
dernière version
~~~sh
update-nutools --develop
~~~
## Prérequis
Python >= 2.3 et GNU Awk sont requis pour que toutes les fonctionnalités soient
supportées.
* Sous Linux, lors de l'installation du package, les meilleurs efforts sont fait
pour que ces packages soient installés.
* Sous MacOSX, il faut installer manuellement Fink, DarwinPorts ou Homebrew
## Outils
Chaque outil contient une aide intégrée. Il suffit de lancer l'outil avec
l'argument `--help` pour avoir une aide détaillée.
* Déploiement d'un répertoire ou d'une archive
* [uinst](doc/tools/uinst): Déploiement local
* [mkusfx](doc/tools/mkusfx): Faire une archive auto-installable avec uinst
* [ruinst](doc/tools/ruinst): Déploiement distant avec uinst
* [runs](doc/tools/runs): Lancer un script avec le protocole RUNS
* [rruns](doc/tools/rruns): Déploiement distant avec runs
* Librairie réutilisable de scripts shell
* [uinc](doc/tools/uinc): Dépliage des inclusions dans un fichier
* [ulibsync](doc/tools/ulibsync): Faire une copie locale pour un projet de ulib et/ou pyulib
* Autres outils
* [udir](doc/tools/udir): Gestion des paramètres d'un répertoire. Ces paramètres sont entre
autres utilisés par uinst et uinc.
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

4
SKvm
View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS virsh urequire virsh
function display_help() { function display_help() {
uecho "$scriptname: lancer une machine virtuelle kvm uecho "$scriptname: lancer une machine virtuelle kvm

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS
function display_help() { function display_help() {
uecho "$scriptname: lancer une machine virtuelle VirtualBox uecho "$scriptname: lancer une machine virtuelle VirtualBox
@ -10,19 +9,38 @@ USAGE
$scriptname [options] vmName $scriptname [options] vmName
OPTIONS OPTIONS
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés -n, --nop
-l Lister les machines virtuelles Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
-s Démarrer la machine virtuelle (par défaut) -l, --list
Lister les machines virtuelles
-s, --start
Démarrer la machine virtuelle. C'est l'action par défaut.
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché affiché
-b Démarrer la VM sans interface graphique. Cette option n'est valide -x, --gui
qu'avec -s -b, --headless
-k Arrêter la machine virtuelle (par ACPI) --separate
-p Mettre en veille la machine virtuelle (par ACPI) Ces options ne sont valides qu'avec -s et permettent de spécifier le
-H Arrêter sauvagement la machine virtuelle type de démarrage: 'gui' permet d'afficher une fenêtre complète dans
-R Redémarrer sauvagement la machine virtuelle laquelle l'accélération graphique est supportée, headless démarre la
-S Enregistrer l'état de la machine virtuelle machine en tâche de fond, et separate affiche une fenêtre qui attaque la
-g Afficher le gestionnaire de machines virtuelle" machine démarrée en tâche de fond. --separate est l'option par défaut.
-k, -t, --stop
Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r
permettent de spécifier le type d'arrêt de la machine virtuelle
-p, --sleep
Mettre en veille la machine virtuelle (par ACPI)
-H, --poweroff
Arrêter sauvagement la machine virtuelle
-R, --reset
Redémarrer sauvagement la machine virtuelle
-S, --savestate
Enregistrer l'état de la machine virtuelle
-r, --rrestart
Arrêter la machine, restaurer l'état du dernier snapshot puis la
relancer.
-g, --gui
Afficher le gestionnaire de machines virtuelle"
} }
function build_arrays() { function build_arrays() {
@ -62,20 +80,24 @@ function start_virtualbox() {
} }
action=start action=start
type=separate
stopaction=acpipowerbutton stopaction=acpipowerbutton
headless= restore=
parse_opts + "${PRETTYOPTS[@]}" \ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-n action=nop \ -n,--nop action=nop \
-l,--list action=list \ -l,--list action=list \
-s,--start action=start \ -s,--start action=start \
-b,--background,--headless headless=1 \ -x,--gui type=gui \
-b,--background,--headless type=headless \
--separate type=separate \
-k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \ -k,-t,--stop '$action=stop; stopaction=acpipowerbutton' \
-p,--sleep '$action=stop; stopaction=acpisleepbutton' \ -p,--sleep '$action=stop; stopaction=acpisleepbutton' \
-H '$action=stop; stopaction=poweroff' \ -H,--poweroff '$action=stop; stopaction=poweroff' \
-R '$action=stop; stopaction=reset' \ -R,--reset '$action=stop; stopaction=reset' \
-S '$action=stop; stopaction=savestate' \ -S,--savestate '$action=stop; stopaction=savestate' \
-g action=gui \ -r,--rrestart '$action=stop; restore=1' \
-g,--gui action=gui \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
"$scriptdir/EnsureVM" virtualbox || die "$scriptdir/EnsureVM" virtualbox || die
@ -110,8 +132,8 @@ $(array_join rvms "
fi fi
if [ -n "$vm" ]; then if [ -n "$vm" ]; then
estep "Démarrage de $vm${headless:+ en tâche de fond}" estep "Démarrage de $vm de type $type"
VBoxManage -q startvm ${headless:+--type headless} "$vm" "$@" VBoxManage -q startvm --type "$type" "$vm" "$@"
else else
ewarn "Aucune VM à démarrer n'a été trouvée" ewarn "Aucune VM à démarrer n'a été trouvée"
fi fi
@ -120,10 +142,23 @@ elif [ "$action" == stop ]; then
if [ -z "$vm" -a "${rvms[*]}" ]; then if [ -z "$vm" -a "${rvms[*]}" ]; then
select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction" select_vm rvms vm "Choisissez la VM à arrêter avec la méthode $stopaction"
fi fi
[ -n "$vm" ] || die
if [ -n "$vm" ]; then
estep "Arrêt de $vm avec la méthode $stopaction" estep "Arrêt de $vm avec la méthode $stopaction"
VBoxManage -q controlvm "$vm" "$stopaction" VBoxManage -q controlvm "$vm" "$stopaction" || die
if [ -n "$restore" ]; then
ebegin "Attente de l'arrêt"
while true; do
build_arrays
array_contains svms "$vm" && break
edot 0
sleep 1
done
eend
estep "Restauration du snapshot"
VBoxManage -q snapshot "$vm" restorecurrent || die
estep "Démarrage"
VBoxManage -q startvm --type "$type" "$vm"
fi fi
elif [ "$action" == gui ]; then elif [ "$action" == gui ]; then

86
Sscreen Executable file
View File

@ -0,0 +1,86 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# désactiver le verrouillage
export LOCKPRG=/bin/true
COULEUR_NORMALE=$'\e[0m'
COULEUR_ROUGE=$'\e[31;1m'
COULEUR_VERTE=$'\e[32;1m'
COULEUR_JAUNE=$'\e[33;1m'
COULEUR_BLEUE=$'\e[34;1m'
COULEUR_BLANCHE=$'\e[37;1m'
function __ask() {
local r
read -p "$1" -t 2 r
[ $? -gt 128 -o -z "$r" -o "$r" == "o" -o "$r" == "O" -o "$r" == "y" -o "$r" == "Y" ]
}
function __auto_screen() {
# Si on est déjà dans screen, ne rien faire
[ -z "$STY" ] || return
# Si screen pas installé, ne rien faire
local dir screen="$(which screen 2>/dev/null)"
if [ -z "$screen" ]; then
for dir in /usr/local/bin /opt/bin /usr/bin /bin; do
if [ -x "$dir/screen" ]; then
screen="$dir/screen"
PATH="$PATH:$dir"
break
fi
done
fi
if [ -z "$screen" ]; then
echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée"
exec /bin/bash -l
fi
# corriger TERM pour les vieilles versions de Linux
case "$TERM" in
xterm*) TERM=xterm;;
screen*) TERM=screen;;
esac
export TERM
local msgprefix
local screens count
local session_name="nutools-$USER"
screens="$(LANG=C screen -ls | grep -Ei "${session_name}.*attached|detached")"
if [ -n "$screens" ]; then
count="$(echo "$screens" | wc -l)"
else
count=0
fi
if [ $count -gt 0 ]; then
if [ $count -eq 1 ]; then
msgprefix="Il y a ${COULEUR_BLEUE}1 session screen en cours${COULEUR_NORMALE}
Cette session"
else
msgprefix="Il y a ${COULEUR_ROUGE}$count sessions screen en cours${COULEUR_NORMALE}:
$screens
La première session"
fi
if __ask "
$msgprefix sera reconnectée automatiquent dans 2 secondes
Voulez-vous reconnecter la session screen? [On] "; then
exec screen -q -s -/bin/bash -xRR -S "$session_name"
else
exec /bin/bash -l
fi
elif __ask "
Une ${COULEUR_VERTE}nouvelle session screen${COULEUR_NORMALE} sera lancée automatiquement dans 2 secondes
Voulez-vous lancer une session screen? [On] "; then
exec screen -q -s -/bin/bash -RR -S "$session_name"
else
exec /bin/bash -l
fi
}
if [ $# -gt 0 ]; then
# lancer les commandes fournies avant de lancer SCREEN
"$@"
fi
__auto_screen

25
TODO.md Normal file
View File

@ -0,0 +1,25 @@
# TODO
dkbuild
* setversion peut prendre la version depuis la branche git d'un dépôt
* un argument permettrait de spécifier comment la version est calculée à
partir du dépôt
* si cela a du sens, une commande setlatest qui permet de désigner quelle
distribution/version est la dernière
git push
* ajouter le support pour le mode DEBUG
~~~
export GIT_TRACE=1
export GIT_TRANSFER_TRACE=1
export GIT_CURL_VERBOSE=1
~~~
* ajouter le support http basique pour git lfs en cas de problème pour upload de certains fichiers
~~~
git config --add lfs.basictransfersonly true
~~~
ou le mettre dans un fichier .lfsconfig
cf https://github.com/git-lfs/git-lfs/blob/main/docs/man/git-lfs-config.adoc
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1 +1 @@
2.0.0 11.4.0

2
_root
View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/ulib" || exit 1
urequire base urequire base
function display_help() { function display_help() {

View File

@ -1,354 +1,414 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS template apache.tools urequire template apache.tools
apacheconfig_initvars
function display_help() { function display_help() {
uecho "$scriptname: Gérer une configuration apache pour déploiement uecho "$scriptname: Gérer la configuration d'un serveur web apache
USAGE USAGE
$scriptname [options] $scriptname -c
$scriptname -t -- args...
OPTIONS OPTIONS
Les options suivantes servent à mettre à jour la configuration apache dans un -c, --create
répertoire de référence appelé répertoire local, avant son déploiement. Créer un nouveau répertoire de configuration pour un hôte
-d, --destdir DESTDIR -d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
Spécifier le répertoire local dans lequel copier la configuration Nom du répertoire local de configuration.
apache. -f,--full
-l, --list --partial
Lister les templates disponibles. Indiquer respectivement que la configuration est complète ou partielle.
-m, --merge Avec la configuration complète, le serveur peut être complètement
Copier les templates spécifiés dans le répertoire local s'il n'y configuré avec tous les fichiers présents. Avec la configuration
existent pas déjà. Les templates ayant l'extension '.template' doivent partielle, uniquement les informations spécifiques à un service en
être demandés explicitement. Sinon, ils sont ignorés. particulier sont disponibles.
-z, --unmerge Cette option est utilisée avec --create. Par défaut, la configuration
Supprimer les fichiers du répertoire local s'ils n'ont pas été modifiés est partielle.
par rapport aux templates. Pour le moment, la seule différence est que --full crée un fichier de
-C, --clean configuration nommé .apacheconfig alors que --partial crée un fichier
Supprimer les répertoires vides dans le répertoire local. Peut être nommé apacheconfig.conf qui est visible et donc découvrable et éditable
utile après -z plus facilement
-g, --diff
Afficher les différences entre les templates et les fichiers du
répertoire local.
--list-vars
Afficher pour information les valeurs par défaut des variables de
template.
--write-vars
Ecrire dans le fichier .apacheconfig les valeurs par défaut des
variables, ce qui permet après édition du fichier d'éviter de les
spécifier à chaque fois avec l'option -v
Le fichier n'est pas écrasé s'il existe déjà.
-v, --var NAME=VALUE
Spécifier la valeur d'une variable. Il est possible de spécifier des
valeurs qui ne sont pas dans la liste prédéfinie. Par défaut, il s'agit
d'une variable de template, utilisée pour mettre à jour la copie locale
d'un template avec l'option --merge
Dans le fichier .apacheconfig, les valeurs des variables de template
n'est pas censée changer. Lors de la copie des templates avec --merge,
chaque occurence de @@VAR@@ dans un template est remplacée dans la copie
locale par la valeur de la variable de template VAR
Les variables dynamiques sont remplacées lors du déploiement du fichier
avec l'option --update
Le répertoire local peut contenir les fichiers et répertoires suivants, qui sont -t, --template [OPT]
tous optionnels: Gérer les fichiers du répertoire local avec templatectl. La valeur de
cette option est utilisée comme argument court pour l'invocation de
templatectl, e.g
$scriptname -tm args
est équivalent à
templatectl -m args
Les arguments qui restent sont passés tels quels à templatectl
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
directement
--help-template
Afficher l'aide concernent la gestion des templates.
Equivalent à -t -- --help
-h, --host HOST
Spécifier l'hôte. Equivalent à -v host=HOST
--sysname SYSNAME
--sysdist SYSDIST
-s, --sysver SYSVER
Spécifier la distribution pour laquelle synchroniser le template. Par
défaut, choisir les valeurs correspondantes au système courant.
Les options -7 et -8 sont des aliases respectivement pour -s wheezy et
-s jessie, parce que les fichiers par défaut ont changé à partir de
debian jessie.
- modules.conf la liste des modules qu'il faut activer. Si un module n'existe
pas dans ce fichier, ou si ce fichier n'existe pas, aucune modification n'est
effectuée. Si un module est de la forme -module, il est désactivé. Si un
module est de la forme +module, il est activé. Cette syntaxe permet de
supporter les modules dont le nom commencerait par '-'
- sites.conf la liste des sites qu'il faut activer. Si un site ne figure pas
dans ce fichier, il est désactivé. Si ce fichier n'existe pas, tous les sites
existant sont activés.
- tous les autres fichiers sont copiés tels quels dans /etc/apache2. Notamment,
apache2.conf est le fichier de configuration principal d'apache et ports.conf
le fichier de configuration des ports d'écoute.
- modules/ le répertoire des configurations de modules à installer. Les fichiers
de ce répertoire sont de la forme MODULE.conf et sont installés dans le
répertoire /etc/apache2/mods-available. Il faut mentioner le module dans le
fichier modules.conf pour l'activer.
- sites/ le répertoire des sites à installer. Les fichiers de ce répertoire sont
de la forme NAME.conf pour les sites écoutant en clair, et NAME.ssl.conf pour
les sites écoutant en https. Pour chaque site NAME.ssl.conf, un fichier
NAME-certs.conf doit exister dans certsconf/
Dans les fichiers NAME.ssl.conf, les valeurs @@cert@@, @@key@@ et @@ca@@ sont
respectivement remplacées par l'emplacement des fichiers de certificats
définis dans les fichiers correspondants NAME-certs.conf
- cgi-bin/ le répertoire des scripts cgi à installer
- www/ le répertoire qui contient les fichiers du serveur web à installer dans
l'emplacement par défaut.
- certsconf/ le répertoire qui contient la configuration pour les certificats à
installer. Si ce répertoire existe, il faut spécifier CERTSDIR
Les fichiers de ce répertoire sont de la forme NAME-certs.conf et chacun d'eux
correspondant en principe à un fichier NAME.ssl.conf dans sites/
- RewriteRules/ le répertoire qui contient la configuration de réécriture. Tous
les fichiers RewriteRules*.conf de ce répertoire sont copiés dans /etc/apache2
Les options suivantes permettent de déployer les fichiers du répertoire local.
IMPORTANT: les fonctions de déploiement ne sont pour le moment supportées que
sur debian
-u, --update, --deploy -u, --update, --deploy
Mettre à jour la configuration système à partir du répertoire local. Mettre à jour la configuration système à partir du répertoire local.
Lors du déploiement de la configuration, les valeurs de variables Lors du déploiement de la configuration, les valeurs des variables
dynamiques sont remplacées dans les fichiers destination. dynamiques sont remplacées dans les fichiers destination.
Les arguments qui restent sont passés tels quels à apache_autoconf
-p, --pull
Faire 'git pull' avant --update
-F, --fix-ip
Corriger les lignes de la forme '<VirtualHost *:PORT>#*ip:IP' et les
remplacer par '<VirtualHost IP:PORT>'
Cela permet de déployer une version de production des fichiers de
configuration.
-N, --network-config
Mettre aussi à jour la configuration réseau.
--no-post-update
Ne pas lancer le script post-update.sh après le déploiement s'il existe.
Le script est lancé avec les mêmes arguments que apacheconfig_deploy()
la fonction définie dans le module apache.tools
-r, --certsdir CERTSDIR -r, --certsdir CERTSDIR
Spécifier le cas échéant le répertoire contenant les certificats à Spécifier le cas échéant le répertoire contenant les certificats à
déployer. déployer. Cet argument est requis si le répertoire certsconf/ existe,
sauf si les certificats sont déjà déployés.
OPTIONS AVANCEES --localhosts
--confdir CONFDIR Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
Spécifier l'emplacement des fichiers de configuration apache ainsi que .local mentionnés dans les fichiers de site. Cette option est utile pour
les fichiers 'modules.conf' et 'sites.conf'. Par défaut, prendre le le développement et les tests.
répertoire local. -C, --one-conf CONF
--modulesdir MODULESDIR Ne déployer que le fichier de configuration spécifié. Cette option est
Spécifier l'emplacement des fichiers de configuration des modules. Par utilisée avec --deploy et est utile pour le développement et les tests.
défaut, utiliser DESTDIR/modules si ce répertoire existe. -M, --one-module MODULE
--sitesdir SITESDIR Ne déployer que le fichier de module spécifié. Cette option est utilisée
Spécifier l'emplacement des fichiers de configuration des sites. Par avec --deploy et est utile pour le développement et les tests.
défaut, utiliser DESTDIR/sites si ce répertoire existe. -S, --one-site SITE
--cgibindir CGIBINDIR Ne déployer que le fichier de site spécifié. Cette option est utilisée
Spécifier l'emplacement des scripts cgi à installer. Par défaut, avec --deploy ou --localhosts et est utile pour le développement et les
utiliser DESTDIR/cgi-bin si ce répertoire existe. tests.
--wwwdir WWWDIR
Spécifier l'emplacement des fichiers du serveur web. Par défaut, -k, --new-site HOST.TLD
utiliser DESTDIR/www si ce répertoire existe. Créer une définition pour un nouveau site à partir des fichiers du
--certsconfdir CERTSCONFDIR répertoires templates/
Spécifier l'emplacement des fichiers de configuration des certificats. -K, --new-site-templatedir TEMPLATEDIR
Par défaut, utiliser DESTDIR/certsconf si ce répertoire existe. Il faut Spécifier le répertoire source pour les templates de site utilisés par
alors spécifier aussi CERTSDIR, l'emplacement des certificats à l'option --new-site. Par défaut, utiliser le répertoire templates/ situé
installer. dans le répertoire de configuration.
--rrdir RRDIR Si TEMPLATEDIR est un nom simple sans séparateur de chemin '/' et qu'un
Spécifier l'emplacement des fichiers de réécriture. Par défaut, répertoire templates/TEMPLATEDIR existe, alors prendre ce répertoire-là
utiliser DESTDIR/RewriteRules si ce répertoire existe. comme source.
--no-restart --new-site-force
Ne pas redémarrer apache en cas de modification de la configuration" Avec --new-site, utiliser le nom d'hôte fourni même s'il n'est pas
pleinement qualifié"
} }
function __templatectl_display_help() { display_help; }
# Valeurs par défaut des variables de template action=
DEFAULT_TEMPLATE_VARS=( destdir=
hostname= aliases= # mettre ces variables AVANT host nohideconfig=auto
host= templateopt=
admin=supervision-gdrsi@listes.univ-reunion.fr FULLCONF=
certsdir=renater pull=
caname=terena.crt fixip=
certname= netconf=
keyname= no_post_update=
#configdir= # défini ci-dessous aac_certsdir=
bits=
oneconf=
onemodule=
onesite=
site_host=
site_templdir=
site_force=
args=(
--help '$exit_with display_help'
-c,--create action=create
-d:,--destdir: destdir=
--no-hideconfig nohideconfig=1
--hideconfig nohideconfig=
-f,--full FULLCONF=1
--partial FULLCONF=
-t::,--template:: '$set@ templateopt; action=template'
--help-template '$templateopt=-help; action=template'
-l,--list '$templateopt=l; action=template'
-v:,--var: TEMPLATECTL_VARS
-m,--merge '$templateopt=m; action=template'
-L,--list-vars '$templateopt=L; action=template'
-h:,--host: '$array_add TEMPLATECTL_VARS host="$value_"'
--sysname: '$array_add TEMPLATECTL_VARS sysname="$value_"'
--sysdist: '$array_add TEMPLATECTL_VARS sysdist="$value_"'
-s:,--sysver: '$array_add TEMPLATECTL_VARS sysver="$value_"'
-6,--squeeze '$array_add TEMPLATECTL_VARS sysver=squeeze'
-7,--wheezy '$array_add TEMPLATECTL_VARS sysver=wheezy'
-8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie'
--bits: bits=
-u,--update,--deploy action=deploy
-p,--pull pull=1
-F,--fix-ip fixip=1
-N,--network-config netconf=1
--no-post-update no_post_update=1
-r:,--certsdir: aac_certsdir=
--localhosts action=localhosts
-C:,--one-conf: oneconf=
-M:,--one-module: onemodule=
-S:,--one-site: onesite=
-k:,--new-site: '$action=new-site; set@ site_host'
-K:,--new-site-templatedir: site_templdir=
--new-site-force site_force=
) )
parse_args "$@"; set -- "${args[@]}"
function parent_apacheconfig() { if [ "$nohideconfig" == auto ]; then
# chercher à partir du répertoire courant si un des répertoires parents [ -n "$FULLCONF" ] && nohideconfig= || nohideconfig=1
# s'appelle apacheconfig fi
local dir="$(pwd)" dirname
while true; do if [ -n "$pull" ]; then
dirname="$(basename -- "$dir")" estep "Mise à jour du dépôt"
if [ "$dir" == / ]; then if [ -n "$destdir" ]; then
# s'arrêter à la racine [ -d "$destdir" ] || die "$destdir: répertoire introuvable"
return 1 (cd "$destdir" && git pull) || die
elif [ "$dir" == "$HOME" ]; then
# s'arrêter au répertoire HOME
return 1
elif [ "$dirname" == apacheconfig ]; then
echo "$dir"
return 0
fi
dir="$(dirname -- "$dir")"
done
}
TEMPLATE_VARS=()
DYNAMIC_VARS=()
function update_var() {
# mettre à jour la valeur d'une variable en tenant compte de certaines
# dépendances. par exemple, si on modifie host, il faut mettre à jour
# hostname.
local __orig_value="${!1}"
array_contains DYNAMIC_VARS "$1" || array_addu TEMPLATE_VARS "$1"
# Valeurs par défaut
case "$1" in
host) [ -n "$2" ] || set -- "$1" "$(myhost)";;
esac
# Mettre à jour la variable
setv "$1" "$2"
# Mettre à jour des variables dépendantes
local __update_aliases
case "$1" in
host)
# attention à ne pas créer de boucle infinies :-)
[ "$aliases" == "$hostname" ] && __update_aliases=1
update_var hostname "${host%%.*}"
[ -n "$__update_aliases" ] && update_var aliases "$hostname"
;;
esac
[ "$2" != "$__orig_value" ]
}
__vars=()
__list_vars=
__write_vars=
__deploy=
__certsdir=
__confdir=
__modulesdir=
__sitesdir=
__cgibindir=
__wwwdir=
__certsconfdir=
__rrdir=
__restart=1
__TEMPLATECTL_SUPPLOPTS=(
-v:,--var: __vars
--list-vars __list_vars=1
--write-vars __write_vars=1
-u,--update,--deploy __deploy=1
-r:,--certsdir: __certsdir=
--confdir: __confdir=
--modulesdir: __modulesdir=
--sitesdir: __sitesdir=
--cgibindir: __cgibindir=
--wwwdir: __wwwdir=
--certsconfdir: __certsconfdir=
--rrdir: __rrdir=
--restart __restart=1
--no-restart __restart=
)
__templatectl_parseopts "$@" && \
set -- "${args[@]}" || die "$args"
# répertoire de template
setx __templatectl_srcdir=templatesrc apacheconfig
# répertoire local
__autocreate=
if [ -z "$__templatectl_destdir" ]; then
if [ -d apacheconfig ]; then
__templatectl_destdir=apacheconfig
elif setx __templatectl_destdir=parent_apacheconfig; then
estepn "Sélection automatique de $(ppath "$__templatectl_destdir")"
elif [ -e apacheconfig ]; then
die "Vous devez spécifier le répertoire de référence avec -d"
else else
__templatectl_destdir=apacheconfig git pull || die
__autocreate=1
fi
fi
setx __templatectl_destdir=abspath "$__templatectl_destdir"
# charger les variables. important: la liste des variables définie dans le
# fichier .apacheconfig prend la précédence sur la liste définie par défaut
__template_vars=("${DEFAULT_TEMPLATE_VARS[@]}")
__dynamic_vars=()
__apacheconfig_vars="$__templatectl_destdir/.apacheconfig"
# d'abord charger __template_vars
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
for __var in "${__template_vars[@]}"; do
splitvar "$__var" __name __value
update_var "$__name" "$__value"
done
array_contains TEMPLATE_VARS configdir || update_var configdir "$__templatectl_destdir"
# puis charger __dynamic_vars
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
for __var in "${__dynamic_vars[@]}"; do
splitvar "$__var" __name __value
array_del TEMPLATE_VARS "$__name"
array_addu DYNAMIC_VARS "$__name"
update_var "$__name" "$__value"
done
# mettre à jour les variables
__modified=
for __var in "${__vars[@]}"; do
splitvar "$__var" __name __value
update_var "$__name" "$__value" && __modified=1
done
# enregistrer les valeurs des variables
if [ -n "$__write_vars" ]; then
[ -f "$__apacheconfig_vars" ] &&
die "Refus d'écraser le fichier existant $(ppath "$__apacheconfig_vars")"
echo "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8" >"$__apacheconfig_vars"
echo "__template_vars=(" >>"$__apacheconfig_vars"
for __var in "${TEMPLATE_VARS[@]}"; do
echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
done
echo ")" >>"$__apacheconfig_vars"
echo "__dynamic_vars=(" >>"$__apacheconfig_vars"
for __var in "${DYNAMIC_VARS[@]}"; do
echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
done
echo ")" >>"$__apacheconfig_vars"
fi
# afficher les variables
if [ -n "$__list_vars" ]; then
echo "# template vars"
for __var in "${TEMPLATE_VARS[@]}"; do
echo_setv "$__var=${!__var}"
done
if [ ${#DYNAMIC_VARS[*]} -gt 0 ]; then
echo "# dynamic vars"
for __var in "${DYNAMIC_VARS[@]}"; do
echo_setv "$__var=${!__var}"
done
fi fi
fi fi
# Gérer les templates et fichiers locaux apacheconfig_loadconf "$destdir" "$nohideconfig" || die
if [ -z "$__templatectl_opt" -a -z "$__list_vars" -a -z "$__write_vars" -a -z "$__deploy" ]; then apacheconfig_sysinfos "$sysname" "$sysdist" "$sysver" "$bits"
__templatectl_opt=1
__templatectl_auto=1 ################################################################################
fi if [ "$action" == create ]; then
if [ -n "$__templatectl_opt" ]; then if [ -n "$autocreate" -a ! -d "$destdir" ]; then
if [ -n "$__autocreate" -a ! -d "$__templatectl_destdir" ]; then estepn "Création automatique de $(ppath "$destdir")"
estepn "Création automatique de $(ppath "$__templatectl_destdir")" mkdir -p "$destdir" || die
mkdir -p "$__templatectl_destdir" || die fi
fi [ -d "$destdir" ] || die "$destdir: répertoire introuvable"
[ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable"
__templatectl_do "$@" [ -n "$host" ] || host="$1"
fi if [ -n "$host" ]; then
read_value -i "Veuillez entrer le nom d'hôte" host "$host"
else
check_interaction -c && einfo "Vous pouvez entrer un nom d'hôte spécifique pour la nouvelle configuration, ou laisser la valeur par défaut @@dhost@@ pour qu'il soit calculé dynamiquement lors du déploiement"
read_value "Veuillez entrer le nom d'hôte" host @@dhost@@
fi
__template_set_var host "$host"
if [ -f "$config" ]; then
ask_yesno "Le fichier $(ppath "$config") sera écrasé. Voulez-vous continuer?" O || die
rm -f "$config" || die
fi
templatectl -d "$destdir" --config "$config" ${nohideconfig:+--no-hide-config} --no-load-vars -m --write-vars
################################################################################
elif [ "$action" == template ]; then
__TEMPLATECTL_HELP="USAGE: $scriptname -t -- args...
$__TEMPLATECTL_HELP"
templatectl -d "$destdir" --config "$config" --no-load-vars ${templateopt:+-$templateopt} "$@"
################################################################################
elif [ "$action" == deploy -o "$action" == localhosts ]; then
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
# déploiement
if [ -n "$__deploy" ]; then
args=( args=(
-d "$__templatectl_destdir" -d "$destdir" --$action
-u ${fixip:+--fix-ip}
${__certsdir:+-r "$__certsdir"} ${netconf:+--network-config}
${__confdir:+--confdir "$__confdir"} ${no_post_update:+--no-post-update}
${__modulesdir:+--modulesdir "$__modulesdir"} ${aac_certsdir:+-r "$aac_certsdir"}
${__sitesdir:+--sitesdir "$__sitesdir"} ${oneconf:+--one-conf "$oneconf"}
${__cgibindir:+--cgibindir "$__cgibindir"} ${onemodule:+--one-module "$onemodule"}
${__wwwdir:+--wwwdir "$__wwwdir"} ${onesite:+--one-site "$onesite"}
${__certsconfdir:+--certsconfdir "$__certsconfdir"}
${__rrdir:+--rrdir "$__rrdir"}
) )
for __name in "${DYNAMIC_VARS[@]}"; do # sur une ligne séparée parce que $bits peut être vide
[ -n "$custom_sysinfos" ] && array_add args --sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"
for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
array_add args -v "$__name=${!__name}" array_add args -v "$__name=${!__name}"
done done
array_add args -- "$@"
run_as_root "${args[@]}" run_as_root "${args[@]}"
if [ "$action" == deploy ]; then
etitle "Mise à jour du système" etitle "Mise à jour du système"
[ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable" apacheconfig_deploy \
args=( "$destdir" "$aac_certsdir" \
"$__templatectl_destdir" "$__certsdir" "$config" "$oneconf" "$onemodule" "$onesite" \
${__confdir:+--confdir "$__confdir"} "$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" \
${__modulesdir:+--modulesdir "$__modulesdir"} "$netconf" "$fixip" "$no_post_update" || die
${__sitesdir:+--sitesdir "$__sitesdir"}
${__cgibindir:+--cgibindir "$__cgibindir"}
${__wwwdir:+--wwwdir "$__wwwdir"}
${__certsconfdir:+--certsconfdir "$__certsconfdir"}
${__rrdir:+--rrdir "$__rrdir"}
)
for __name in "${DYNAMIC_VARS[@]}"; do
array_add args "$__name=${!__name}"
done
apache_autoconf "${args[@]}" || die
eend eend
elif [ "$action" == localhosts ]; then
etitle "Mise à jour de /etc/hosts"
apacheconfig_localhosts "$destdir" "$aac_certsdir" "$onesite" || die
eend
fi
################################################################################
elif [ "$action" == new-site ]; then
host="$site_host"
templdir="$site_templdir"
if [ -z "$templdir" -a -d "$destdir/templates" ]; then
# si on ne précise pas le template à utiliser, alors afficher
# éventuellement un menu si plusieurs templates sont disponibles
templdirs=()
if [ -n "$(list_all "$destdir/templates" "*SITE*")" ]; then
array_add templdirs templates
templdir=templates
fi
array_from_lines stempldirs "$(list_dirs "$destdir/templates" | grep -v SITE)"
for stempldir in "${stempldirs[@]}"; do
if [ -n "$(list_all "$destdir/templates/$stempldir" "*SITE*")" ]; then
array_add templdirs "templates/$stempldir"
[ -n "$templdir" ] || templdir="templates/$stempldir"
fi
done
if [ ${#templdirs[*]} -gt 1 ]; then
simple_menu templdir templdirs -t "Choix du répertoire des modèles" -m "Veuillez choisir le modèle à utiliser"
fi
templdir="$destdir/$templdir"
fi
if [[ "$templdir" != */* ]] && [ -d "$destdir/templates/$templdir" ]; then
templdir="$destdir/templates/$templdir"
elif [ -z "$templdir" ]; then
templdir="$destdir/templates"
fi
[ -d "$templdir" ] || die "$templdir: répertoire introuvable"
force="$site_force"
clrtempl=
ssltempl=
certstempl=
wwwtempl=
array_from_lines clrtempls "$(list_files "$templdir" "*SITE*.conf")"
array_from_lines ssltempls "$(list_files "$templdir" "*SITE*.ssl.conf")"
array_from_lines certstempls "$(list_files "$templdir" "*SITE*-certs.conf")"
for xtempl in "${ssltempls[@]}" "${certstempls[@]}"; do
array_del clrtempls "$xtempl"
done
[ ${#clrtempls[*]} -gt 0 ] && clrtempl="${clrtempls[0]}"
[ ${#ssltempls[*]} -gt 0 ] && ssltempl="${ssltempls[0]}"
[ ${#certstempls[*]} -gt 0 ] && certstempl="${certstempls[0]}"
array_from_lines wwwtempls "$(list_dirs "$templdir" "*SITE*")"
[ ${#wwwtempls[*]} -gt 0 ] && wwwtempl="${wwwtempls[0]}"
found=
for i in "$clrtempl" "$ssltempl" "$certstempl" "$wwwtempl"; do
[ -n "$i" ] && { found=1; break; }
done
[ -n "$found" ] || die "Aucun template disponible"
if [ -z "$force" ] && [[ "$host" != *.* ]]; then
die "$host n'est pas un nom d'hôte pleinement qualifié"
fi
hostip=
for i in "$clrtempl" "$ssltempl"; do
[ -n "$i" -a -f "$templdir/$i" ] || continue
quietgrep SITE_IP "$templdir/$i" && { hostip=1; break; }
done
if [ -n "$hostip" ]; then
# Il y a un champ SITE_IP, il faut demander à l'utilisateur l'adresse ip
# correspondante
[[ "$host" == *.* ]] && hostdomain="${host#*.}" || hostdomain=
pri=
hostip=
i=0
while [ $i -lt ${#PUBDOMAINS[*]} ]; do
if [ "${PUBDOMAINS[$i]}" == "$hostdomain" ]; then
pri="$VSPREFIX${host%$hostdomain}${PRIDOMAINS[$i]}"
resolv_ips ips "$pri"
if [ -n "$ips" ]; then
hostip="${ips[0]}"
break
fi
fi
i=$(($i + 1))
done
if [ -z "$hostip" ]; then
pri="$VSPREFIX$host"
resolv_ips ips "$pri"
[ -n "$ips" ] && hostip="${ips[0]}"
fi
if [ -n "$pri" -a -n "$hostip" ]; then
enote "Correspondance automatique $host --> $pri"
read_value "Veuillez confirmer l'adresse IP d'écoute" hostip "$hostip" N
else
enote "Vous devez saisir l'adresse IP privée correspondant à $host"
read_value "Veuillez entrer l'adresse IP *privée* d'écoute" hostip "" N
fi
[ -n "$hostip" ] || ewarn "Vous avez choisi de ne pas spécifier d'adresse IP d'écoute. Il faudra corriger manuellement les fichiers générés"
fi
etitle "$host"
hostname="${host%%.*}"
clrconf="${clrtempl/SITE/$hostname}"
sslconf="${ssltempl/SITE/$hostname}"
certsconf="${certstempl/SITE/$hostname}"
wwwdir="${wwwtempl/SITE/$hostname}"
mkdir -p "$destdir/certsconf"
mkdir -p "$destdir/sites"
sedscript=
[ -n "$hostip" ] && sedscript="$sedscript
s/SITE_IP/$hostip/g"
sedscript="$sedscript
s/SITE.TLD/$host/g
s/SITE/$hostname/g"
if [ -z "$clrtempl" ]; then
:
elif [ ! -f "$templdir/$clrtempl" ]; then
ewarn "Le fichier $(ppath "$templdir/$clrtempl") n'existe pas. La copie ne sera pas complète"
elif [ -f "$destdir/sites/$clrconf" ]; then
ewarn "Le fichier sites/$clrconf existe déjà. Il ne sera pas écrasé."
else
estep "sites/$clrconf"
sed "$sedscript" "$templdir/$clrtempl" >"$destdir/sites/$clrconf" || die
fi
if [ -z "$ssltempl" ]; then
:
elif [ ! -f "$templdir/$ssltempl" ]; then
ewarn "Le fichier $(ppath "$templdir/$ssltempl") n'existe pas. La copie ne sera pas complète"
elif [ -f "$destdir/sites/$sslconf" ]; then
ewarn "Le fichier sites/$sslconf existe déjà. Il ne sera pas écrasé."
else
estep "sites/$sslconf"
sed "$sedscript" "$templdir/$ssltempl" >"$destdir/sites/$sslconf" || die
fi
if [ -z "$certstempl" ]; then
:
elif [ ! -f "$templdir/$certstempl" ]; then
ewarn "Le fichier $(ppath "$templdir/$certstempl") n'existe pas. La copie ne sera pas complète"
elif [ -f "$destdir/certsconf/$certsconf" ]; then
ewarn "Le fichier certsconf/$certsconf exite déjà. Il ne sera pas écrasé."
else
estep "certsconf/$certsconf"
sed "$sedscript" "$templdir/$certstempl" >"$destdir/certsconf/$certsconf" || die
fi
if [ -z "$wwwtempl" ]; then
:
elif [ ! -d "$templdir/$wwwtempl" ]; then
ewarn "Le répertoire $(ppath "$templdir/$wwwtempl") n'existe pas. La copie ne sera pas complète"
elif [ -d "$destdir/$wwwdir" ]; then
ewarn "Le répertoire $wwwdir existe déjà. Il ne sera pas écrasé."
else
estep "$wwwdir"
cpdirnovcs "$templdir/$wwwtempl" "$destdir/$wwwdir" || die
sed -i "$sedscript" "$destdir/$wwwdir/.udir" || die
fi
eend
if [ -n "$wwwtempl" ]; then
eimportant "Ne pas oublier le cas échéant de mettre à jour HTDMAPPINGS dans $(ppath "$config") e.g.
HTDMAPPINGS=($wwwdir)"
fi
fi fi

45
authftp
View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS
function display_help() { function display_help() {
uecho "$scriptname: Se connecter sur un site FTP authentifié uecho "$scriptname: Se connecter sur un site FTP authentifié
@ -25,6 +24,14 @@ OPTIONS
$scriptname -l -o -e -o 'mirror remote local' host login pass $scriptname -l -o -e -o 'mirror remote local' host login pass
Dans cet exemple, l'option -e de lftp est utilisée pour faire un miroir Dans cet exemple, l'option -e de lftp est utilisée pour faire un miroir
local du répertoire remote. local du répertoire remote.
--tls
Indiquer que la connexion se fera en TLS. Implique --lftp puisque ncftp
ne le supporte pas.
--verify-certificate
Avec la connexion --tls, forcer la vérification du certificat, qui est
désactivée par défaut.
--sftp
Indiquer que la connexion se fait via SFTP. Implique --lftp --noproxy
note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
@ -32,6 +39,14 @@ façon dont le proxy ftp est configuré, il n'est pas possible de se connecter
avec un mot de passe qui contient le caractère @" avec un mot de passe qui contient le caractère @"
} }
function hostkeyfailed_apropos() {
eecho "\
------------------------------------------------------------------------------------
Si le message 'Host key verification failed' apparait, lancer la commande suivante:
ssh -o StrictHostKeyChecking=no -o BatchMode=yes $1
------------------------------------------------------------------------------------"
}
AUTHFTP_PROXY_DISABLED=1 # par défaut, ne pas utiliser le proxy AUTHFTP_PROXY_DISABLED=1 # par défaut, ne pas utiliser le proxy
set_defaults proxy set_defaults proxy
set_defaults authftp set_defaults authftp
@ -39,12 +54,18 @@ set_defaults authftp
noproxy="$AUTHFTP_PROXY_DISABLED" noproxy="$AUTHFTP_PROXY_DISABLED"
lftp= lftp=
options=() options=()
tls=
verify_certificate=no
sftp=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-p,--proxy noproxy= \ -p,--proxy noproxy= \
-n,--noproxy noproxy=1 \ -n,--noproxy noproxy=1 \
-l,--lftp lftp=1 \ -l,--lftp lftp=1 \
-o:,--option: options \ -o:,--option: options \
--tls tls=1 \
--verify-certificate verify_certificate=yes \
--sftp sftp=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
[ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini" [ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini"
@ -57,11 +78,27 @@ read_value -i "Entrez l'identifiant de connexion" login "$2"
read_value -i "Entrez le mot de passe" password "$3" read_value -i "Entrez le mot de passe" password "$3"
read_value -i "Entrez le chemin" path "$4" N read_value -i "Entrez le chemin" path "$4" N
[ -n "$tls" -o -n "$sftp" ] && lftp=1
[ -n "$sftp" ] && noproxy=1
if [ -n "$lftp" ]; then if [ -n "$lftp" ]; then
if [ -n "$noproxy" ]; then if [ -n "$noproxy" ]; then
exec lftp -u "$login,$password" "${options[@]}" "ftp://$host/$path" export LFTP_PASSWORD="$password"
if [ -n "$sftp" ]; then
url="sftp://$host/$path"
hostkeyfailed_apropos "$login@$host"
else else
exec lftp -u "${login}@${my_login}@${host},${password}@${my_password}" "${options[@]}" "ftp://$AUTHFTP_PROXY_HOST/$path" url="ftp://$host/$path"
fi
exec lftp "${options[@]}" -e "\
set ssl:verify-certificate $verify_certificate
open -u $login --env-password $url"
else
export LFTP_PASSWORD="${password}@${my_password}"
url="ftp://$AUTHFTP_PROXY_HOST/$path"
exec lftp "${options[@]}" -e "\
set ssl:verify-certificate $verify_certificate
open -u ${login}@${my_login}@${host} --env-password $url"
fi fi
else else
if [ -n "$noproxy" ]; then if [ -n "$noproxy" ]; then

8
bashrc
View File

@ -1,6 +1,12 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
function uprovide() { :; } function uprovide() { :; }
source @@dest@@/lib/ulib/uenv || return source @@dest@@/lib/ulib/uenv || return
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.d" "$HOME/etc/${HOSTNAME%%.*}-bashrc.d" if [ -n "$UTOOLS_LOCAL_PROFILES" ]; then
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.${HOSTNAME%%.*}.d"
else
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.d"
fi
__uenv_cleanup __uenv_cleanup

38
caturl
View File

@ -1,17 +1,26 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS
function display_help() { function display_help() {
uecho "$scriptname: Afficher une url uecho "$scriptname: Afficher une url
USAGE USAGE
$scriptname <file.url|file.desktop|URL>" $scriptname <file.url|file.desktop|URL>
OPTIONS
-c, --check
Vérifier que le fichier est valide
-g, --get
Attaquer l'url spécifiée avec curl"
} }
check=
get=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-c,--check check=1 \
-g,--get get=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
function findurl() { function findurl() {
@ -25,7 +34,10 @@ if [ -z "$URL" ]; then
# Essayer de trouver une fichier homepage.{url,desktop} dans le répertoire # Essayer de trouver une fichier homepage.{url,desktop} dans le répertoire
# courant # courant
URLFILE="$(findurl homepage)" URLFILE="$(findurl homepage)"
[ -f "$URLFILE" ] || die "Il faut spécifier l'url à ouvrir" if [ ! -f "$URLFILE" ]; then
[ -n "$check" ] && exit 2
die "Il faut spécifier l'url à ouvrir"
fi
elif [ -d "$URL" ]; then elif [ -d "$URL" ]; then
# répertoire dans lequel se trouve éventuellement un fichier # répertoire dans lequel se trouve éventuellement un fichier
# homepage.{url,desktop} # homepage.{url,desktop}
@ -63,7 +75,10 @@ if [ -n "$URLFILE" ]; then
/[uU][rR][lL]=/ { URL = substr($0, 5) } /[uU][rR][lL]=/ { URL = substr($0, 5) }
END { if (type == 1) print URL } END { if (type == 1) print URL }
')" ')"
[ -n "$URL" ] || die "$URLFILE: ne contient pas d'URL" if [ -z "$URL" ]; then
[ -n "$check" ] && exit 3
die "$URLFILE: ne contient pas d'URL"
fi
elif [ "${URLFILE%.desktop}" != "$URL" ]; then elif [ "${URLFILE%.desktop}" != "$URL" ]; then
# raccourci vers une url de XDG # raccourci vers une url de XDG
URL="$(<"$URLFILE" awk 'BEGIN { type = 0; URL = "" } URL="$(<"$URLFILE" awk 'BEGIN { type = 0; URL = "" }
@ -72,8 +87,17 @@ END { if (type == 1) print URL }
/[uU][rR][lL]=/ { URL = substr($0, 5) } /[uU][rR][lL]=/ { URL = substr($0, 5) }
END { if (type == 2) print URL } END { if (type == 2) print URL }
')" ')"
[ -n "$URL" ] || die "$URLFILE: ne contient pas d'URL" if [ -z "$URL" ]; then
[ -n "$check" ] && exit 3
die "$URLFILE: ne contient pas d'URL"
fi
fi fi
fi fi
echo "$URL" if [ -n "$check" ]; then
exit 0
elif [ -n "$get" ]; then
curl -fs "$URL"
else
echo "$URL"
fi

410
chrono.py Executable file
View File

@ -0,0 +1,410 @@
#!/usr/bin/env python2
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
u"""Afficher un chronomètre"""
import os, sys, re, subprocess, traceback
from os import path
from datetime import date as Date, time as Time
from datetime import datetime as Datetime, timedelta as Timedelta
from types import IntType, LongType
DEFAULT_SOUND = path.join(path.dirname(__file__), 'lib', 'chrono.wav')
def win_playSound(name):
try: import winsound as s
except: return
if name is None:
s.PlaySound(None, s.SND_ASYNC)
else:
scriptdir = path.split(path.abspath(sys.argv[0]))[0]
soundfile = path.join(scriptdir, name)
s.PlaySound(soundfile, s.SND_FILENAME + s.SND_ASYNC)
def linux_playSound(name):
subprocess.call(['/usr/bin/aplay', '-Nq', name])
def playSound(name=None):
if os.name == 'nt':
return win_playSound(name)
elif sys.platform.startswith('linux'):
return linux_playSound(name)
def isnum(i):
return type(i) in (IntType, LongType)
RE_NUM = re.compile(r'\d+$')
def numof(s):
if isnum(s): return s
elif s is None: return None
elif RE_NUM.match(str(s)) is not None: return int(str(s))
else: return s
DEFAULT_TIMEOUT = '5'
RE_DESTHOUR = re.compile(r'@(\d+)(?:[:.](\d+)(?:[:.](\d+))?)?$')
def parse_desthour(s):
mo = RE_DESTHOUR.match(s)
if mo is None: return None
h, m, s = mo.groups()
if h is None: h = 0
if m is None: m = 0
if s is None: s = 0
h, m, s = int(h), int(m), int(s)
src = Datetime.today()
srcdate = src.date(); srctime = src.time()
destdate = srcdate; desttime = Time(h, m, s)
if desttime <= srctime: destdate = destdate + Timedelta(1)
src = Datetime.combine(srcdate, srctime)
dest = Datetime.combine(destdate, desttime)
delta = dest - src
return delta.total_seconds()
RE_TIMEOUT = re.compile(r'(\d+)(?:[:.](\d+)(?:[:.](\d+))?)?$')
def parse_timeout(s):
mo = RE_TIMEOUT.match(s)
if mo is None: return None
h, m, s = mo.groups()
if m is None and s is None:
# M
m = h
h = None
elif s is None:
# M:S
s = m
m = h
h = None
else:
# H:M:S
pass
if h is None: h = 0
if m is None: m = 0
if s is None: s = 0
h, m, s = int(h), int(m), int(s)
return h * 3600 + m * 60 + s
class Chrono:
MODE_MINUTEUR = 'M'
MODE_CHRONOMETRE = 'C'
STATE_STARTED = 'started'
STATE_PAUSED = 'paused'
STATE_STOPPED = 'stopped'
ZERO = None
state = None
mode = None
timeout = None
elapsed = None
date_start = None
max_elapsed = None
initial = None
def __init__(self, timeout=None, start=False):
self.ZERO = self.__delta(0)
self.set_timeout(timeout)
if start: self.start()
def __format(self, delta):
h = delta.seconds // 3600
seconds = delta.seconds % 3600
m = seconds // 60
s = seconds % 60
if h > 0: return '%02i:%02i:%02i' % (h, m, s)
else: return '%02i:%02i' % (m, s)
def __delta(self, timeout):
return Timedelta(seconds=timeout)
def set_timeout(self, timeout=None):
if timeout == '': timeout = None
if timeout is not None and not isnum(timeout):
tmp = parse_desthour(str(timeout))
if tmp is None: tmp = parse_timeout(timeout)
if tmp is None: tmp = int(timeout) * 60
timeout = tmp
if timeout == 0: timeout = None
self.timeout = timeout
self.elapsed = self.ZERO
self.state = self.STATE_STOPPED
if timeout is None:
self.mode = self.MODE_CHRONOMETRE
self.initial = self.__format(self.ZERO)
else:
self.mode = self.MODE_MINUTEUR
self.max_elapsed = self.__delta(timeout)
self.initial = self.__format(self.max_elapsed)
def is_chronometre(self):
return self.mode == self.MODE_CHRONOMETRE
def is_minuteur(self):
return self.mode == self.MODE_MINUTEUR
def get_elapsed(self):
if self.date_start is None: return self.ZERO
delta = Datetime.today() - self.date_start
return self.elapsed + delta
def start(self, timeout=None):
if timeout is None: timeout = self.timeout
self.elapsed = self.ZERO
self.date_start = Datetime.today()
self.state = self.STATE_STARTED
def is_started(self):
return self.state == self.STATE_STARTED
def pause(self):
if self.state == self.STATE_PAUSED:
self.date_start = Datetime.today()
self.state = self.STATE_STARTED
else:
self.elapsed = self.get_elapsed()
self.state = self.STATE_PAUSED
def is_paused(self):
return self.state == self.STATE_PAUSED
def stop(self):
self.elapsed = self.get_elapsed()
self.state = self.STATE_STOPPED
def is_stopped(self):
return self.state == self.STATE_STOPPED
def is_end(self):
if not self.is_started(): return False
if not self.is_minuteur(): return False
elapsed = self.get_elapsed()
return elapsed >= self.max_elapsed
def __repr__(self):
elapsed = self.get_elapsed() if self.is_started() else self.elapsed
if self.is_minuteur():
delta = self.max_elapsed - elapsed
if delta < self.ZERO: delta = self.ZERO
return self.__format(delta)
else:
return self.__format(elapsed)
def run_chronometre(timeout=None, autostart=False):
from Tkinter import Tk, Toplevel, Frame, Label, Entry, Button
import tkMessageBox
class Dialog(Toplevel):
def __init__(self, parent, title=None):
self.result = None
self.have_result = False
Toplevel.__init__(self, parent)
self.transient(parent)
if title: self.title(title)
self.parent = parent
body = Frame(self)
self.initial_focus = self.body(body)
body.pack(padx=5, pady=5)
self.buttonbox()
self.grab_set()
if not self.initial_focus: self.initial_focus = self
self.protocol("WM_DELETE_WINDOW", self.cancel)
self.geometry("+%d+%d" % (parent.winfo_rootx()+50,
parent.winfo_rooty()+50))
self.initial_focus.focus_set()
self.wait_window(self)
def set_result(self, result):
self.result = result
self.have_result = True
def body(self, master):
pass
def buttonbox(self):
box = Frame(self)
w = Button(box, text="OK", width=10, command=self.ok, default='active')
w.pack(side='left', padx=5, pady=5)
w = Button(box, text="Annuler", width=10, command=self.cancel)
w.pack(side='left', padx=5, pady=5)
self.bind("<Return>", self.ok)
self.bind("<Escape>", self.cancel)
box.pack()
def ok(self, event=None):
if not self.validate():
self.initial_focus.focus_set()
return
self.withdraw()
self.update_idletasks()
self.apply()
self.cancel()
def cancel(self, event=None):
self.parent.focus_set()
self.destroy()
def validate(self):
return True
def apply(self):
pass
class Config(Dialog):
def body(self, master):
Label(master, text="Nb minutes", padx=20).grid(row=0)
self.entry = Entry(master)
self.entry.grid(row=0, column=1)
return self.entry
def apply(self):
value = self.entry.get()
if value == "": result = None
else: result = value
self.set_result(result)
class Application(Frame):
root = None
chrono = None
def __init__(self, timeout=None, autostart=False, **kw):
self.chrono = Chrono(timeout)
root = Tk()
root.title("Chronomètre")
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
root.bind("c", lambda event: self.do_config())
root.bind("s", lambda event: self.do_start())
root.bind("p", lambda event: self.do_pause())
root.bind("<space>", lambda event: self.do_pause())
root.bind("q", lambda event: self.quit())
self.root = root
kw.update(master=root)
Frame.__init__(self, **kw)
self.TIME = Label(self, width=10, height=2, text=self.chrono.initial, padx=30, pady=10, font=('Helvetica', 18, "normal"))
self.START = Button(self, text="Start", command=self.do_start)
self.PAUSE = Button(self, text="Pause", command=self.do_pause, state="disabled")
self.CONFIG = Button(self, text="Config", command=self.do_config)
self.QUIT = Button(self, text="Quit", command=self.quit)
self.grid(column=0, row=0, sticky='nsew')
self.TIME.grid(column=0, row=0, columnspan=4, sticky='nsew')
self.START.grid(column=0, row=1, sticky='ew')
self.PAUSE.grid(column=1, row=1, sticky='ew')
self.CONFIG.grid(column=2, row=1, sticky='ew')
self.QUIT.grid(column=3, row=1, sticky='ew')
self.columnconfigure(0, weight=2)
self.columnconfigure(1, weight=2)
self.columnconfigure(2, weight=1)
self.columnconfigure(3, weight=1)
self.rowconfigure(0, weight=1)
if autostart: self.do_start()
def update_time(self):
chrono = self.chrono
self.TIME.configure(text=chrono)
if chrono.is_started():
if chrono.is_end():
playSound(DEFAULT_SOUND)
else:
self.root.after(300, self.update_time)
def do_start(self):
self.PAUSE.configure(state="normal", text="Pause")
self.START.configure(text="reStart")
self.chrono.start()
self.update_time()
def do_pause(self):
self.chrono.pause()
if self.chrono.is_paused():
self.PAUSE.configure(text="unPause")
else:
self.PAUSE.configure(text="Pause")
self.update_time()
def do_config(self):
chrono = self.chrono
chrono.stop()
config = Config(self.root)
if config.have_result:
try:
self.PAUSE.configure(text="Pause", state="disabled")
self.START.configure(text="Start")
chrono.set_timeout(config.result)
self.TIME.configure(text=chrono.initial)
except:
traceback.print_exc()
tkMessageBox.showerror("Valeur invalide", sys.exc_info()[1])
Application(timeout, autostart).mainloop()
if __name__ == '__main__':
from argparse import ArgumentParser, HelpFormatter
if sys.argv[1:2] == ['--compat']:
# Avec l'argument --compat, désactiver la classe FancyHelpFormatter qui
# se base sur une API non documentée
sys.argv = sys.argv[0:1] + sys.argv[2:]
FancyHelpFormatter = HelpFormatter
else:
class FancyHelpFormatter(HelpFormatter):
"""Comme HelpFormatter, mais ne touche pas aux lignes qui commencent par les
caractères '>>>'. Cela permet de mixer du texte formaté et du texte non
formaté.
"""
def _fill_text(self, text, width, indent):
return ''.join([indent + line for line in text.splitlines(True)])
def _split_lines(self, text, width):
lines = ['']
for line in text.splitlines():
if line.startswith('>>>'):
lines.append(line)
lines.append('')
else:
lines[-1] += '\n' + line
lines = filter(None, lines)
texts = []
for line in lines:
if line.startswith('>>>'):
texts.append(line[3:])
else:
texts.extend(super(FancyHelpFormatter, self)._split_lines(line, width))
return texts
AP = ArgumentParser(
usage=u"%(prog)s [options] [TIMEOUT]",
description=u"Afficher un chronomètre",
epilog=u"Si TIMEOUT est spécifié, par défaut le décompte démarre automatiquement.",
formatter_class=FancyHelpFormatter,
)
AP.set_defaults(autostart=None, timeout=None)
AP.add_argument('timeout', metavar='TIMEOUT', nargs='?',
help=u"""\
>>> '' (valeur vide)
chronomètre qui démarre à 0:00 et ne s'arrête pas
>>> 'H:M:S' (heures:minutes:secondes)
>>> ou 'M:S' (minutes:secondes)
>>> ou 'M' (minutes)
minuteur qui démarre à H:M:S et fait un décompte jusqu'à 0:00. A la fin
du décompte, une sonnerie retentit.
>>> '@H[:M[:S]]'
minuteur qui fonctionne comme précédemment, sauf qu'on spécifie l'heure
d'arrivée, et que la durée est calculée automatiquement""")
AP.add_argument('-n', '--no-autostart', dest='autostart', action='store_false',
help=u"Ne pas démarrer automatiquement le décompte même si TIMEOUT est spécifié.")
AP.add_argument('-s', '--autostart', dest='autostart', action='store_true',
help=u"Forcer le démarrage automatique du décompte, même si TIMEOUT n'est pas spécifié.")
o = AP.parse_args()
autostart = o.autostart
if autostart is None: autostart = o.timeout is not None
o.autostart = autostart
timeout = o.timeout
if timeout is None: timeout = DEFAULT_TIMEOUT
o.timeout = timeout
run_chronometre(o.timeout, o.autostart)

View File

@ -411,7 +411,7 @@ javac* | jikes*)
fi fi
[[ ! -z "${execute:="${compilerDir}java -cp $cacheDir${classPath:+:$classPath} $mainClass"}" ]] [[ ! -z "${execute:="${compilerDir}java -cp $cacheDir${classPath:+:$classPath} $mainClass"}" ]]
# Prepare to tell javac to compile for the latest language version it supports # Prepare to tell javac to compile for the latest language version it supports
sourceVersion="-source $(${compilerDir}java -version 2>&1 | sed -n '1s,[^"]*"\([1-9][1-9]*\.[1-9][1-9]*\).*,\1,p')" sourceVersion="-source $(${compilerDir}java -version 2>&1 | sed -n '1{s/.*"\(.*\)".*/\1/; s/^1\.//; s/\..*//; p}')"
;; ;;
jikes*) jikes*)
if [[ -z "$classPath" && -z "$compilerArgs" && -z "$CLASSPATH" ]] ; then if [[ -z "$classPath" && -z "$compilerArgs" && -z "$CLASSPATH" ]] ; then

172
create-user Executable file
View File

@ -0,0 +1,172 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: créer un utilisateur sudoer et lui installer une clé publique ssh
USAGE
$scriptname user [-p pubkey]
OPTIONS
-p, --pkfile PKFILE
Installer la clé publique ssh contenue dans le fichier spécifié. Par
défaut, prendre le fichier ~/.ssh/id_rsa.pub de l'utilisateur courant.
-s, --pkstring PUBKEY
Installer la clé publique ssh spécifiée. Cette option avancée n'est pas
utilisée en temps normal. Elle a la priorité sur l'option --pkfile
-l, --luser
Ne pas donner à l'utilisateur le droit de sudoer.
-h, --host [USER@]HOST
Créer l'utilisateur sur l'hôte distant spécifié. Si l'utilisateur
distant n'est pas root, il doit être sudoer.
-T, --tmproot TMPROOT
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
/var/tmp. Cette option est utile pour certains serveurs, qui ont un /tmp
minuscule.
-S, --ssh SSH
Spécifier le programme à utiliser pour la connection par ssh."
}
function create_user() {
# Créer le user, si nécessaire
# retourner vrai si le user a été créé, faux si ce n'était pas nécessaire
local user="$1" password="$2"
[ -z "$(getent passwd "$user")" ] || return 1
estep "Creation de l'utilisateur $user..."
useradd -s /bin/bash -m "$user"
[ -n "$password" ] || return 0
if ! (echo "$password" | passwd --stdin "$user" 2>/dev/null); then
echo "$user:$password" | chpasswd
fi
return 0
}
function init_sudoer() {
local user="$1"
local TAB=$'\t'
if [ -d /etc/sudoers.d ]; then
if [ ! -f "/etc/sudoers.d/$user" ]; then
estep "Ajout de $user comme sudoer dans /etc/sudoers.d/$user"
echo "$user${TAB}ALL=(ALL) NOPASSWD: ALL" >"/etc/sudoers.d/$user"
chmod 440 "/etc/sudoers.d/$user"
fi
elif [ -f /etc/sudoers ]; then
if ! grep -q "^$user" /etc/sudoers; then
estep "Ajout de user comme sudoer dans /etc/sudoers..."
echo "$user${TAB}ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
fi
fi
}
function install_pubkeys() {
# Installer la clé $1 pour l'utilisateur $2
# $1 peut contenir autant de clés que nécessaire, une par ligne
local user="$1" pubkeys="$2"
local homedir="$(eval "echo ~$user")"
[ -d "$homedir" ] || return
local sshdir="$homedir/.ssh"
if [ ! -d "$sshdir" ]; then
mkdir -p "$sshdir"
chmod 700 "$sshdir"
chown -R "$user:" "$sshdir"
fi
local ak="$sshdir/authorized_keys"
if [ ! -f "$ak" ]; then
touch "$ak"
chown "$user:" "$ak"
fi
local -a pks
local pk
array_from_lines pks "$pubkeys"
for pk in "${pks[@]}"; do
if ! grep -q "$pk" "$ak"; then
estep "Installation de la clé ${pk:0:20}... pour $user"
echo "$pk" >>"$ak"
fi
done
}
pkfile=
pkstring=
luser=
host=
tmproot=
SSH=
args=(
--help '$exit_with display_help'
-p:,--pkfile: pkfile=
-s:,--pkstring: pkstring=
-l,--luser luser=1
-h:,-H:,--host: host=
-T:,--tmproot: tmproot=
-S:,--ssh: SSH=
)
parse_args "$@"; set -- "${args[@]}"
user="$1"
[ -n "$user" ] || die "Vous devez spécifier l'utilisateur à créer"
if [ -z "$pkstring" ]; then
if [ -z "$pkfile" ]; then
if [ -f ~/.ssh/id_rsa.pub ]; then pkfile=~/.ssh/id_rsa.pub
elif [ -f ~/.ssh/id_dsa.pub ]; then pkfile=~/.ssh/id_dsa.pub
fi
fi
if [ -f "$pkfile" ]; then pkstring="$(<"$pkfile")"
elif [ -n "$pkfile" ]; then die "$pkfile: fichier introuvable"
fi
fi
if [ -z "$host" ]; then
# déploiement local
run_as_root ${pkstring:+-s "$pkstring"} ${luser:+-l} "$user"
create_user "$user"
[ -z "$luser" ] && init_sudoer "$user"
[ -n "$pkstring" ] && install_pubkeys "$user" "$pkstring"
exit 0
else
# déploiement distant
if [ -n "$host" ]; then
splituserhost "$host" remoteuser host
[ -n "$remoteuser" ] || remoteuser=root
fi
if [ -n "$SSH" ]; then
ssh=("$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -qt)
scp=(scp -S "$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q)
else
ssh=(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 -qt)
scp=(scp -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q)
fi
ac_set_tmpdir workdir
mkdir "$workdir/lib"
ulibsync "$workdir/lib"
cp "$script" "$workdir"
echo "#!/bin/bash
$(qvals "./$scriptname" ${pkstring:+-s "$pkstring"} ${luser:+-l} "$user")" >"$workdir/do_remote"
chmod +x "$workdir/do_remote"
ac_set_tmpfile archive
archivename="$(basename "$archive")"
"$scriptdir/mkusfx" --tmp-archive --bare -o "$archive" "$workdir" ./do_remote || die
estep "Copie du script sur $remoteuser@$host"
"${scp[@]}" "$archive" "$remoteuser@$host:" || die
estep "Exécution du script"
"${ssh[@]}" "$remoteuser@$host" "\
__estack=$(qval "$__estack")
__tlevel=$(qval "$__tlevel")
export __estack __tlevel
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"})"
r=$?
ac_clean "$workdir"
exit $r
fi

65
cssh
View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire DEFAULTS
function display_help() { function display_help() {
uecho "$scriptname: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant uecho "$scriptname: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant
@ -23,55 +22,19 @@ vars="$("$scriptdir/ussh" --parse "$@")" || die
eval "$vars" eval "$vars"
[ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter" [ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter"
cmd="'$(quoted_args "${args[@]}") [ ${#args[*]} -gt 0 ] && cmd="$(qvals "${args[@]}"); " || cmd=
"' cmd="$cmd
function __ask() { export LOCKPRG=/bin/true; $(<"$scriptdir/Sscreen")"
local r cmd="'${cmd//\'/\'\\\'\'}'"
read -p "$1" -t 2 r
[ $? -gt 128 -o -z "$r" -o "$r" == "o" -o "$r" == "O" -o "$r" == "y" -o "$r" == "Y" ]
}
function __auto_screen() {
# Si on est déjà dans screen, ne rien faire
[ -z "$STY" ] || return
local msgprefix
local screens count
screens="$(LANG=C screen -ls | grep -Ei "attached|detached")"
if [ -n "$screens" ]; then
count="$(echo "$screens" | wc -l)"
else
count=0
fi
if [ $count -gt 0 ]; then
if [ $count -eq 1 ]; then
msgprefix="Il y a '"$COULEUR_BLEUE"'1 session screen en cours'"$COULEUR_NORMALE"'
Cette session"
else
msgprefix="Il y a '"$COULEUR_ROUGE"'$count sessions screen en cours'"$COULEUR_NORMALE"':
$screens
La première session"
fi
if __ask "
$msgprefix sera reconnectée automatiquent dans 2 secondes
Voulez-vous reconnecter la session screen? [On] "; then
exec screen -q -s -/bin/bash -xRR
else
exec /bin/bash -l
fi
elif __ask "
Une '"$COULEUR_VERTE"'nouvelle session screen'"$COULEUR_NORMALE"' sera lancée automatiquement dans 2 secondes
Voulez-vous lancer une session screen? [On] "; then
exec screen -q -s -/bin/bash -RR
else
exec /bin/bash -l
fi
}
__auto_screen
'\'
for host in "${hosts[@]}"; do for host in "${hosts[@]}"; do
${exec:+exec} "$ssh" "${options[@]}" -t "$host" -- /bin/bash -c "$cmd" "$ssh" \
"${options[@]}" -qt "$host" -- \
"export LOCKPRG=/bin/true; [ -x /usr/local/nutools/Sscreen ] && exec /usr/local/nutools/Sscreen $(qvals "${args[@]}") || exit 123"
if [ $? -eq 123 ]; then
# pas de Sscreen en face, le faire à la main
${exec:+exec} \
"$ssh" "${options[@]}" -t "$host" -- \
/bin/bash -c "$cmd"
fi
done done

124
cx-conndev Executable file
View File

@ -0,0 +1,124 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
function display_help() {
uecho "$scriptname: se connecter à la base MySQL
USAGE
$scriptname [DATABASE]
$scriptname -d [-uUSER [-pPASSWORD]] DATABASES... >backup.sql
$scriptname -c [-uUSER [-pPASSWORD]] <backup.sql
OPTIONS
--compose-v1
Forcer l'utilisation de docker-compose v1
-h, -s, --service SERVICE
Spécifier le nom du service. La valeur par défaut est db
-i, --ipnum IPNUM
Si le service est dans plusieurs réseaux, sélectionner le numéro du
réseau à attaquer en commençant à 1 (la liste sera affichée si cette
option n'est pas spécifiée)
-c, --mysql-cmd
Lancer 'mysql -hSERVICE_IP' avec les arguments supplémentaires fournis
sur la ligne de commande
-d, --mysqldump-cmd
Lancer 'mysqldump --databases --add-drop-database -hSERVICE_IP' avec
les arguments supplémentaires fournis sur la ligne de commande
-k, --klean
Lancer la commande 'klean' dans le container spécifié (supprime toutes
les données et relance le container)
-u, --user USER
-p, --password PASSWORD
Paramètres supplémentaires utilisés uniquement avec les options -c et -d"
}
service=db
ipnum=
mysql_cmd=
mysqldump_cmd=
klean=
user=
password=
args=(
--help '$exit_with display_help'
--compose-v1 '$DOCKER_COMPOSE=(docker-compose)'
-h:,-s:,--service: service=
-i:,--ipnum: ipnum=
-c,--mysql-cmd mysql_cmd=1
-d,--mysqldump-cmd mysqldump_cmd=1
-k,--klean klean=1
-u:,--user: user=
-p:,--password: password=
)
parse_args "$@"; set -- "${args[@]}"
[ -n "$service" ] || die "Vous devez spécifier le nom du service"
found=
first=1
while true; do
if [ -f composer.json ]; then
found=1
break
fi
first=
cd ..
if [ "$(pwd)" == "$HOME" ]; then
die "Cette commande ne peut être lancée que depuis un projet Composer"
fi
done
if [ -z "$first" ]; then
enote "Le répertoire du projet est $(ppath . ~)"
fi
###
function die_not_found() { die "$service: service introuvable. vérifiez que le projet est actuellement up"; }
setx cid="${DOCKER_COMPOSE[@]}" ps -q "$service" 2>/dev/null || die_not_found
[ -n "$cid" ] || die_not_found
edebug "$service id: $cid"
function die_not_found() { die "$service: $cid: ip introuvable"; }
setx ip=docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}},{{end}}' "$cid" || die_not_found
[ -n "$ip" ] || die_not_found
ipdesc="${ip%,}"
if [ -z "$ipnum" ] && [[ "$ipdesc" == *,* ]]; then
enote "Le service est accessible sur plusieurs adresses ip: $ipdesc"
enote "Pensez à spécifier l'option -i pour désigner l'adresse à utiliser (-i1 pour la première, -i2 pour la seconde, etc.)"
fi
if [ -n "$ipnum" ]; then
let ipnum=ipnum-1
while [ $ipnum -gt 0 ]; do
ip="${ip#*,}"
let ipnum=ipnum-1
done
fi
ip="${ip%%,*}"
[ -n "$ip" ] || die_not_found
edebug "$service ip: $ip"
if [ -n "$mysql_cmd" ]; then
mysql -h"$ip" ${user:+-u"$user"} ${password:+-p"$password"} "$@"
elif [ -n "$mysqldump_cmd" ]; then
mysqldump --databases --add-drop-database -h"$ip" ${user:+-u"$user"} ${password:+-p"$password"} "$@"
elif [ -n "$klean" ]; then
estep "klean"
docker exec "$cid" klean
estep "wait 10sec..."
sleep 10
estep "start"
"${DOCKER_COMPOSE[@]}" start "$service"
else
[ -f bin/conndev.php ] || die "Impossible de trouver le script compagnon conndev.php"
mysql_cmd="$(php bin/conndev.php "$ip" "$@")"
edebug "mysql_cmd: $mysql_cmd"
eval "$mysql_cmd"
fi

60
cx-shelldev Executable file
View File

@ -0,0 +1,60 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
function display_help() {
uecho "$scriptname: ouvrir un shell dans le container
USAGE
$scriptname [CMD...]
OPTIONS
--compose-v1
Forcer l'utilisation de docker-compose v1
-h, -s, --service SERVICE
Spécifier le nom du service sur lequel ouvrir le shell
-d, --db
équivalent à -s db
-w, --web
équivalent à -s web (c'est la valeur par défaut)"
}
service=web
args=(
--help '$exit_with display_help'
--compose-v1 '$DOCKER_COMPOSE=(docker-compose)'
-h:,-s:,--service: service=
-d,--db service=db
-w,--web service=web
)
parse_args "$@"; set -- "${args[@]}"
[ -n "$service" ] || die "Vous devez spécifier le nom du service"
found=
first=1
while true; do
if [ -f composer.json ]; then
found=1
break
fi
first=
cd ..
if [ "$(pwd)" == "$HOME" ]; then
die "Cette commande ne peut être lancée que depuis un projet Composer"
fi
done
if [ -z "$first" ]; then
enote "Le répertoire du projet est $(ppath . ~)"
fi
###
setx cid="${DOCKER_COMPOSE[@]}" ps -q "$service" 2>/dev/null || die "$service: service introuvable"
cmd=("$@")
[ ${#cmd[*]} -gt 0 ] || cmd=(bash)
"${DOCKER_COMPOSE[@]}" exec "$service" "${cmd[@]}"

282
cx-updatedev Executable file
View File

@ -0,0 +1,282 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: mettre à jour un module ur/* ou lib/* sans utiliser composer
ça permet de faire du développement plus rapidement sans utiliser les dépôts de
type path
USAGE
$scriptname modules...
OPTIONS
-n, --fake
Afficher simplement ce qui serait fait
-q, --quiet
Ne pas lancer rsync en mode verbose
-g, --no-wait
Ne pas attendre avant de faire git commit
--rsync
Mettre à jour les répertoires dans vendor/ qui ne sont pas des liens
symboliques à partir des projets dépendants correspondants. Les liens
symboliques créés avec --link sont ignorés. C'est l'option par défaut.
-l, --link
Transformer les clones de dépôts dans vendor/ en liens symboliques vers
les projets dépendants correpondants.
-k, --copy
Transformer les liens symboliques dans vendor/ en copies des projets
dépendants correspondants. Les répertoires qui ne sont pas des liens
symboliques sont ignorés.
Cette option peut être considérée comme le contraire de --link
-i, --install
Supprimer les répertoires des projets dépendants dans vendor/, qu'il
s'agisse de liens symboliques ou de répertoires normaux, puis les faire
recréer par 'composer i'
Celà permet de ramener le projet à l'état original.
-j, --reinstall-link
Supprimer les répertoires des projets dépendants dans vendor/ s'il
s'agit de liens symboliques, puis les faire recréer par 'composer i'
Cette variante est plus rapide que --install puisqu'on ne cherche pas à
tout recréer.
-u, --update
Supprimer les répertoires des projets dépendants dans vendor/, qu'il
s'agisse de liens symboliques ou de répertoires normaux, puis les faire
recréer par 'composer u'
Celà permet de mettre à jour le projet sans les erreurs qui résultent
des modifications faites par les autres actions.
-w, --update-commit
Mettre à jour le projet avec --update puis enregistrer les modifications
éventuelles dans git
--ud, --update-deps
Mettre à jour les projets dépendants avec --update-commit avant de
mettre à jour le projet courant.
--ur, --update-recursive
Mettre à jour de façon récursive tous les projets dépendants.
NB: les modifications dans les projets dépendants seront automatiquement
enregistrées dans git."
}
fake=
verbose=1
nowait=
action=rsync
args=(
--help '$exit_with display_help'
-d:,--project-dir: projdir=
-n,--fake fake=1
-q,--quiet verbose=
-g,--no-wait nowait=1
-l,--link action=link
-k,--copy action=copy
-i,--install action=install
-j,--reinstall-link action=reinstall-link
-u,--update action=update
-w,--update-commit action=update-commit
--ud,--update-deps action=update-deps
--ur,--update-recursive action=update-recursive
)
parse_args "$@"; set -- "${args[@]}"
if [ -d "$projdir" ]; then
cd "$projdir"
elif [ -e "$projdir" ]; then
die "$projdir: répertoire introuvable"
fi
found=
first=1
while true; do
if [ -f composer.json ]; then
found=1
break
fi
first=
cd ..
if [ "$(pwd)" == "$HOME" ]; then
die "Cette commande ne peut être lancée que depuis un projet Composer"
fi
done
if [ -z "$first" ]; then
enote "Le répertoire du projet est $(ppath . ~)"
fi
if [ "$action" == update-deps -o "$action" == update-recursive ]; then
# avec update-deps et update-recursive, tous les modules doivent être
# considérés
set --
fi
###
if [ $# -eq 0 ]; then
setx -a ms=list_dirs vendor "ur/*" "lib/*"
set -- "${ms[@]}"
fi
function check_module() {
[ -d "../$m" ] || die "$m: module introuvable"
}
function update_with_rsync() {
local -a rsync_args
rsync_args=(
-a ${fake:+-n} ${verbose:+-v}
--delete
-f "- /.git/"
-f "- /vendor/"
"../$m/" "vendor/$p"
)
rsync "${rsync_args[@]}"
}
deps=()
modules=()
for m in "$@"; do
m="${m#vendor/}" # pour permettre de spécifier le chemin directement
m="${m//\//-}"
case "$m" in
ur-*|lib-*) ;;
*) m="ur-$m";;
esac
modules+=("$m")
p="${m//-/\/}"
check_module
case "$action" in
rsync)
# Action par défaut: ignorer les liens et synchroniser les copies
if [ ! -L "vendor/$p" ]; then
etitle "$m"
update_with_rsync
eend
fi
;;
link)
# Ignorer les liens et transformer les copies en liens
if [ ! -L "vendor/$p" ]; then
link="$m"
path="/project/vendor/$p"
path="${path%/*}"
while [ -n "$path" ]; do
link="../$link"
path="${path%/*}"
done
etitle "$m"
estep "suppr. vendor/$p"
rm -rf "vendor/$p"
mkdirof "vendor/$p"
estep "vendor/$p --> $link"
ln -s "$link" "vendor/$p"
eend
fi
;;
copy)
# Transformer les liens en copie et les synchroniser
etitle "$m"
if [ -L "vendor/$p" ]; then
estep "suppr. vendor/$p"
rm -f "vendor/$p"
fi
update_with_rsync
eend
;;
install)
# Supprimer les liens et répertoires...
etitle "$m"
if [ -e "vendor/$p" ]; then
estep "suppr. vendor/$p"
rm -rf "vendor/$p"
fi
array_add deps "$p"
eend
;;
reinstall-link)
# Supprimer les liens uniquement...
etitle "$m"
if [ -L "vendor/$p" ]; then
estep "suppr. vendor/$p"
rm -f "vendor/$p"
fi
array_add deps "$p"
eend
;;
update|update-commit|update-deps|update-recursive)
# Supprimer les liens et répertoires...
etitle "$m"
if [ -e "vendor/$p" ]; then
estep "suppr. vendor/$p"
rm -rf "vendor/$p"
fi
array_add deps "$p"
eend
;;
*) die "$action: action inconnue";;
esac
done
case "$action" in
install|reinstall-link)
# ... puis installer les dépendances
estep "Installation des dépendances"
"$scriptdir/dk" ci || die
;;
update|update-commit)
# ... puis mettre à jour les dépendances
estep "Mise à jour des dépendances"
"$scriptdir/dk" cu "${deps[@]}" || die
if [ "$action" == update-commit ]; then
if [ -z "$nowait" ]; then
# laisser le temps à @$*! d'eclipse qui met à jour automatiquement le projet...
estep "Attendre 10 secondes avant git commit"
sleep 10
fi
estep "Enregistrement dans git"
pci -A "maj deps"
fi
;;
update-deps)
# mettre à jour les dépendances directes
for m in "${modules[@]}"; do
etitle "Mise à jour projet dépendant: $m"
"$script" -d "../$m" -w
eend
done
estep "Mise à jour des dépendances"
"$scriptdir/dk" cu || die
if [ -z "$nowait" ]; then
# laisser le temps à @$*! d'eclipse qui met à jour automatiquement le projet...
estep "Attendre 10 secondes avant git commit"
sleep 10
fi
estep "Enregistrement dans git"
pci -A "maj deps"
;;
update-recursive)
# mettre à jour les dépendances de façon récursive
for m in "${modules[@]}"; do
etitle "Mise à jour récursive: $m"
"$script" -d "../$m" --ur
eend
done
estep "Mise à jour des dépendances"
"$scriptdir/dk" cu || die
if [ -z "$nowait" ]; then
# laisser le temps à @$*! d'eclipse qui met à jour automatiquement le projet...
estep "Attendre 10 secondes avant git commit"
sleep 10
fi
estep "Enregistrement dans git"
pci -A "maj deps"
;;
esac

3098
dk Executable file

File diff suppressed because it is too large Load Diff

3296
dkbuild Executable file

File diff suppressed because it is too large Load Diff

132
dmcerts Executable file
View File

@ -0,0 +1,132 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire install
function display_help() {
uecho "$scriptname: gérer les certificats de docker-machine
Les certificats créés par docker-machine ont une durée trop courte à mon goût.
Ce script permet de les recréer avec une durée de 30 ans pour le CA et le
certificat client, et de 10 ans pour chaque machine
USAGE
$scriptname [host]"
}
args=(
--help '$exit_with display_help'
)
parse_args "$@"; set -- "${args[@]}"
dmdir="$HOME/.docker/machine"
cadir="$dmdir/dmcerts"
cakey="$cadir/dmca.key"
cacsr="$cadir/dmca.csr"
cacrt="$cadir/dmca.crt"
cacrl="$cadir/dmca.crl"
if [ ! -d "$cadir" ]; then
enote "Le répertoire $cadir va être créé. Ne faites cela que si c'est la première fois. Sinon, récupérez le répertoire déjà créé par ailleurs"
ask_yesno "Voulez-vous continuer?" N || die
mkdir "$cadir"
chmod 700 "$cadir"
mkdir "$cadir"/{openssl,newcerts}
touch "$cadir/index.txt"
echo 01 >"$cadir/serial"
for src in "$scriptdir"/lib/dmcerts_openssl_*.cnf; do
dest="$cadir/openssl/${src#$scriptdir/lib/dmcerts_openssl_}"
cp "$src" "$dest"
done
sed -i "s/^dir = .*/dir = ${cadir//\//\\\/}/" "$cadir/openssl/"*.cnf
openssl req -config "$cadir/openssl/ca.cnf" -batch -new -nodes -keyout "$cakey" -out "$cacsr" &&
openssl ca -config "$cadir/openssl/ca.cnf" -batch -notext -out "$cacrt" -days 10950 -keyfile "$cakey" -selfsign -extensions v3_ca -infiles "$cacsr" &&
openssl ca -config "$cadir/openssl/ca.cnf" -batch -gencrl -out "$cacrl" ||
die "Une erreur s'est produite. Veuillez supprimer $cadir et recommencer"
fi
clientkey="$cadir/dmclient.key"
clientcsr="$cadir/dmclient.csr"
clientcrt="$cadir/dmclient.crt"
clientcnf="$cadir/openssl/client.cnf"
if [ ! -f "$clientcrt" ]; then
#sed -i "s/^dir = .*/dir = ${cadir//\//\\\/}/" "$clientcnf"
subj="/countryName=FR/stateOrProvinceName=La Reunion/localityName=Sainte Clotilde/organizationName=jclain/CN=dmclient/"
openssl req -config "$clientcnf" -batch -new -nodes -subj "$subj" -keyout "$clientkey" -out "$clientcsr" &&
openssl ca -config "$clientcnf" -batch -keyfile "$cakey" -notext -out "$clientcrt" -infiles "$clientcsr" &&
chmod 644 "$clientcrt" &&
chmod 600 "$clientkey" &&
rm -f "$clientcsr" ||
die "Une erreur s'est produite pendant la génération du certificat client"
fi
estep "Vérification certificats locaux"
copy_update "$cacrt" "$dmdir/certs/ca.pem"
copy_update "$cakey" "$dmdir/certs/ca-key.pem"
copy_update "$clientcrt" "$dmdir/certs/cert.pem"
copy_update "$clientkey" "$dmdir/certs/key.pem"
first=1
for host in "$@"; do
if [ -n "$first" ]; then
servercnf="$cadir/openssl/server.cnf"
#sed -i "s/^dir = .*/dir = ${cadir//\//\\\/}/" "$servercnf"
else
first=
fi
etitle "$host"
machine="${host%%.*}"
machinedir="$dmdir/machines/$machine"
if [ ! -d "$machinedir" ]; then
eerror "$machine: machine inexistante"
fi
serverkey="${machine}-server.key"
servercsr="${machine}-server.csr"
servercrt="${machine}-server.crt"
if [ ! -f "$servercrt" ]; then
subj="/countryName=FR/stateOrProvinceName=La Reunion/localityName=Sainte Clotilde/organizationName=jclain/CN=dmserver-$host/"
sans="DNS:$host,DNS:localhost"
sed -i "s/^subjectAltName = .*/subjectAltName = $sans/" "$servercnf"
openssl req -config "$servercnf" -batch -new -nodes -subj "$subj" -keyout "$serverkey" -out "$servercsr" &&
openssl ca -config "$servercnf" -batch -keyfile "$cakey" -notext -out "$servercrt" -infiles "$servercsr" &&
chmod 644 "$servercrt" &&
chmod 600 "$serverkey" &&
rm -f "$servercsr" ||
die "Une erreur s'est produite pendant la génération du certificat serveur"
fi
estep "machine: $machine"
ask_yesno "Voulez-vous remplacer les certificats distants et locaux?" O || continue
estep "Copie distante"
scp "$cacrt" "root@$host:/etc/docker/ca.pem" || die
scp "$servercrt" "root@$host:/etc/docker/server.pem" || die
scp "$serverkey" "root@$host:/etc/docker/server-key.pem" || die
estep "Redémarrage docker distant"
ssh "root@$host" "service docker restart" || die
estep "Copie locale"
copy_update "$cacrt" "$machinedir/ca.pem"
copy_update "$cakey" "$machinedir/ca-key.pem"
copy_update "$clientcrt" "$machinedir/cert.pem"
copy_update "$clientkey" "$machinedir/key.pem"
copy_update "$servercrt" "$machinedir/server.pem"
copy_update "$serverkey" "$machinedir/server-key.pem"
estep "Test de l'accès au serveur"
setx env=docker-machine env "$machine" || die
eval "$env"
echo "$machine docker version: $(docker system info -f '{{.ServerVersion}}')"
estep "Suppression des fichiers temporaires"
rm -f "$servercrt" "$serverkey"
done
enote "N'oubliez pas de re-exporter les docker-machines qui ont été regénérées"

160
dmctl Executable file
View File

@ -0,0 +1,160 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: import/exporter une docker-machine
USAGE
$scriptname -d NAME
$scriptname -l ARCHIVE
$scriptname -a ARCHIVEs...
OPTIONS
-d, --dump
Exporter la machine
-l, --load
Importer la machine à partir de l'archive spécifiée
-a, --load-all
Importer toutes les machines depuis le répertoire spécifié"
}
function dump_machine() {
local name srcdir workdir destdir archive i
name="$1"
[ -n "$name" ] || die "Vous devez spécifier le nom de la machine"
srcdir="$HOME/.docker/machine/machines/$name"
[ -d "$srcdir" ] || die "$name: nom de machine incorrect"
ac_set_tmpdir workdir
destdir="$workdir/$name"
archive="${name}-machine.tar.gz"
estep "Copie des fichiers"
cp -r "$srcdir" "$workdir" || die
for i in ca-key.pem ca.pem key.pem cert.pem; do
[ -f "$destdir/$i" ] || {
cp "$HOME/.docker/machine/certs/$i" "$destdir" || die
}
done
estep "Correction des chemins"
sed -i "\
s|$HOME/.docker/machine|DOCKER_MACHINE_HOME|g
s|DOCKER_MACHINE_HOME/certs/|DOCKER_MACHINE_HOME/machines/$name/|g
" "$destdir/config.json" || die
estep "Génération de $archive"
tar czf "$archive" -C "$workdir" "$name" || die
ac_clean "$workdir"
}
function load_machine() {
local archive archivename destdir machinedir origdir workdir srcdir
archive="$1"
[ -n "$archive" ] || die "Vous devez spécifier l'archive à importer"
setx archivename=basename -- "$archive"
if [[ "$archivename" == *-machine.tar.gz ]]; then
name="${archivename%-machine.tar.gz}"
else
die "$archive: n'est pas une archive docker-machine"
fi
destdir="$HOME/.docker/machine/machines"
machinedir="$destdir/$name"
origdir="$HOME/${name}-machine.orig"
if [ -d "$machinedir" ]; then
if [ -n "$NOCLOBBER" ]; then
ewarn "$name: cette machine existe déjà"
return
else
ewarn "$name: une machine du même nom existe déjà"
ask_yesno "Voulez-vous l'écraser?" N || die
[ -d "$origdir" ] && rm -rf "$origdir"
mv "$machinedir" "$origdir"
fi
fi
ac_set_tmpdir workdir
srcdir="$workdir/$name"
estep "Extraction de l'archive"
tar xzf "$archive" -C "$workdir"
[ -d "$srcdir" ] || die "L'archive n'est pas pour la machine $name"
estep "Corriger les chemins"
sed -i "\
s|DOCKER_MACHINE_HOME|$HOME/.docker/machine|g
" "$srcdir/config.json" || die
estep "Installation de la machine"
mkdir -p "$destdir"
mv "$srcdir" "$destdir"
if [ -d "$origdir" ]; then
enote "Une fois que la machine aura été testée, vous pouvez supprimer ce répertoire:
$origdir"
fi
ac_clean "$workdir"
}
# faut-il ignorer les machines existantes
NOCLOBBER=
action=
args=(
--help '$exit_with display_help'
-d,--dump,-x,--export,-s,--save action=dump
-l,--load,-i,--import action=load
-a,--all,--load-all,--import-all action=loadall
)
parse_args "$@"; set -- "${args[@]}"
if [ -z "$action" ]; then
case "$1" in
d|dump|x|export|s|save) action=dump; shift;;
l|load|i|import) action=load; shift;;
a|all|loadall|importall) action=loadall; shift;;
*) die "Vous devez spécifier l'action à effectuer";;
esac
fi
case "$action" in
dump)
dump_machine "$1"
;;
load)
for archive in "$@"; do
etitle "$archive"
load_machine "$archive"
eend
done
;;
loadall)
[ $# -gt 0 ] || set -- .
archives=()
for file in "$@"; do
if [ -d "$file" ]; then
NOCLOBBER=1
array_lsfiles files "$file" "*-machine.tar.gz"
array_extend archives files
else
archives+=("$file")
fi
done
for archive in "${archives[@]}"; do
etitle "$archive"
load_machine "$archive"
eend
done
;;
esac

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Pense-bête:
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
# [[external|http://site.com]] ---- {{monospace}}
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
# * dotlist ** sublist # numlist ## sublist
# {{{ |caption|c [img[title|filename]]
# pre text |!header|!header|h [img[filename]]
# }}} |cell|cell| [img[title|filename][link]]
# <<< |>|colspan| [img[filename][link]]
# blockquote |rowspan|one| [<img[filename]]
# <<< |~|two| [>img[filename]]
# >quote1 |left| right|
# >>quote2 |>| center |
# >>>quote3
##@creator: jclain
##@created: 09/03/2012 05:08
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: DefaultTiddlers
[[Main]]

View File

@ -1,16 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: EnsureVM
{{{
EnsureVM: s'assurer que les services sont lancés pour un type de virtualisation
USAGE
EnsureVM type
Les types supportés sont virtualbox et kvm (par défaut)
}}}

View File

@ -1,46 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Pense-bête:
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
# [[external|http://site.com]] ---- {{monospace}}
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
# * dotlist ** sublist # numlist ## sublist
# {{{ |caption|c [img[title|filename]]
# pre text |!header|!header|h [img[filename]]
# }}} |cell|cell| [img[title|filename][link]]
# <<< |>|colspan| [img[filename][link]]
# blockquote |rowspan|one| [<img[filename]]
# <<< |~|two| [>img[filename]]
# >quote1 |left| right|
# >>quote2 |>| center |
# >>>quote3
##@creator: jclain
##@created: 09/03/2012 05:08
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: Main
!Présentation
nutools est un ensemble d'utilitaires pour faciliter l'utililisation des Unixes, en particulier Linux, mais aussi MacOS X et Cygwin.
C'est aussi une librairie de scripts shell réutilisables ([[ulib]]) et une librairie de modules python réutilisables (pyulib)
!Prérequis
Python >= 2.3 et GNU Awk sont requis pour que toutes les fonctionnalités soient supportées.
* Sous Linux, lors de l'installation du package, les meilleurs efforts sont fait pour que ces packages soient installés.
* Sous MacOSX, il faut installer manuellement Fink, DarwinPorts ou Homebrew
! Outils
Chaque outil contient une aide intégrée. Il suffit de lancer l'outil avec l'argument {{{--help}}} pour avoir une aide détaillée.
* Déploiement d'un répertoire ou d'une archive
** [[uinst]]: Déploiement local
** [[mkusfx]]: Faire une archive auto-installable avec uinst
** [[ruinst]]: Déploiement distant avec uinst
** [[runs]]: Lancer un script avec le protocole RUNS
** [[rruns]]: Déploiement distant avec runs
* Librairie réutilisable de scripts shell
** [[uinc]]: Dépliage des inclusions dans un fichier
** [[ulibsync]]: Faire une copie locale pour un projet de ulib et/ou pyulib
* Autres outils
** [[udir]]: Gestion des paramètres d'un répertoire. Ces paramètres sont entre autres utilisés par uinst et uinc.

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Pense-bête:
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
# [[external|http://site.com]] ---- {{monospace}}
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
# * dotlist ** sublist # numlist ## sublist
# {{{ |caption|c [img[title|filename]]
# pre text |!header|!header|h [img[filename]]
# }}} |cell|cell| [img[title|filename][link]]
# <<< |>|colspan| [img[filename][link]]
# blockquote |rowspan|one| [<img[filename]]
# <<< |~|two| [>img[filename]]
# >quote1 |left| right|
# >>quote2 |>| center |
# >>>quote3
##@creator: jclain
##@created: 09/03/2012 05:08
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: MainMenu
[[GettingStarted]]

View File

@ -1,30 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: SKvm
{{{
SKvm: lancer une machine virtuelle kvm
USAGE
SKvm [options] vmName
SKvm {-l|-A|-g}
OPTIONS
-n Ne rien faire excepté s'assurer que les modules kvm sont chargés
-u Lancer l'opération avec les droits de l'utilisateur courant. Par défaut,
ce script tente d'acquérir les droits de root.
-l Lister les machines virtuelles
-s Démarrer la machine virtuelle (par défaut)
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché
-k Arrêter la machine virtuelle
-H Arrêter sauvagement la machine virtuelle
-r Redémarrer la machine virtuelle
-S Enregistrer l'état de la machine virtuelle
-A Arrêter toutes les machines virtuelles qui tournent actuellement
-g Afficher le gestionnaire de machines virtuelle
}}}

View File

@ -1,27 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: SVirtualBox
{{{
SVirtualBox: lancer une machine virtuelle VirtualBox
USAGE
SVirtualBox [options] vmName
OPTIONS
-n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
-l Lister les machines virtuelles
-s Démarrer la machine virtuelle (par défaut)
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché
-k Arrêter la machine virtuelle (par ACPI)
-p Mettre en veille la machine virtuelle (par ACPI)
-H Arrêter sauvagement la machine virtuelle
-R Redémarrer sauvagement la machine virtuelle
-S Enregistrer l'état de la machine virtuelle
-g Afficher le gestionnaire de machines virtuelle
}}}

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Pense-bête:
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
# [[external|http://site.com]] ---- {{monospace}}
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
# * dotlist ** sublist # numlist ## sublist
# {{{ |caption|c [img[title|filename]]
# pre text |!header|!header|h [img[filename]]
# }}} |cell|cell| [img[title|filename][link]]
# <<< |>|colspan| [img[filename][link]]
# blockquote |rowspan|one| [<img[filename]]
# <<< |~|two| [>img[filename]]
# >quote1 |left| right|
# >>quote2 |>| center |
# >>>quote3
##@creator: jclain
##@created: 09/03/2012 05:08
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: SiteSubtitle
Outils divers pour linux/macosx, et librairies pour bash

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Pense-bête:
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
# [[external|http://site.com]] ---- {{monospace}}
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
# * dotlist ** sublist # numlist ## sublist
# {{{ |caption|c [img[title|filename]]
# pre text |!header|!header|h [img[filename]]
# }}} |cell|cell| [img[title|filename][link]]
# <<< |>|colspan| [img[filename][link]]
# blockquote |rowspan|one| [<img[filename]]
# <<< |~|two| [>img[filename]]
# >quote1 |left| right|
# >>quote2 |>| center |
# >>>quote3
##@creator: jclain
##@created: 09/03/2012 05:08
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: SiteTitle
nutools

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Pense-bête:
# ''bold'' ==striked== __underline__ //italic// ^^super^^ ~~sub~~
# @@highlight@@ @@color:red;background-color:white; rouge sur noir@@
# ~NotAWikiWord [[force wikiword]] [[friendly name|WikiWord]]
# [[external|http://site.com]] ---- {{monospace}}
# !h1 !!h2 !!!h3 !!!!h4 !!!!!h5
# * dotlist ** sublist # numlist ## sublist
# {{{ |caption|c [img[title|filename]]
# pre text |!header|!header|h [img[filename]]
# }}} |cell|cell| [img[title|filename][link]]
# <<< |>|colspan| [img[filename][link]]
# blockquote |rowspan|one| [<img[filename]]
# <<< |~|two| [>img[filename]]
# >quote1 |left| right|
# >>quote2 |>| center |
# >>>quote3
##@creator: jclain
##@created: 09/03/2012 05:08
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: SiteUrl

View File

@ -1,12 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: _root
{{{
_root: devenir l'utilisateur root, avec 'sudo' si possible, ou 'su' si
'sudo' n'est pas installé
}}}

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: authftp
{{{
authftp: Se connecter avec ncftp sur un site FTP authentifié
Ce script est conçu pour les sites qui utilisent un proxy FTP pour les connexion
authentifiées.
USAGE
authftp [options] host login password [path]
OPTIONS
}}}

View File

@ -1,14 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: caturl
{{{
caturl: Afficher une url
USAGE
caturl <file.url|file.desktop|URL>
}}}

View File

@ -1,11 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: compileAndGo
{{{
compileAndGo: see http://Yost.com/computers/compileAndGo
}}}

View File

@ -1,27 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: fconv
{{{
fconv: convertir des fichiers dans un autre encoding
USAGE
fconv [-f src_enc] [ -t dest_enc] [/path/to/file]
OPTIONS
-f from
Encoding source. Si n'est pas spécifié ou vaut 'detect', l'encoding est
autodétecté.
-t to
Encoding destination. Doit être spécifié.
Cas particulier: si to vaut 'lf' ou 'crlf', from est ignoré, et seuls
les caractères de fin de lignes sont convertis.
-N Ne pas optimiser le calcul de l'encoding. Cette option n'est valide que
si -f n'est pas spécifié. On assume que tous les noms de fichiers n'ont
pas le même encoding. L'encoding from est donc recalculé à chaque fois.
-r inverser from et to, qui doivent être tous les deux spécifiés.
}}}

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: fnconv
{{{
fnconv: renommer des fichiers en changeant leur encoding
USAGE
fnconv [-f src_enc] [ -t dest_enc] [/path/to/file]
OPTIONS
-f from
Encoding source. Si n'est pas spécifié ou vaut 'detect', l'encoding est
autodétecté.
-t to
Encoding destination. Doit être spécifié.
-N Ne pas optimiser le calcul de l'encoding. Cette option n'est valide que
si -f n'est pas spécifié. On assume que tous les noms de fichiers n'ont
pas le même encoding. L'encoding from est donc recalculé à chaque fois.
-r inverser from et to, qui doivent être tous les deux spécifiés.
}}}

View File

@ -1,14 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: geturl
{{{
geturl: Télécharger un fichier avec wget ou curl
USAGE
geturl <file.url|file.desktop|URL> [wget options]
}}}

View File

@ -1,18 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: mkiso
{{{
mkiso: créer une image iso d'un répertoire
USAGE
mkiso [options] srcdir [dest.iso]
OPTIONS
-M, --hfs
créer une image hybride ISO/HFS
}}}

View File

@ -1,14 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: openurl
{{{
openurl: Ouvrir une URL dans un navigateur
USAGE
openurl <file.url|file.desktop|URL>
}}}

View File

@ -1,16 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: rmtildes
{{{
rmtildes: supprimer les fichiers *~ dans le répertoire courant
USAGE
rmtildes [dir [glob]]
Par défaut, dir==. et glob==*~
}}}

View File

@ -1,38 +0,0 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: ruinst
{{{
ruinst: Déploiement distant avec uinst
USAGE
ruinst [-H host] [-T tmproot] <file|archive|dir> [-- options de uinst]
OPTIONS
-C Ne pas faire le déploiement. Configurer uniquement la connexion par clé
sur les hôtes distants spécifiés pour le user spécifié. Il faut pouvoir
se connecter par mot de passe pour configurer la connexion par clé.
Si l'on veut configurer la connexion par clé pour le user root, mais que
ce n'est pas possible de se connecter par mot de passe avec le user root
sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant,
il est possible de faire la configuration avec '--configure root'. La
commande serait alors
ruinst -H user@host --configure root
-T tmproot
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
un /tmp minuscule de 16 Mo.
-S ssh
Spécifier le programme à utiliser pour la connection par ssh.
-H host
Spécifier un hôte distant sur lequel faire le déploiement. Plusieurs
options -H peuvent être spécifiées, ou alors on peut séparer plusieurs
hôtes par ':', e.g. -H host1:host2
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
user@host, e.g -H user@host
}}}

12
doc/tools/EnsureVM.md Normal file
View File

@ -0,0 +1,12 @@
# EnsureVM
~~~
EnsureVM: s'assurer que les services sont lancés pour un type de virtualisation
USAGE
EnsureVM type
Les types supportés sont virtualbox et kvm (par défaut)
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

36
doc/tools/SKvm.md Normal file
View File

@ -0,0 +1,36 @@
# SKvm
~~~
SKvm: lancer une machine virtuelle kvm
USAGE
SKvm [options] vmName
SKvm {-l|-A|-g}
OPTIONS
-n, --check
Ne rien faire excepté s'assurer que les modules kvm sont chargés
-u, --user
Lancer l'opération avec les droits de l'utilisateur courant. Par défaut,
ce script tente d'acquérir les droits de root.
-l, --list
Lister les machines virtuelles
-s, --start
Démarrer la machine virtuelle (par défaut)
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché
-k, --stop
Arrêter la machine virtuelle
-H, --destroy
Arrêter sauvagement la machine virtuelle
-r, --restart
Redémarrer la machine virtuelle
-S, --managed-save
Enregistrer l'état de la machine virtuelle
-A, --stop-all
Arrêter toutes les machines virtuelles qui tournent actuellement
-g, --gui
Afficher le gestionnaire de machines virtuelle
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

44
doc/tools/SVirtualBox.md Normal file
View File

@ -0,0 +1,44 @@
# SVirtualBox
~~~
SVirtualBox: lancer une machine virtuelle VirtualBox
USAGE
SVirtualBox [options] vmName
OPTIONS
-n, --nop
Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés
-l, --list
Lister les machines virtuelles
-s, --start
Démarrer la machine virtuelle. C'est l'action par défaut.
Si le nom de la machine virtuelle n'est pas spécifiée, un menu est
affiché
-x, --gui
-b, --headless
--separate
Ces options ne sont valides qu'avec -s et permettent de spécifier le
type de démarrage: 'gui' permet d'afficher une fenêtre complète dans
laquelle l'accélération graphique est supportée, headless démarre la
machine en tâche de fond, et separate affiche une fenêtre qui attaque la
machine démarrée en tâche de fond. --separate est l'option par défaut.
-k, -t, --stop
Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r
permettent de spécifier le type d'arrêt de la machine virtuelle
-p, --sleep
Mettre en veille la machine virtuelle (par ACPI)
-H, --poweroff
Arrêter sauvagement la machine virtuelle
-R, --reset
Redémarrer sauvagement la machine virtuelle
-S, --savestate
Enregistrer l'état de la machine virtuelle
-r, --rrestart
Arrêter la machine, restaurer l'état du dernier snapshot puis la
relancer.
-g, --gui
Afficher le gestionnaire de machines virtuelle
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

8
doc/tools/_root.md Normal file
View File

@ -0,0 +1,8 @@
# _root
~~~
_root: devenir l'utilisateur root, avec 'sudo' si possible, ou 'su' si
'sudo' n'est pas installé
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

95
doc/tools/apacheconfig.md Normal file
View File

@ -0,0 +1,95 @@
# apacheconfig
~~~
apacheconfig: Gérer la configuration d'un serveur web apache
USAGE
apacheconfig -c
apacheconfig -t -- args...
OPTIONS
-c, --create
Créer un nouveau répertoire de configuration pour un hôte
-d, --destdir DESTDIR[=apacheconfig]
Nom du répertoire local de configuration.
-f,--full
--partial
Indiquer respectivement que la configuration est complète ou partielle.
Avec la configuration complète, le serveur peut être complètement
configuré avec tous les fichiers présents. Avec la configuration
partielle, uniquement les informations spécifiques à un service en
particulier sont disponibles.
Cette option est utilisée avec --create. Par défaut, la configuration
est partielle.
Pour le moment, la seule différence est que --full crée un fichier de
configuration nommé .apacheconfig alors que --partial crée un fichier
nommé apacheconfig.conf qui est visible et donc découvrable et éditable
plus facilement
-t, --template [OPT]
Gérer les fichiers du répertoire local avec templatectl. La valeur de
cette option est utilisée comme argument court pour l'invocation de
templatectl, e.g
apacheconfig -tm args
est équivalent à
templatectl -m args
Les arguments qui restent sont passés tels quels à templatectl
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
directement
--help-template
Afficher l'aide concernent la gestion des templates.
Equivalent à -t -- --help
-h, --host HOST
Spécifier l'hôte. Equivalent à -v host=HOST
--sysname SYSNAME
--sysdist SYSDIST
-s, --sysver SYSVER
Spécifier la distribution pour laquelle synchroniser le template. Par
défaut, choisir les valeurs correspondantes au système courant.
Les options -7 et -8 sont des aliases respectivement pour -s wheezy et
-s jessie, parce que les fichiers par défaut ont changé à partir de
debian jessie.
-u, --update, --deploy
Mettre à jour la configuration système à partir du répertoire local.
Lors du déploiement de la configuration, les valeurs des variables
dynamiques sont remplacées dans les fichiers destination.
Les arguments qui restent sont passés tels quels à apache_autoconf
-N, --network-config
Mettre aussi à jour la configuration réseau.
-r, --certsdir CERTSDIR
Spécifier le cas échéant le répertoire contenant les certificats à
déployer. Cet argument est requis si le répertoire certsconf/ existe,
sauf si les certificats sont déjà déployés.
--localhosts
Créer dans le fichier /etc/hosts tous les noms d'hôte ayant un suffixe
.local mentionnés dans les fichiers de site. Cette option est utile pour
le développement et les tests.
-C, --one-conf CONF
Ne déployer que le fichier de configuration spécifié. Cette option est
utilisée avec --deploy et est utile pour le développement et les tests.
-M, --one-module MODULE
Ne déployer que le fichier de module spécifié. Cette option est utilisée
avec --deploy et est utile pour le développement et les tests.
-S, --one-site SITE
Ne déployer que le fichier de site spécifié. Cette option est utilisée
avec --deploy ou --localhosts et est utile pour le développement et les
tests.
-k, --new-site HOST.TLD
Créer une définition pour un nouveau site à partir des fichiers du
répertoires templates/
-K, --new-site-templatedir TEMPLATEDIR
Spécifier le répertoire source pour les templates de site utilisés par
l'option --new-site. Par défaut, utiliser le répertoire templates/ situé
dans le répertoire de configuration.
Si TEMPLATEDIR est un nom simple sans séparateur de chemin '/' et qu'un
répertoire templates/TEMPLATEDIR existe, alors prendre ce répertoire-là
comme source.
--new-site-force
Avec --new-site, utiliser le nom d'hôte fourni même s'il n'est pas
pleinement qualifié
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

35
doc/tools/authftp.md Normal file
View File

@ -0,0 +1,35 @@
# authftp
~~~
authftp: Se connecter sur un site FTP authentifié
Ce script nécessite ncftp. Il est conçu pour faciliter l'accès à des sites FTP
s'il est requis d'y accéder par un proxy FTP pour les connexion authentifiées.
USAGE
authftp [options] host login password [path]
OPTIONS
-p, --proxy
-n, --noproxy
Forcer l'utilisation, resp. ne pas utiliser, le proxy FTP (i.e. faire la
connexion directement)
-l, --lftp
Se connecter avec lftp au lieu de ncftp. Le fonctionnement n'est pas
garanti si l'on utilise un proxy FTP.
-o OPTION
Ajouter une option à la commande lancée. Si l'option prend un argument,
il faut doubler l'option -o, e.g.
authftp -l -o -e -o 'mirror remote local' host login pass
Dans cet exemple, l'option -e de lftp est utilisée pour faire un miroir
local du répertoire remote.
--tls
Indiquer que la connexion se fera en TLS. Implique --lftp puisque ncftp
ne le supporte pas.
note: A cause d'une limitation de lftp, ce n'est pas possible de se connecter
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
façon dont le proxy ftp est configuré, il n'est pas possible de se connecter
avec un mot de passe qui contient le caractère @
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

16
doc/tools/caturl.md Normal file
View File

@ -0,0 +1,16 @@
# caturl
~~~
caturl: Afficher une url
USAGE
caturl <file.url|file.desktop|URL>
OPTIONS
-c, --check
Vérifier que le fichier est valide
-g, --get
Attaquer l'url spécifiée avec curl
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

28
doc/tools/chrono.py.md Normal file
View File

@ -0,0 +1,28 @@
# chrono.py
~~~
usage: chrono.py [options] [TIMEOUT]
Afficher un chronomètre
positional arguments:
TIMEOUT (valeur vide)
chronomètre qui démarre à 0:00 et ne s'arrête pas
H:M:S (heures:minutes:secondes)
ou M:S (minutes:secondes)
ou M (minutes)
minuteur qui démarre à H:M:S et fait un décompte jusqu'à 0:00. A la fin
du décompte, une sonnerie retentit.
@H[:M[:S]]
minuteur qui fonctionne comme précédemment, sauf qu'on spécifie l'heure
d'arrivée, et que la durée est calculée automatiquement
optional arguments:
-h, --help show this help message and exit
-n, --no-autostart Ne pas démarrer automatiquement le décompte même si TIMEOUT est spécifié.
-s, --autostart Forcer le démarrage automatique du décompte, même si TIMEOUT n'est pas spécifié.
Si TIMEOUT est spécifié, par défaut le décompte démarre automatiquement.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -0,0 +1,7 @@
# compileAndGo
~~~
compileAndGo: see http://Yost.com/computers/compileAndGo
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

29
doc/tools/create-user.md Normal file
View File

@ -0,0 +1,29 @@
# create-user
~~~
create-user: créer un utilisateur sudoer et lui installer une clé publique ssh
USAGE
create-user user [-p pubkey]
OPTIONS
-p, --pkfile PKFILE
Installer la clé publique ssh contenue dans le fichier spécifié. Par
défaut, prendre le fichier ~/.ssh/id_rsa.pub de l'utilisateur courant.
-s, --pkstring PUBKEY
Installer la clé publique ssh spécifiée. Cette option avancée n'est pas
utilisée en temps normal. Elle a la priorité sur l'option --pkfile
-l, --luser
Ne pas donner à l'utilisateur le droit de sudoer.
-h, --host [USER@]HOST
Créer l'utilisateur sur l'hôte distant spécifié. Si l'utilisateur
distant n'est pas root, il doit être sudoer.
-T, --tmproot TMPROOT
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
/var/tmp. Cette option est utile pour certains serveurs, qui ont un /tmp
minuscule.
-S, --ssh SSH
Spécifier le programme à utiliser pour la connection par ssh.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

14
doc/tools/cssh.md Normal file
View File

@ -0,0 +1,14 @@
# cssh
~~~
cssh: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant
USAGE
cssh [user@]host [options]
En principe, hormis l'argument user@host, il ne faudrait spécifier que des
options. Dans le cas où d'autres arguments seraient spécifiés, les meilleurs
efforts sont faits pour lancer ces commandes avant screen.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

31
doc/tools/doinplace.md Normal file
View File

@ -0,0 +1,31 @@
# doinplace
~~~
doinplace: filtrer en place un fichier à travers une suite de commandes
USAGE
doinplace FILE COMMAND [ARGS...]
Si on utilise une commande avec des options, penser à utliser '--' pour séparer
les options de ce script des options de la commande
En plus des commandes systèmes, il est possible d'utiliser toute fonction de
nutools qui effectue des traitement sur un flux comme stripnl, filter_empty,
merge_contlines, filter_comment, filter_conf, etc. Les fonctions nl2lf, nl2crlf,
nl2cr, latin1compat et noaccents sont aussi disponibles par convenance.
OPTIONS
-p, --evalp
Evaluer la commande avec evalp(), ce qui permet de chainer plusieurs
commandes en les séparant par //. Cette option est automatiquement
activée si ce script est lancé avec le nom doinplacex
-g, --ignore-error, --replace-always
Normalement, le fichier n'est pas remplacé si la commande retourne une
erreur. Avec cette option, le fichier est remplacé quel que soit le code
de retour de la commande. A utiliser par exemple avec des commandes
comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif.
Cette option est automatiquement activée si ce script est lancé avec le
nom doinplacef
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

26
doc/tools/dumpclients.md Normal file
View File

@ -0,0 +1,26 @@
# dumpclients
~~~
dumpclients: afficher les connexions TCP entrantes sur un port
USAGE
dumpclients [options] port
OPTIONS
-4, --only-tcp
-6, --only-tcp6
Se limiter au protocole spécifié. Par défaut, afficher toutes les
connexions, qu'elles soient en IPv4 ou en IPv6
-a, --all
Afficher tous les sockets, y compris les ports d'écoute. Par défaut,
seules les sockets ouvertes sont affichées.
-n, --numeric
Afficher uniquement les adresses IP au lieu du nom d'hôte.
-z, --allow-no-port
Ne pas exiger que le port soit spécifié
--show none,ip,port,state
Spécifier d'afficher comme informations supplémentaire: rien, l'adresse
ip, le port et/ou l'état. Par défaut, afficher le port et l'état.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

94
doc/tools/em.md Normal file
View File

@ -0,0 +1,94 @@
# em
~~~
Usage: /usr/bin/emacs [OPTION-OR-FILENAME]...
Run Emacs, the extensible, customizable, self-documenting real-time
display editor. The recommended way to start Emacs for normal editing
is with no options at all.
Run M-x info RET m emacs RET m emacs invocation RET inside Emacs to
read the main documentation for these command-line arguments.
Initialization options:
--batch do not do interactive display; implies -q
--chdir DIR change to directory DIR
--daemon start a server in the background
--debug-init enable Emacs Lisp debugger for init file
--display, -d DISPLAY use X server DISPLAY
--no-desktop do not load a saved desktop
--no-init-file, -q load neither ~/.emacs nor default.el
--no-shared-memory, -nl do not use shared memory
--no-site-file do not load site-start.el
--no-site-lisp, -nsl do not add site-lisp directories to load-path
--no-splash do not display a splash screen on startup
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY
--quick, -Q equivalent to:
-q --no-site-file --no-site-lisp --no-splash
--script FILE run FILE as an Emacs Lisp script
--terminal, -t DEVICE use DEVICE for terminal I/O
--user, -u USER load ~USER/.emacs instead of your own
Action options:
FILE visit FILE using find-file
+LINE go to line LINE in next FILE
+LINE:COLUMN go to line LINE, column COLUMN, in next FILE
--directory, -L DIR prepend DIR to load-path (with :DIR, append DIR)
--eval EXPR evaluate Emacs Lisp expression EXPR
--execute EXPR evaluate Emacs Lisp expression EXPR
--file FILE visit FILE using find-file
--find-file FILE visit FILE using find-file
--funcall, -f FUNC call Emacs Lisp function FUNC with no arguments
--insert FILE insert contents of FILE into current buffer
--kill exit without asking for confirmation
--load, -l FILE load Emacs Lisp FILE using the load function
--visit FILE visit FILE using find-file
Display options:
--background-color, -bg COLOR window background color
--basic-display, -D disable many display features;
used for debugging Emacs
--border-color, -bd COLOR main border color
--border-width, -bw WIDTH width of main border
--color, --color=MODE override color mode for character terminals;
MODE defaults to `auto', and
can also be `never', `always',
or a mode name like `ansi8'
--cursor-color, -cr COLOR color of the Emacs cursor indicating point
--font, -fn FONT default font; must be fixed-width
--foreground-color, -fg COLOR window foreground color
--fullheight, -fh make the first frame high as the screen
--fullscreen, -fs make the first frame fullscreen
--fullwidth, -fw make the first frame wide as the screen
--maximized, -mm make the first frame maximized
--geometry, -g GEOMETRY window geometry
--no-bitmap-icon, -nbi do not use picture of gnu for Emacs icon
--iconic start Emacs in iconified state
--internal-border, -ib WIDTH width between text and main border
--line-spacing, -lsp PIXELS additional space to put between lines
--mouse-color, -ms COLOR mouse cursor color in Emacs window
--name NAME title for initial Emacs frame
--no-blinking-cursor, -nbc disable blinking cursor
--reverse-video, -r, -rv switch foreground and background
--title, -T TITLE title for initial Emacs frame
--vertical-scroll-bars, -vb enable vertical scroll bars
--xrm XRESOURCES set additional X resources
--parent-id XID set parent window
--help display this help and exit
--version output version information and exit
You can generally also specify long option names with a single -; for
example, -batch as well as --batch. You can use any unambiguous
abbreviation for a --option.
Various environment variables and window system resources also affect
the operation of Emacs. See the main documentation.
Report bugs to bug-gnu-emacs@gnu.org. First, please see the Bugs
section of the Emacs manual or the file BUGS.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

60
doc/tools/fconv.md Normal file
View File

@ -0,0 +1,60 @@
# fconv
~~~
fconv: convertir un fichier ou les fichiers d'un répertoire
USAGE
fconv -f FILE [cmds...]
fconv FILE [cmds...]
Une ou plusieurs commandes peuvent être spécifiées, séparées par //
La commande par défaut est 'lf'
Si des commandes utilisant des options sont utilisées, penser à séparer les
options de fconv avec --
OPTIONS
-N, --detect-always
Pour la commande conv, ne pas optimiser le calcul de l'encoding. Cette
option n'est valide que si src_enc n'est pas spécifié. On assume que
tous les fichiers n'ont pas le même encoding: l'encoding src_enc est
donc recalculé à chaque fois.
-r, --reverse
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
tous les deux spécifiés.
-f, --file FILE
Spécifier le fichier ou le répertoire concerné par la conversion. Les
aliases -d et --dir sont aussi reconnus.
Si cette option n'est pas spécifiée, le premier argument est considéré
comme le nom du fichier ou du répertoire à convertir. Par défaut,
convertir l'entrée standard.
Si un répertoire est spécifié, tous les fichiers de ce répertoire et de
ses sous-répertoires sont recherchés de façon récursive, sans limite de
profondeur. Ensuite, chacun de ces fichiers est converti.
--show-cmd
Afficher la commande qui serait exécutée
COMMANDES
c, conv dest_enc [src_enc]
Convertir le fichier dans un autre encoding.
dest_enc est l'encoding destination. Il doit être spécifié.
src_enc est l'encoding source. S'il n'est pas spécifié ou vaut 'detect',
il est autodétecté.
U, utf8 [src_enc]
Equivalent à conv utf8 src_enc
L, latin1 [src_enc]
Equivalent à conv latin1 src_enc
lf
crlf
cr
Convertir respectivement les caractères de fin de ligne en LF, CR/LF ou CR
lc, latin1compat
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
na, noaccents
Transformer les caractères accentués en caractères non accentués
sort [-u]
Trier le fichier avec la commande sort. Attention! Il ne faut utiliser
que les options de sort qui agissent sur un flux e.g. -u pour trier les
lignes de façon unique.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

54
doc/tools/fnconv.md Normal file
View File

@ -0,0 +1,54 @@
# fnconv
~~~
fnconv: renommer un fichier ou les fichiers d'un répertoire
USAGE
fnconv -f FILE [cmds...]
fnconv FILE [cmds...]
Une ou plusieurs commandes peuvent être spécifiées, séparées //
La commande par défaut est 'fixcase'
OPTIONS
-N, --detect-always
Pour la commande conv, ne pas optimiser le calcul de l'encoding. Cette
option n'est valide que si src_enc n'est pas spécifié. On assume que
tous les fichiers n'ont pas le même encoding: l'encoding src_enc est
donc recalculé à chaque fois.
-r, --reverse
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
tous les deux spécifiés.
-f, --file FILE
Spécifier le fichier ou le répertoire concerné par le renommage. Les
aliases -d et --dir sont aussi reconnus.
Si cette option n'est pas spécifiée, le premier argument est considéré
comme le nom du fichier ou du répertoire à renommer.
Si un répertoire est spécifié, le traitement est appliqué à tous les
fichiers et répertoires de façon récursive, sans limite de profondeur.
--show-cmd
Afficher la commande qui serait exécutée
COMMANDES
C, conv dest_enc [src_enc]
Convertir le nom du fichier dans un autre encoding.
dest_enc est l'encoding destination. Il doit être spécifié.
src_enc est l'encoding source. S'il n'est pas spécifié ou vaut 'detect',
il est autodétecté.
U, utf8 [src_enc]
Equivalent à conv utf8 src_enc
L, latin1 [src_enc]
Equivalent à conv latin1 src_enc
lc, latin1compat
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
na, noaccents
Transformer les caractères accentués en caractères non accentués
l, lowercase
Transfomer le nom en minuscule
u, uppercase
Transformer le nom en majuscule
f, fixcase
Transformer le nom en minuscule s'il est entièrement en majuscule
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

69
doc/tools/fndate.md Normal file
View File

@ -0,0 +1,69 @@
# fndate
~~~
fndate: manipuler des noms de fichier pour les dater
USAGE
fndate (FILE|DIR)s...
fndate -k SRCs... [DESTDIR]
fndate -m SRCs... [DESTDIR]
fndate -c COMMAND [ARGs...]
OPTIONS
--create-or-rename
Créer un nouveau fichier (option -f) ou créer un nouveau répertoire
(option -d), ou renommer un fichier existant sans le changer de
répertoire. C'est l'option par défaut.
-f, --create-file
Créer un nouveau fichier. Cette option est ignorée si le fichier ou le
répertoire spécifié existe. C'est la valeur par défaut
-d, --create-dir
Créer un nouveau répertoire. Cette option est ignorée si le fichier ou
le répertoire spécifié existe.
-k, --copy
Copier le fichier SRC vers la destination DESTDIR qui vaut par défaut le
répertoire courant si un seul fichier source est spécifié. Si plusieurs
fichiers sources sont spécifiés, il faut absolument spécifier un
répertoire destination. Dans la destination, les fichiers sont nommés
avec la date en préfixe.
-m, --move
Déplacer le fichier SRC vers la destination DESTDIR qui vaut par défaut
le répertoire courant si un seul fichier source est spécifié. Si
plusieurs fichiers sources sont spécifiés, il faut absolument spécifier
un répertoire destination. Dans la destination, les fichiers sont nommés
avec la date en préfixe.
-c, --cmd
Les arguments sont une commande à lancer. Dans les argument, PLACEHOLDER
est remplacé par la date. Si le PLACEHOLDER n'est trouvé dans aucun des
arguments, alors ajouter la date à la fin de la commande. Par exemple,
voici comment émuler l'option -k
fndate -c cp src dest/~~
--string
Remplacer dans chaque argument le placeholder par la date et afficher le
résultat.
-P, --placeholder PLACEHOLDER
Dans le nom spécifié, remplacer PLACEHOLDER par la date. Par défaut,
PLACEHOLDER vaut ~~. Si le nom spécifié ne contient pas le PLACEHOLDER,
il est placé au début.
-@, --force-date DATE
Dans le nom spécifié, si la date est déjà présente, forcer son
remplacement par la valeur spécifiée. Par défaut, le fichier n'est pas
modifié si la date est déjà présente.
-F, --format FORMAT
Spécifier le format de la date à insérer dans le nom du fichier. Par
défaut, FORMAT vaut 'YYMMDD-'
Les formats valides sont:
YYYY année sur 4 chiffres
YY année sur 2 chiffres
MM mois sur 2 chiffres
DD jour sur 2 chiffres
Tous les autres caractères sont pris tels-quels
-s, --short
Equivalent à -F YYMMDD --autof
-l, --long
Equivalent à -F YYYMMDD --autof
--autof
Option non (pas encore) documentée
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

80
doc/tools/foreach.md Normal file
View File

@ -0,0 +1,80 @@
# foreach
~~~
foreach: lancer une commande pour un ensemble d'arguments
USAGE
foreach [options] [VAR=]expr cmd...
foreach [options] [VAR=]items... -- cmd...
La commande est lancée avec la variable 'VAR', qui vaut par défaut 'item',
définie à la valeur courante de l'énumération. De plus, la variable 'index'
reçoit une valeur incrémentale commençant à 0.
La deuxième syntaxe appelée syntaxe alternative permet de spécifier un ensemble
d'éléments directement, mais nécessite l'utilisation du séparateur '--' pour
identifier où s'arrête la liste des éléments.
En plus de VAR, les variables file, dir, name, basename, ext et dotext sont
définies. Elle valent respectivement le chemin absolu du fichier, le répertoire
absolu du fichier, le nom du fichier, le nom de base sans extension, l'extension
sans le point et l'extension avec le point, e.g pour item=dir/file.ext on a
file=/path/to/dir/file.ext, dir=/path/to/dir, name=file.ext, basename=file,
ext=ext, dotext=.ext
Les 3 exemples suivants sont équivalents:
foreach '*.c' cp %item dest/dir
foreach item='*.c' cp %item dest/dir
foreach *.c -- cp %item dest/dir
OPTIONS
-b, --basedir BASEDIR
Chercher les expressions -d, -f, -a à partir de BASEDIR au lieu du
répertoire courant.
-d, --dir
-f, --file
-a, --all
-s, --string
Ces options permettent de spécifier le type d'expression et la façon de
les traiter. Avec -d, faire la correspondance de l'expression sur les
répertoires uniquement. Avec -f, faire la correspondance sur les fichier
uniquement. Avec -a, faire la correspondance sur les répertoires et les
fichiers. Avec -s, évaluer l'expression avec la fonction 'eval' du
shell.
Si la syntaxe alternative est utilisée, le premier élément est évalué
conformément à ces options *si et seulement s'il* est précédé d'une
chaine 'VAR='. Les autres éléments sont pris tels-quels. e.g:
cette commande affiche uniquement la chaine '*.c':
foreach '*.c' --
alors que celle-ci liste les fichiers qui ont l'extension '.c':
foreach 'item=*.c' --
-p, --parent
Pour chaque fichier/répertoire, se placer dans le répertoire parent
avant de lancer la commande. item est aussi modifié pour ne plus
contenir que le nom de la cible (qui est désormais dans le répertoire
courant)
Cette option a la priorité sur --go
-g, --go
Si la cible est un répertoire, en faire le répertoire courant avant de
lancer la commande. Si la cible est un fichier, faire comme --parent et
se placer dans le répertoire du fichier avant de lancer la commande.
Dans les deux cas, item est modifié pour ne plus contenir que le nom de
la cible, soit '.' pour le répertoire courant, soit le nom du fichier
dans le répertoire courant.
Si cette option est mentionnée seule, elle implique --dir
-x, --expand
-n, --no-expand
Reconnaitre et traiter (resp. ne pas reconnaitre) la syntaxe %var dans
les arguments. C'est le cas par défaut, ce qui permet de simplifier
l'écriture d'une ligne de commande. Pour écrire le caractère '%', il
suffit de le doubler e.g %%item
Si l'expansion est désactivée, il faut protéger le caractère $ pour
qu'il soit traité, e.g, avec les examples ci-dessus:
foreach -n '*.c' 'cp "$item" dest/dir'
-t, --title
--no-title
Afficher (resp. ne pas afficher) chaque correspondance avant de lancer
la commande. Par défaut, l'affichage est effectué.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

10
doc/tools/geturl.md Normal file
View File

@ -0,0 +1,10 @@
# geturl
~~~
geturl: Télécharger un fichier avec wget ou curl
USAGE
geturl <file.url|file.desktop|URL> [wget options]
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # mkRewriteRules
##@creator: jclain
##@created: 15/03/2012 22:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: mkRewriteRules
{{{ ~~~
mkRewriteRules: Créer un fichier de redirections pour Apache à partir d'un certain mkRewriteRules: Créer un fichier de redirections pour Apache à partir d'un certain
nombre de règles nombre de règles
@ -83,4 +77,6 @@ proxy), ou si le mode de réécriture requière l'utilisation d'un proxy.
Dans les exemples donnés ci-dessus, $URL est l'url générée par la réécriture, Dans les exemples donnés ci-dessus, $URL est l'url générée par la réécriture,
et $proxy_acls la valeur du champ proxy_acls spécifiée ci-dessus. et $proxy_acls la valeur du champ proxy_acls spécifiée ci-dessus.
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

21
doc/tools/mkiso.md Normal file
View File

@ -0,0 +1,21 @@
# mkiso
~~~
mkiso: créer une image iso d'un répertoire
USAGE
mkiso [options] srcdir [dest.iso]
OPTIONS
-M, --hfs
créer une image hybride ISO/HFS
-V, --volume
Nom du volume. Par défaut, prendre le nom de base du répertoire
d'origine. La taille est de 32 caractères max.
-A, --application
Description de l'application qui est sur l'image créée. Par défaut,
prendre le nom de base du répertoire d'origine. La taille est de 128
caractères max.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # mkurl
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: mkurl
{{{ ~~~
mkurl: Enregistrer une url dans un fichier raccourci mkurl: Enregistrer une url dans un fichier raccourci
USAGE USAGE
@ -17,4 +11,6 @@ Par défaut, l'url est enregistrée dans un fichier homepage.url
Mais il est possible de spécifier un fichier avec l'extension .url pour un Mais il est possible de spécifier un fichier avec l'extension .url pour un
raccourci utilisable aussi sous Windows, ou avec l'extension .desktop pour raccourci utilisable aussi sous Windows, ou avec l'extension .desktop pour
compatibilité avec le standard XDG compatibilité avec le standard XDG
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # mkusfx
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: mkusfx
{{{ ~~~
mkusfx: Créer une archive auto-extractible qui installe son contenu avec uinst mkusfx: Créer une archive auto-extractible qui installe son contenu avec uinst
USAGE USAGE
@ -32,4 +26,6 @@ OPTIONS
Spécifier que l'archive doit pouvoir s'installer même sur un système sur Spécifier que l'archive doit pouvoir s'installer même sur un système sur
lequel nutools n'est pas installé. Cette archive contiendra une copie lequel nutools n'est pas installé. Cette archive contiendra une copie
locale de ulib et uinst.sh locale de ulib et uinst.sh
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

26
doc/tools/mocifs.md Normal file
View File

@ -0,0 +1,26 @@
# mocifs
~~~
mocifs: Monter un partage Windows/Samba/CIFS
USAGE
mocifs [user@]host[/path] [mountpoint]
Par défaut, le répertoire distant est montée sur un répertoire avec le même nom
de base que l'hôte. Si le répertoire distant est déjà monté, il est démonté.
Les options -M et -U permettent de modifier le comportement par défaut.
OPTIONS
-M
Forcer le montage
-U
Forcer le démontage
-o OPTIONS
Ajouter les options spécifiées à la commande de montage mount.cifs
-u USERNAME
-p PASSWORD
-c USERNAME:PASSWORD
Spécifier les credentials à utiliser pour la connexion
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

40
doc/tools/modav.md Normal file
View File

@ -0,0 +1,40 @@
# modav
~~~
modav: Monter un répertoire sur un hôte distant avec davfs
USAGE
modav http[s]://host[/path] [mountpoint]
Par défaut, le répertoire distant est montée sur un répertoire avec le même nom
de base que l'hôte. Si le répertoire distant est déjà monté, il est démonté.
Les options -M et -U permettent de modifier le comportement par défaut.
OPTIONS
-M
Forcer le montage
-U
Forcer le démontage
-o OPTIONS
Ajouter les options spécifiées à la commande de montage
-u USERNAME
-p PASSWORD
-c USERNAME:PASSWORD
Si les credentials à utiliser ne sont pas configuré dans le fichier
/etc/davfs2/secrets, cette option permet de les spécifier. Si cette
option est utilisée, il est possible de rajouter
ask_auth 0
dans le fichier /etc/davfs2/davfs2.conf pour éviter le conflit qui se
produit quand des informations sont demandées interactivement. C'est le
cas par exemple si une connexion en https est faite et que la chaine de
certification n'est pas configurée. Pour mémoire, cela se fait avec
servercert myCAs.pem
dans le fichier /etc/davfs2/davfs2.conf
Bien entendu, il est préférable de configurer les credentials dans le
fichier /etc/davfs2/secrets avec la syntaxe
url username password
ou
mountpoint username password
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

20
doc/tools/moiso.md Normal file
View File

@ -0,0 +1,20 @@
# moiso
~~~
moiso: Monter une image ISO
USAGE
moiso image.iso [mountpoint]
Par défaut, l'image iso est montée sur un répertoire avec le même nom de base.
Si l'image est déjà montée, elle est démontée. Les options -m et -u permettent
de modifier le comportement par défaut.
OPTIONS
-m
Forcer le montage
-u
Forcer le démontage
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

29
doc/tools/mossh.md Normal file
View File

@ -0,0 +1,29 @@
# mossh
~~~
mossh: Monter un répertoire sur un hôte distant avec sshfs
USAGE
mossh [user@]host[:/path] [mountpoint]
Par défaut, le répertoire distant est montée sur un répertoire avec le même nom
de base que l'hôte. Si le répertoire distant est déjà monté, il est démonté.
Les options -M et -U permettent de modifier le comportement par défaut.
OPTIONS
-M
Forcer le montage
-U
Forcer le démontage
-o OPTIONS
Ajouter les options spécifiées à la commande de montage
-s
Equivalent à -o allow_other ou -o allow_root selon que l'on est root ou
non
-u USER
Spécifier le user pour la connexion distante, s'il n'est pas possible de
le spécifier dans l'url. En cas de conflit, la valeur dans l'url est
prioritaire par rapport à cette option.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

65
doc/tools/mysqlcsv.md Normal file
View File

@ -0,0 +1,65 @@
# mysqlcsv
~~~
mysqlcsv: Faire une requête MySQL et formater la sortie pour traitement avec awkcsv
USAGE
mysqlcsv [query [db]] [-- mysql options]
query est la requête sql à exécuter. Si query n'est pas spécifiée, la(les)
requête(s) sql sont prises sur l'entrée standard, ou depuis un fichier
si l'option -f est spécifiée.
db est le nom de la base de données. Cette argument n'est lu que si le nom
de la base de donnée n'est ni spécifié dans le fichier de configuration,
ni spécifié avec l'option -D
OPTIONS
-h, --host HOST
-P, --port PORT
-u, --user USER
-pPASSWORD
-D, --database DATABASE
Informations de connexion à la base de données
-C, --config CONFIG
Prendre les informations de connexion depuis le fichier spécifié.
Le fichier doit être de la forme
host=HOST
#post=3306
user=USER
password=PASS
#database=DB
#query=QUERY
Les variables port, database et query sont facultatives.
Les valeurs définies dans ce fichier sont prioritaires par rapport à
celles qui auraient été spécifiées sur la ligne de commande.
Utiliser password=--NOT-SET-- s'il faut se connecter sans mot de passe
Cette option peut être utilisée plusieurs fois, auquel cas les fichiers
sont chargés dans l'ordre.
--profile PROFILE
La variable $PROFILE est définie avec la valeur spécifiée avant de
sourcer les fichiers de configuration. Cela permet d'avoir des fichiers
de configuration qui calculent dynamiquement les paramètres en fonction
de la valeur du profil.
-N, --no-headers
Ne pas afficher les en-têtes
-c, --force
Continuer le traitement même en cas d'erreur
-r, --raw
Ne pas autoriser mysql à mettre en échappement certaines valeurs
retournées par le serveur. Par défaut, les transformations suivantes
sont effectuées:
newline --> \n
tab --> \t
nul --> \0
\ --> \\
-n, --nulls
Transformer dans le flux en sortie les valeurs NULL en chaines vides
-f, --input INPUT
Lire la requête depuis le fichier input au lieu de le lire depuis la
ligne de commande ou l'entrée standard. Ne pas spécifier cette option
ou utiliser '-' pour lire depuis l'entrée standard.
Cette option est ignorée si la requête est spécifiée parmi les
arguments.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

108
doc/tools/mysqlloadcsv.md Normal file
View File

@ -0,0 +1,108 @@
# mysqlloadcsv
~~~
mysqlloadcsv: Charger une table MySQL avec un fichier csv
USAGE
mysqlloadcsv [db.]table [fields...] [-- mysql options]
db est le nom de la base de données
table est le nom de la table à charger
fields est la liste des colonnes. Si cette valeur est spécifiée, il faudra
peut-être utiliser l'option -s pour ignorer le cas échéant la ligne des
en-têtes dans le fichier en entrée. Sinon, les colonnes à utiliser sont
calculées à partir du fichier en entrée.
Dans les données en entrées, qui doivent être en UTF8, les conversions suivantes
sont effectuées par MySQL:
\0 --> <caractère NUL>
\b --> <backspace>
\n --> <newline>
\r --> <carriage return>
\t --> <tab>
\Z --> Ctrl+Z
\N --> NULL
OPTIONS
-h, --host host
-P, --port port
-u, --user user
-ppassword
Informations de connexion à la base de données
-C, --config CONFIG
Prendre les informations de connexion depuis le fichier spécifié.
Le fichier doit être de la forme
host=HOST.TLD
#post=3306
user=USER
password=PASS
#dbtable=DB.TABLE
#fields=(FIELDS...)
# Il est possible aussi de spécifier DB et TABLE séparément:
#database=DB
#table=TABLE
Les variables port, dbtable et fields sont facultatives.
Les valeurs définies dans ce fichier sont prioritaires par rapport à
celles qui auraient été spécifiées sur la ligne de commande.
Utiliser password=--NOT-SET-- s'il faut se connecter sans mot de passe
Cette option peut être utilisée plusieurs fois, auquel cas les fichiers
sont chargés dans l'ordre.
--profile PROFILE
La variable $PROFILE est définie avec la valeur spécifiée avant de
sourcer les fichiers de configuration. Cela permet d'avoir des fichiers
de configuration qui calculent dynamiquement les paramètres en fonction
de la valeur du profil.
-f, --input INPUT
Fichier en entrée. Ne pas spécifier cette option ou utiliser '-' pour
lire depuis l'entrée standard.
-d, --auto-dbtable DB
Spécifier la base de données avec laquelle se connecter. De plus, si le
nom de la table n'est pas spécifié, prendre par défaut le nom de base du
fichier spécifié avec l'option -f
-s, --skip-lines NBLINES
Nombre de lignes à sauter dans le fichier en entrée
-n, --fake
Ne pas effectuer l'opération. Afficher simplement la commande SQL.
--run
Forcer le lancement de l'opération. Utiliser cette option avec -A pour
créer la table avec les paramètres analysés.
-T, --truncate
Vider la table avant d'effectuer le chargement
-L, --load-data
Charger les données avec la commande 'load data local'. C'est l'option
par défaut. Le fichier est transmis tel quel à MySQL.
-I, --insert-data
Charger les données en générant des commandes 'insert into'. L'effet est
en principe le même avec l'option -L (sauf que certains formats de date
exotiques seront correctement importés). Cette option peut aussi être
utilisée avec l'option -n pour générer une liste de commande à corriger
et/ou adapter.
-U, -k, --update-data KEY
Au lieu de charger de nouvelles données, essayer de mettre à jour la
table. KEY est le nom de la colonne qui est utilisée comme clé. Toutes
les autres colonnes sont les nouvelles données à mettre à jour. Si
aucune ligne ne correspond à une clé donnée, la mise à jour pour cette
ligne est ignorée.
Note: utiliser les options -T et -U ensemble n'a pas de sens, mais -T
est quand même honoré.
-Z, --null-value VALUE
Avec les options -I et -U, considérer que NULL est représenté par la
chaine spécifiée. Par défaut, utiliser \N
-z, --null-is-empty
Avec les options -I et -U, considérer que NULL est représenté par la
chaine vide. Cette option est équivalente à -Z ''
-t, --types [DEFAULT_TYPE,]FIELD:TYPE,...
Spécifier pour chaque champ mentionné le type de donnée à forcer. Le
type 'auto' signifie que le type est autodétecté. C'est la valeur par
défaut. Les autres types valides sont 'str', 'int' et 'date'
Cette option est ignorée avec l'option -L
-A, --analyse
Analyser les données et afficher une requête pour créer une table qui
pourrait contenir ces données.
Cette option implique --fake et affiche simplement la commande SQL.
Pour lancer la commande SQL générée, il faut ajouter l'option --run
APRES cette option
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

45
doc/tools/netconfig.md Normal file
View File

@ -0,0 +1,45 @@
# netconfig
~~~
netconfig: gérer la configuration du réseau
USAGE
netconfig -c network.conf
netconfig [iface:]ip[/suffix]...
OPTIONS
-P, --partial
Activer le mode de configuration partielle. C'est la valeur par défaut.
Dans ce mode, la configuration courante n'est pas modifiée. Seules de
nouvelles adresses ips sont configurées le cas échéant.
-F, --full
Activer le mode de configuration complète. Dans ce mode, le nom d'hôte
ainsi que toutes les interfaces, pont et adresses sont configurés.
-z, --reset
En mode full, recréer le fichier /etc/network/interfaces au lieu
d'essayer de le mettre à jour.
-l, --inline
Prendre la configuration depuis la ligne de commande. C'est la valeur
par défaut, sauf si un fichier network.conf existe dans le répertoire
courant.
Dans ce mode, chaque argument est une spécification d'adresse IP à
configurer. Les autres paramètres i.e les ponts, le nom d'hôte et le
contenu du fichier /etc/networks sont spécifiés avec les options -b,
-h et -e
-c, --config CONFIG
Spécifier le fichier de configuration à utiliser pour la configuration
du réseau. Cette option est automatiquement activée si le répertoire
courant contient un fichier network.conf
-w, --write
Ecrire la configuration actuelle dans le fichier network.conf
Note: comme ce script demande les droits de root, le fichier sera écrit
avec le propriétaire root.
-b, --bridge BR:IFACES
En mode inline, spécifier une liste de ponts à configurer.
-h, --host HOST
En mode inline, spécifier le nom d'hôte pleinement qualifié
-e, --etc-networks CONTENT
Spécifier un contenu pour remplacer le fichier /etc/networks
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

7
doc/tools/noerr.md Normal file
View File

@ -0,0 +1,7 @@
# noerr
~~~
noerr: lancer une commande en supprimant la sortie d'erreur
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

7
doc/tools/noerror.md Normal file
View File

@ -0,0 +1,7 @@
# noerror
~~~
noerror: lancer une commande en masquant son code de retour. le code de retour est toujours 0
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

7
doc/tools/noout.md Normal file
View File

@ -0,0 +1,7 @@
# noout
~~~
noout: lancer une commande en supprimant la sortie standard
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

34
doc/tools/nutools.md Normal file
View File

@ -0,0 +1,34 @@
# nutools
~~~
nutools: configurer ou afficher des informations sur nutools
USAGE
nutools [VERSION]
OPTIONS
-C, --configure
Faire la configuration pour l'utilisateur courant en appelant uenv -u
Avec cette option, l'option -l (ou --local-profiles) est aussi reconnue
et est passée directement à uenv
-v, --version
Afficher la version de nutools installée. C'est l'option par défaut
-c, --check
Calculer si la version installée correspond à la version spécifiée
-o, --oper OPERATOR
Spécifier l'opérateur à utiliser avec l'option --check (par défaut,
utiliser l'opérateur ge, qui permet de vérifier si la version minimum
spécifiée est installée)
--eq
--ne
--lt
--le
--gt
--ge
--same
--diff
Ces options sont des raccourcis. L'option '--OP' est équivalente à
'--check --op OP'
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

10
doc/tools/openurl.md Normal file
View File

@ -0,0 +1,10 @@
# openurl
~~~
openurl: Ouvrir une URL dans un navigateur
USAGE
openurl <file.url|file.desktop|URL>
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

86
doc/tools/pdev.md Normal file
View File

@ -0,0 +1,86 @@
# pdev
~~~
pdev: basculer sur une branche de développement
USAGE
pdev [FEATURE [SOURCE]]
pdev -m|-l|-d [FEATURE]
- Vérifier l'existence de la branche develop. La créer si nécessaire en la
basant sur [origin/]master.
- Vérifier s'il n'y a pas de modifications locales. Sinon, proposer de faire un
commit ou un stash.
- Si FEATURE est spécifié, et si on n'est pas déjà sur cette branche, basculer
vers cette nouvelle branche. S'il s'agit d'une nouvelle branche, la baser sur
la branche SOURCE, qui vaut par défaut develop
- Si FEATURE n'est pas spécifié, basculer sur develop s'il s'agit de la seule
solution, sinon afficher un menu pour choisir la branche de destination.
OPTIONS
-C, --projdir PROJDIR
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
on travaille dans le répertoire courant et on laisse git trouver le
répertoire de base du projet. Avec cette option, le répertoire courant
est modifié avant de lancer les commandes git.
-O, --origin ORIGIN
Spécifier le nom de l'origine. Par défaut, utiliser 'origin'
-o, --offline
En cas de création d'une branche, ne pas pousser vers l'origine; ne pas
tenter le cas échéant de traquer la branche dans l'origine; ne pas
supprimer une branche dans l'origine. Cette option est automatiquement
activée si la variable UTOOLS_VCS_OFFLINE est définie.
--online
Annuler l'effet de la variable UTOOLS_VCS_OFFLINE: forcer le mode online
--sync
Faire un certain nombre d'opération pour 'corriger' le dépôt local: pour
chacune des branches distantes, vérifier qu'il existe une branche locale
qui la traque, et pour chaque feature branche locale, vérifier qu'il
existe une branche distante associée. Cette option nécessite --online
-s, --squash COMMIT_MSG
Si la branche actuelle est une feature branch, la merger comme un seul
commit avec le message COMMIT_MSG dans develop puis la supprimer. Puis
basculer sur la branche develop.
Cette option ne devrait pas être utilisée avec -k, puisque bien que les
modifications soient mergées, la branche elle-même n'est pas considérée
comme mergée. Les résultats sont donc indéfinis si la branche est mergée
à plusieurs reprises.
-b, --rebase
Si la branche actuelle est une feature branch, lancer 'git rebase -i'
sur la feature branch. Cela permet de réordonner les commits pour
nettoyer l'historique avant de fusionner la branche avec -m
Cette option devrait le cas échéant être utilisée immédiatement avant -m
ou alors il faut forcer le push et communiquer avec l'équipe sur le fait
que la branche de feature a été rebasée.
-m, --merge
Si la branche actuelle est une feature branch, la merger dans develop
puis la supprimer. Puis basculer sur la branche develop.
--merge-log
Ajouter un résumé des modifications sur la feature branch en ajoutant le
log en une ligne de chaque commit dans le message du merge. Cette option
n'est en principe pas nécessaire puisque 'prel -um' intègre la liste des
commits dans CHANGES.txt
-k, --keep
Avec l'option -m, ne pas supprimer une feature branch après l'avoir
fusionnée dans develop. Cela permet d'intégrer les modifications petit à
petit.
--delete
Supprimer une feature branch, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch develop
--force-delete
Supprimer une feature branch, même si elle n'a pas encore été fusionnée
dans la branche develop
-l, --log
-d, --diff
Afficher les modifications entre deux branches. L'option --log affiche
les modifications dans l'ordre alors que --diff affiche les différences
sous forme de diff. Les deux options peuvent être combinées et ont
l'effet de 'git log -p'
La branche comparée, s'il elle n'est pas spécifiée, est par défaut la
branche courante. S'il s'agit d'une feature branch, elle est comparée à
develop. S'il s'agit de la branche develop, elle est comparée à master.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

105
doc/tools/prel.md Normal file
View File

@ -0,0 +1,105 @@
# prel
~~~
prel: basculer sur une branche de release
USAGE
prel -u [SOURCE]
prel -c [RELEASE [SOURCE]]
prel -m|-l|-d [RELEASE]
- Vérifier s'il n'y a pas de modifications locales. Sinon, proposer de faire un
commit ou un stash.
- Avec l'option -c, s'il existe une branche de release, proposer de basculer
vers elle ou sur la branche master. Sinon, basculer sur la branche master.
- Avec l'option -u, proposer ou fixer une branche de release à créer. Si elle
existe déjà, basculer vers elle. Sinon, la créer en la basant sur SOURCE, qui
vaut par défaut develop
OPTIONS
-C, --projdir PROJDIR
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
on travaille dans le répertoire courant et on laisse git trouver le
répertoire de base du projet. Avec cette option, le répertoire courant
est modifié avant de lancer les commandes git.
-O, --origin ORIGIN
Spécifier le nom de l'origine. Par défaut, utiliser 'origin'
-o, --offline
En cas de création d'une branche, ne pas pousser vers l'origine; ne pas
tenter le cas échéant de traquer la branche dans l'origine; ne pas
supprimer une branche dans l'origine. Cette option est automatiquement
activée si la variable UTOOLS_VCS_OFFLINE est définie.
--online
Annuler l'effet de la variable UTOOLS_VCS_OFFLINE: forcer le mode online
-c, --checkout
Basculer vers une branche de release existante. C'est l'option par
défaut. Si aucune branche de release n'existe, basculer vers master
-u, --update
Préparer une nouvelle release. Utiliser une des options -x, -z ou -p
pour spécifier le type de release à préparer. Si la branche qui serait
créée pour le type de release existe déjà, basculer vers cette branche.
S'il faut la créer, la baser sur la branche SOURCE, qui vaut par défaut
develop
--menu
-x, --major
-z, --minor
-p, --patchlevel
Utilisé avec l'option -u, soit afficher un menu pour choisir la version
de la nouvelle release (par défaut), soit préparer respectivement une
release majeure, mineure, ou pour correction de bug.
-v-OPT
Avec l'option -u, spécifier une option de pver permettant de choisir la
version de la nouvelle release. Les options supportées sont -v, -l, -a,
-b, -r et -R. Par exemple, si la version actuelle sur la branche master
est 0.2.3, les options '-uz -v-lbeta' permettent de préparer la release
0.3.0-beta
En principe, cette option n'a pas à être utilisée, puisque dans une
branche de release, on peut faire vivre les versions de pré-release
jusqu'à la release finale. Ainsi, la branche de release est nommée
d'après la version finale, mais le projet peut recevoir une version de
pré-release incrémentale.
-w, --write
Si une nouvelle branche est créée avec -u, mettre à jour le fichier
VERSION.txt avec pver. C'est l'option par défaut.
-n, --no-write
Si une nouvelle branche est créée avec -u, NE PAS mettre à jour le
fichier VERSION.txt avec pver. Utiliser cette option si la mise à jour
du numéro de version doit être faite d'une manière particulière.
-e, --edit
Editer le fichier CHANGES.md autogénéré par les options -u -w ou un
fichier CHANGES.txt existant. Cette option est surtout utile si -m est
utilisé avec -u, pour donner la possibilité de corriger la liste des
modifications avant leur enregistrement définitif.
-m, --merge
Si la branche actuelle est une branche de release, ou s'il existe une
branche de release, la merger dans master, puis dans develop, puis la
supprimer. A l'issu de cette opération, rester sur la branche develop.
S'il n'existe pas de branche de release, proposer de fusionner les
modifications de la branche develop dans la branche master, sans
préparer de branche de release au préalable.
--delete
Supprimer une branche de release, à condition qu'elle aie déjà été
entièrement fusionnée dans la branch master
--force-delete
Supprimer une branche de release, même si elle n'a pas encore été
fusionnée dans la branche master
-s, --summary
Afficher la liste des différences entre la branche develop et la branche
master, comme elle serait générée par les options -u -w pour le fichier
CHANGES.txt (la syntaxe pour CHANGES.md est légèrement différente)
-l, --log
Afficher les modifications actuellement effectuée dans la branche de
release par rapport à develop.
-d, --diff
Afficher les modifications actuellement effectuée dans la branche de
release par rapport à develop, sous forme de diff.
OPTIONS AVANCEES
--uc, --upgrade-changes
Convertir un fichier CHANGES.txt en CHANGES.md
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

201
doc/tools/pver.md Normal file
View File

@ -0,0 +1,201 @@
# pver
~~~
pver: gérer des numéros de version selon les règles du versionage sémantique v2.0.0 (http://semver.org/)
USAGE
pver [options]
OPTIONS
-w, --auto-file DIR
Gérer le numéro de version du répertoire spécifié. Si un fichier pom.xml
existe dans ce répertoire, alors c'est l'option '-e DIR/pom.xml' qui est
activé. Si un fichier VERSION.txt existe dans ce répertoire, alors c'est
l'option '-f DIR/VERSION.txt' qui est activée. Sinon, un nouveau fichier
VERSION.txt est créé dans ce répertoire. C'est l'option par défaut.
--sw, --auto-string DIR
Prendre pour valeur de départ la version du répertoire spécifié. Si un
fichier pom.xml existe dans ce répertoire, alors c'est l'option -E qui
est activé. Si un fichier VERSION.txt existe dans ce répertoire, alors
c'est l'option -F qui est activée.
--gw, --auto-git-string [BRANCH:]DIR
Prendre pour valeur de départ la version du répertoire spécifié dans la
branche BRANCH (qui vaut par défaut master) du dépôt git. Si un fichier
pom.xml existe dans ce répertoire, alors c'est l'option -g qui est
activé. Si un fichier VERSION.txt existe dans ce répertoire, alors c'est
l'option -G qui est activée.
-e, --pom POMFILE
Gérer le numéro de version se trouvant dans le fichier pom.xml spécifié.
Le fichier DOIT exister. Implique --maven-update
-E, --pom-string POMFILE
Prendre pour valeur de départ la version contenue dans le fichier
pom.xml spécifié. Le fichier DOIT exister. Implique --maven-update
-f, --file VERSIONFILE
Gérer le numéro de version se trouvant dans le fichier spécifié. Le
fichier est créé si nécessaire.
-F, --file-string VERSIONFILE
Prendre pour valeur de départ le contenu du fichier VERSIONFILE.
-g, --git-file-string [BRANCH:]VERSIONFILE
Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
vaut par défaut VERSION.txt) dans la branche BRANCH (qui vaut par défaut
master) du dépôt git. Retourner 2 si on n'est pas situé dans un dépôt
git.
-G, --git-pom-string [BRANCH:]POMFILE
Prendre pour valeur de départ la version du fichier POMFILE (qui vaut
par défaut pom.xml) dans la branche BRANCH (qui vaut par défaut master)
du dépôt git. Retourner 2 si on n'est pas situé dans un dépôt git.
--git-prel-string
Prendre pour valeur de départ le numéro de version correspondant à la
branche de release courante. Retourner 1 si la branche courante n'est
pas une branche de release, 2 si on n'est pas situé dans un dépôt git.
-s, --string VERSION
Prendre pour valeur de départ le numéro de version spécifié
--show
Afficher le numéro de version. C'est l'action par défaut
--check
Vérifier que le numéro de version est conforme aux règles du versionage
sémantique
--eq VERSION
--ne VERSION
--lt VERSION
--le VERSION
--gt VERSION
--ge VERSION
--same VERSION
--diff VERSION
Comparer avec la version spécifiée. Les opérateurs --eq, --ne, --lt,
--le, --gt, et --ge ignorent l'identifiant de build (comme le demande la
règle du versionage sémantique). Les opérateurs --same et --diff
comparent aussi les identifiants de build.
-u, --update
Mettre à jour le numéro de version.
Les options suivantes impliquent --update:
-v, --set-version VERSION
Spécifier un nouveau numéro de version qui écrase la valeur actuelle.
Cette option ne devrait pas être utilisée en temps normal parce que cela
va contre les règles du versionage sémantique.
--prel
Spécifier un nouveau numéro de version qui écrase la valeur actuelle. Le
numéro de version est obtenu à partir du nom de la branche git courante,
qui doit être de la forme release-VERSION
--menu
Afficher un menu permettant de choisir le composant de la version à
incrémenter.
-x, --major
Augmenter le numéro de version majeure.
-z, --minor
Augmenter le numéro de version mineure. C'est la valeur par défaut, sauf
avec --maven-update où c'est l'option -p qui est sélectionnée par
défaut.
-p, --patchlevel
Augmenter le numéro de patch.
-k, --keep
Ne pas augmenter le numéro de version. Cette option est surtout utile
pour *convertir* un numéro de version existant et mettre à jour le
fichier correspondant. Elle est assumée si aucune option -[xzp] n'est
spécifiée et qu'une des options -[labrSRmM] est utilisée.
-l, --prelease ID
Spécifier un identifiant de pré-release, à ajouter au numéro de version.
-a, --alpha
-b, --beta
-r, --rc
Spécifier une pré-release de type alpha, beta, ou rc. Si la version est
déjà dans ce type, augmenter la dernière valeur numérique des composants
de l'identifiant, e.g. alpha deviant alpha.1, beta-1.2 devient beta-1.3,
rc1 devient rc2
XXX ces fonctions ne sont pas encore implémentées
-S, --snapshot
Ajouter l'identifiant SNAPSHOT, utilisé par Maven
-R, --final, --release
Supprimer l'identifiant de prérelease, utilisé par Maven
-m, --metadata ID
Spécifier un identifiant de build, à ajouter au numéro de version.
-M, --vcs-metadata
Calculer l'identifiant de build à partir de la révision actuelle dans le
gestionnaire de version. Note: pour le moment, seul git est supporté.
--add-metadata ID
Ajouter l'identifiant spécifié à la valeur actuelle, au lieu de la
remplacer. Séparer l'identifiant de la valeur précédente avec un '.'
OPTIONS AVANCEES
--show-source
Afficher le type de source qui sera traité, i.e. pom, file, pom-string,
file-string, git-pom-string, git-file-string
--vpath VPATH
Pour les options -e et -E, spécifier le chemin XPATH du tag qui contient
le numéro de version.
--map MAPFILE
Cette option permet de spécifier un fichier de règles qui indique les
fichiers pom.xml et VERSION.txt qui doivent être mis à jour dans un
projet multi-modules pour lequel les versions doivent être mises à jour
en même temps.
Par défaut, si un fichier nommé .pver-map existe dans le répertoire de
{POM,VERSION}FILE, cette option est automatiquement activée. Ainsi, on
n'aura besoin d'utiliser cette option que si l'on désire charger un
fichier alternatif ou ignorer le fichier par défaut.
Si une valeur vide est fournie, seul le fichier {POM,VERSION}FILE est
traité. Sinon, {POM,VERSION}FILE est utilisé uniquement pour chercher le
fichier .pver-map et seuls les fichiers mentionnés dans MAPFILE sont
traités.
Le fichier MAPFILE est constitué d'un ensemble de lignes de la forme
FILESPEC:VPATH
FILESPEC est requis et prend la forme d'une spécification de chemin
relatif au répertoire de MAPFILE et identifiant un ensemble de fichiers
de version. Si FILESPEC contient des wildcards, alors les fichiers
identifiés par ce chemin sont ignorés s'ils ont déjà été traités par une
règle précédente. Si FILESPEC ne contient pas de wildcards, alors le
fichier est systématiquement traité.
VPATH désigne le chemin XPATH vers le numéro de version qu'il faut
mettre à jour dans les fichiers pom.xml. Certaines valeurs spéciales
pour VPATH sont supportées:
(vide) le chemin par défaut est utilisé pour ce fichier, c'est à
dire /project/version ou /project/parent/version en fonction
du contenu du fichier
- le fichier pom.xml n'est pas modifié (il est ignoré)
D alias pour le chemin XPATH /project/version
P alias pour le chemin XPATH /project/parent/version
Pour les fichiers VERSION.txt, VPATH doit être vide
Le fichier de version correspondant au premier fichier de la première
ligne de MAPFILE contient la version de référence, qui est dupliquée
dans tous les autres fichiers.
--allow-empty
Supporter que la version puisse ne pas être spécifiée ni trouvée. Sans
cette option, on assume que la version effective est 0.0.0 si elle n'est
pas spécifiée ni trouvée.
Avec --show et --update, ne rien afficher si la version est vide.
--convert
--no-convert
Activer (resp. désactiver) la conversion automatique. Par défaut, si la
version est au format classique 'x.z[.p]-rDD/MM/YYYY', elle est
convertie automatiquement au format sémantique x.z.p+rYYYYMMDD
-t, --maven-update
Mettre à jour le numéro de version selons les règles de Maven. Cette
option est automatiquement activée si -e est sélectionné. Elle n'est
prise en compte qu'avec l'option -u
Si les options -R et -S ne sont pas spécifiée, alors une release est
transformée en snapshot et une snapshot en release. Avec -R, une
snapshot est transformée en release, et une release est traitée /
incrémentée normalement. Avec -S une release est transformée en
snapshot, et un snapshot est traité / incrémentée normalement.
Si l'une des options -x, -z, -p est utilisée, alors la partie spécifiée
est incrémentée selon les règles suivantes. Dans les exemples suivants,
A est un nombre quelconque, B = A + 1, et x, y et z sont des nombres
quelconques.
Avec l'option -x:
A.0.0-SNAPSHOT --> A.0.0
A.x.y-SNAPSHOT --> B.0.0
x.A.y --> x.B.0-SNAPSHOT
Avec l'option -z:
x.A.0-SNAPSHOT --> x.A.0
x.A.y-SNAPSHOT --> x.B.0
x.A.y --> x.B.0-SNAPSHOT
Avec l'option -p, qui est celle sélectionnée par défaut:
x.y.z-SNAPSHOT --> x.y.z
x.y.A --> x.y.B-SNAPSHOT
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

20
doc/tools/pz.md Normal file
View File

@ -0,0 +1,20 @@
# pz
~~~
pz: faire une archive du projet
USAGE
pz
OPTIONS
-C, --projdir PROJDIR
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
on travaille dans le répertoire courant et on laisse git trouver le
répertoire de base du projet. Avec cette option, le répertoire courant
est modifié avant de lancer les commandes git.
-d, --destdir DESTDIR
Spécifier le répertoire dans lequel générer l'archive. Par défaut,
prendre le répertoire parent du répertoire de base du dépôt.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

16
doc/tools/reptyr.cgo.md Normal file
View File

@ -0,0 +1,16 @@
# reptyr.cgo
~~~
Usage: reptyr [-s] PID
reptyr -l|-L [COMMAND [ARGS]]
-l Create a new pty pair and print the name of the slave.
if there are command-line arguments after -l
they are executed with REPTYR_PTY set to path of pty.
-L Like '-l', but also redirect the child's stdio to the slave.
-s Attach fds 0-2 on the target, even if it is not attached to a tty.
-h Print this help message and exit.
-v Print the version number and exit.
-V Print verbose debug output.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

12
doc/tools/rmtildes.md Normal file
View File

@ -0,0 +1,12 @@
# rmtildes
~~~
rmtildes: supprimer les fichiers *~ dans le répertoire courant
USAGE
rmtildes [dir [glob]]
Par défaut, dir==. et glob==*~
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,19 +1,13 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # rruns
##@creator: jclain
##@created: 30/03/2012 04:42
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: rruns
{{{ ~~~
rruns: Déploiement distant avec runs rruns: Déploiement distant avec runs
USAGE USAGE
rruns [-H host] [-T tmproot] rscriptname name=value... rruns [-h hosts] [-T tmproot] rscriptname name=value...
rruns [-H host] [-T tmproot] @recipe name=value... rruns [-h hosts] [-T tmproot] @recipe name=value...
rruns [-H host] [-T tmproot] -f rscript name=value... rruns [-h hosts] [-T tmproot] -f rscript name=value...
rruns [-H host] [-T tmproot] -r recipe name=value... rruns [-h hosts] [-T tmproot] -r recipe name=value...
Lancer ce script sans argument (hors options) est équivalent à le lancer avec Lancer ce script sans argument (hors options) est équivalent à le lancer avec
l'argument @default l'argument @default
@ -27,20 +21,31 @@ OPTIONS
sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant, sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant,
il est possible de faire la configuration avec '--configure root'. La il est possible de faire la configuration avec '--configure root'. La
commande serait alors commande serait alors
rruns -H user@host --configure root rruns -h user@host --configure root
-T tmproot -T tmproot
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut /var/tmp. Cette option est utile pour les vservers, qui ont par défaut
un /tmp minuscule de 16 Mo. un /tmp minuscule de 16 Mo.
-S ssh -S ssh
Spécifier le programme à utiliser pour la connection par ssh. Spécifier le programme à utiliser pour la connection par ssh.
-H host -h host
Spécifier un hôte distant sur lequel faire le déploiement. Plusieurs -h @hostsfile
options -H peuvent être spécifiées, ou alors on peut séparer plusieurs Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
hôtes par ':', e.g. -H host1:host2 spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
séparant par un espace ou le caractère ':', e.g. 'host1 host2' ou
'host1:host2'. Si la spécification contient les caractères { et },
l'expansion est effectuée, e.g
-h 'root@{host1,host2}.univ.run'
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
root. Il est possible de spécifier un autre utilisateur avec la syntaxe root. Il est possible de spécifier un autre utilisateur avec la syntaxe
user@host, e.g -H jclain@host user@host, e.g -h user@host
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
hostsfile, à raison d'un hôte par ligne.
Si cette option n'est pas spécifiée, et que le répertoire courant est
dans un des répertoires de $RUNSHOSTSPATH, sélectionner l'hôte
correspondant. Sinon, l'utilisateur doit saisir l'hôte distant de façon
interactive.
-f RSCRIPT -f RSCRIPT
Lancer le script individuel spécifié au lieu de chercher dans les Lancer le script individuel spécifié au lieu de chercher dans les
répertoires $RUNS{SCRIPTS,HOSTS}PATH répertoires $RUNS{SCRIPTS,HOSTS}PATH
@ -53,10 +58,17 @@ OPTIONS
déploiement. Si plusieurs hôtes sont spécifiés, OUTPUT est considéré déploiement. Si plusieurs hôtes sont spécifiés, OUTPUT est considéré
comme un nom de base auquel est ajouté le nom de l'hôte sur lequel comme un nom de base auquel est ajouté le nom de l'hôte sur lequel
l'archive doit être déployée. l'archive doit être déployée.
--init
--no-init
Forcer (resp. empêcher) la création des répertoires d'hôte correspondant
aux hôtes spécifiés. Par défaut, la création des répertoires d'hôte est
effectuée uniquement si ce script est lancé sans argument.
--sysinfos --sysinfos
Après un déploiement réussi sur l'hôte distant, inscrire si ce n'est Après un déploiement réussi sur l'hôte distant, inscrire si ce n'est
déjà fait le résultat de la commande usysinfos dans le fichier déjà fait le résultat de la commande usysinfos dans le fichier
sysinfos.conf du répertoire d'hôte. sysinfos.conf du répertoire d'hôte.
Cette option est automatiquement activée si ce script est lancé sans Cette option est automatiquement activée si ce script est lancé sans
argument (hors options). argument (hors options).
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

48
doc/tools/ruinst.md Normal file
View File

@ -0,0 +1,48 @@
# ruinst
~~~
ruinst: Déploiement distant avec uinst
USAGE
ruinst [-h host] [-T tmproot] <file|archive|dir> [-- options de uinst]
note: à cause d'une limitation de makeself, les options de uinst ne devraient
pas contenir d'espaces ni de caractères spéciaux. L'échappement de ces
caractères n'est pas garanti.
OPTIONS
-C Ne pas faire le déploiement. Configurer uniquement la connexion par clé
sur les hôtes distants spécifiés pour le user spécifié. Il faut pouvoir
se connecter par mot de passe pour configurer la connexion par clé.
Si l'on veut configurer la connexion par clé pour le user root, mais que
ce n'est pas possible de se connecter par mot de passe avec le user root
sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant,
il est possible de faire la configuration avec '--configure root'. La
commande serait alors
ruinst -h user@host --configure root
Si l'hôte distant n'a pas sudo ou si sudo n'est pas configuré, il faut
rajouter l'option --uses-su, e.g:
ruinst -h user@host --configure root --uses-su
-T tmproot
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
un /tmp minuscule de 16 Mo.
-S, --ssh ssh
Spécifier le programme à utiliser pour la connection par ssh.
-h hosts
-h @hostsfile
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
séparant par un espace ou le caractère ':', e.g. 'host1 host2' ou
'host1:host2'. Si la spécification contient les caractères { et },
l'expansion est effectuée, e.g
-h 'root@{host1,host2}.univ.run'
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
user@host, e.g -h user@host
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
hostsfile, à raison d'un hôte par ligne.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

14
doc/tools/rumount.md Normal file
View File

@ -0,0 +1,14 @@
# rumount
~~~
rumount: démonter un système de fichier récursivement
USAGE
rumount mountpoint
Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint
puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers
bind-montés à partir d'un sous-répertoire de mountpoint.
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # runs
##@creator: jclain
##@created: 30/03/2012 04:42
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: runs
{{{ ~~~
runs: Lancer un script avec le protocole runs runs: Lancer un script avec le protocole runs
USAGE USAGE
@ -18,8 +12,10 @@ USAGE
OPTIONS OPTIONS
Configuration Configuration
--init --init
Créer le répertoire d'hôte correspondant à l'hôte courant ou à l'hôte --verify
spécifié avec l'option -h Vérifier le nom d'hôte et créer si nécessaire le répertoire d'hôte
correspondant à l'hôte courant ou à l'hôte spécifié avec l'option -h
Avec --verify, la création du répertoire d'hôte n'est pas effectuée.
--sysinfos DATA --sysinfos DATA
Avec l'option --init, initialiser le fichier sysinfos.conf avec DATA, si Avec l'option --init, initialiser le fichier sysinfos.conf avec DATA, si
le fichier n'a pas déjà été provisionné. Sans cette option, un fichier le fichier n'a pas déjà été provisionné. Sans cette option, un fichier
@ -44,7 +40,7 @@ Gestion des scripts
{$RUNSHOSTSPATH}/$hostname.$domain (par défaut) et {$RUNSHOSTSPATH}/$hostname.$domain (par défaut) et
{$RUNSHOSTSPATH}/$domain/$hostname (le cas échéant) {$RUNSHOSTSPATH}/$domain/$hostname (le cas échéant)
L'option --host est équivalente, sauf que son argument est facultatif et L'option --host est équivalente, sauf que son argument est facultatif et
que sa valeur par défaut est l'hôte courant, soit melee que sa valeur par défaut est l'hôte courant, soit hydra
--list --list
Afficher la liste des scripts qui sont disponibles. Avec l'option -h, Afficher la liste des scripts qui sont disponibles. Avec l'option -h,
inclure aussi les scripts spécifiques à cet hôte. inclure aussi les scripts spécifiques à cet hôte.
@ -57,4 +53,6 @@ Gestion des scripts
--desc-only --desc-only
Afficher seulement la description du script Afficher seulement la description du script
-z Forcer la réinstallation des scripts qui se basent sur shouldrun/setdone -z Forcer la réinstallation des scripts qui se basent sur shouldrun/setdone
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

33
doc/tools/runsconfig.md Normal file
View File

@ -0,0 +1,33 @@
# runsconfig
~~~
runsconfig: Gérer un répertoire d'hôte de runs
USAGE
runsconfig -c [host [destdir]]
runsconfig -t -- args...
OPTIONS
-c, --create
Créer un nouveau répertoire de configuration pour un hôte
-d, --destdir DESTDIR[=runs]
Nom du répertoire local de configuration.
-t, --template [OPT]
Gérer les fichiers du répertoire local avec templatectl. La valeur de
cette option est utilisée comme argument court pour l'invocation de
templatectl, e.g
runsconfig -tm args
est équivalent à
templatectl -m args
Les arguments qui restent sont passés tels quels à templatectl
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
directement
--help-template
Afficher l'aide concernent la gestion des templates.
Equivalent à -t -- --help
-h, --host HOST
Spécifier l'hôte. Equivalent à -v host=HOST
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

72
doc/tools/runsmod.md Normal file
View File

@ -0,0 +1,72 @@
# runsmod
~~~
runsmod: récupérer des dépôts git à usage de runs
USAGE
runsmod [options] [-h host] [modules...]
Tous les dépôts spécifiés dans la configuration sont récupérés. Si des modules
sont spécifiés, les dépôts correspondants sont récupérés aussi. Avec l'option
-h, des dépôts spécifiques à l'hôte peuvent éventuellement être récupérés en
plus.
Il est possible de spécifier le module '*' pour récupérer tous les modules
disponibles. C'est utile sur un poste de développement.
OPTIONS
-c, --config CONFIG
Spécifier un fichier de configuration à charger au lieu de la valeur par
défaut ~/etc/default/runs
--prod
--devel
Forcer un mode de sélection des urls. En mode production, préférer pour
le clonage les urls de production, qui sont en principe accessibles sans
authentification et en lecture seule. En mode développement, préférer
pour le clonage les urls de développement, qui sont en principe
accessibles par clé ssh et en lecture/écriture
--no-fetch
Ne rien récupérer. Utile avec --update-repolist
-N, --no-host
-A, --all-hosts
-H, -h, --host HOST
-T, --this-host
Options permettant de spécifier l'hôte pour la récupération de dépôts
spécifiques.
--no-host demande explicitement à ce qu'aucun hôte ne soit spécifié
--all-hosts sélectionne tous les dépôts spécifiques
--host récupère uniquement les dépôts pour l'hôte spécifié
--this-host équivaut à --host natrix
L'option par défaut est --this-host en mode production et --all-hosts en
mode développement
--update-repolist
Forcer la mise à jour de la liste des dépôts. En principe, cette mise à
jour n'est pas faite plus d'une fois par période de 24 heures.
--shallow-clone
Faire un clone avec une profondeur de 1. C'est la valeur par défaut pour
le mode production.
-0, --offline
-n, --no-pull
-u, --pull
Spécifier le mode opératoire pour la récupération des dépôts.
En mode --offline, ni clone ni pull ne sont autorisés. Le module doit
avoir déjà été cloné.
En mode --no-pull, seul le clonage est autorisé, e.g. le dépôt est
cloné si ce n'est pas déjà le cas.
En mode --pull, cloner le dépôt si ce n'est pas déjà le cas, ou le
mettre à jour le dépôt avant de l'utiliser s'il avait déjà été cloné.
Par défaut, utiliser --pull en mode production et --no-pull en mode
développement.
-i, --identity IDENTITY_FILE
Spécifier le fichier depuis lequel lire la clé privée pour les
connexions par ssh.
-o, --output OUTPUT
Spécifier un fichier dans lequel écrire des définitions de variables,
notamment REPODIRS qui reçoit la liste des chemins des dépôts qui ont
été récupérés. De plus, les variables RUNSSCRIPTSPATH, RUNSMODULESPATH
et RUNSHOSTSPATH sont définies.
-a, --append-output
Ajouter au fichier OUTPUT au lieu de l'écraser
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # rwoinst
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: rwoinst
{{{ ~~~
rwoinst: Déploiement distant avec woinst rwoinst: Déploiement distant avec woinst
USAGE USAGE
@ -35,4 +29,6 @@ OPTIONS
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
root. Il est possible de spécifier un autre utilisateur avec la syntaxe root. Il est possible de spécifier un autre utilisateur avec la syntaxe
user@host, e.g -H user@host user@host, e.g -H user@host
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

94
doc/tools/sqlcsv.md Normal file
View File

@ -0,0 +1,94 @@
# sqlcsv
~~~
USAGE:
sqlcsv [query]
query est la requête SQL à exécuter. Si query n'est pas spécifiée ou si elle
vaut '-', la requête SQL est lue sur l'entrée standard, ou depuis un
fichier si l'option -f est spécifiée.
DEMARRAGE
Au démarrage, les répertoires de configuration (utilisateur ~/.sqlcsv et système
/etc/sqlcsv) sont analysés. Les fichiers *.jar situés dans ces répertoires sont
ajoutés au CLASSPATH. La présence de certains fichiers est testée pour activer
éventuellement les logs détaillés.
OPTIONS
-C, --config CONFIG
Prendre les informations de connexion depuis le fichier de propriété
spécifié. Pour l'identifiant CONN, la propriété 'CONN.url' doit exister
dans ce fichier avec la valeur de l'url jdbc de connexion. De plus, les
propriétés 'CONN.user' et 'CONN.password' contiennent respectivement si
nécessaire le nom et le mot de passe de connexion. La propriété
'loglevel', si elle existe, est utilisée pour configurer le niveau
d'affichage des logs, comme avec l'option --loglevel
Si cette option n'est pas spécifiée, un fichier nommé sqlcsv.properties
est recherché dans l'ordre: dans le répertoire courant, dans le
répertoire de configuration utilisateur, puis dans le répertoire de
configuration système. Si le fichier est trouvé, il est chargé
automatiquement.
-l, --conn CONN
Spécifier l'identifiant (ou l'url) de connexion. Cette information est
obligatoire. Si cette option n'est pas fournie, il faut spécifier un
fichier de configuration avec l'option -C dans lequel *une seule*
propriété 'CONN.url' est définie.
-u, --user USER
-p, --password PASSWORD
Spécifier un nom de connexion et un mot de passe si l'url ne le fournit
pas. Ces valeurs ont la priorité sur les valeurs éventuellement déjà
présentes dans le fichier de propriété.
-f, --input INPUT
Lire la requête depuis le fichier INPUT au lieu de la lire depuis la
ligne de commande ou l'entrée standard. Ne pas spécifier cette option ou
utiliser '-' pour lire depuis l'entrée standard. Cette option est
ignorée si la requête est fournie sur la ligne de commande.
-o, --output OUTPUT
Ecrire le résultat dans le fichier OUTPUT. Utiliser '-' pour spécifier
la sortie standard (c'est la valeur par défaut). S'il y a plusieurs
requêtes et que le fichier de sortie n'est pas la sortie standard,
ajouter un numéro incrémental au nom du fichier en sortie pour chaque
requête. Sinon, il est possible de spécifier plusieurs fois cette option
pour nommer les fichiers correspondant à chaque requête.
-t, --autocommit
Activer le mode autocommit
-c, --ignore-io-error
Continuer le traitement même en cas d'erreur du système de fichiers.
Cependant le traitement s'arrête et la transaction est annulée si une
autre erreur se produit.
-y, --ignore-any-error
Continuer le traitement même en cas d'erreur quelconque.
-n, --no-headers
Ne JAMAIS inclure les en-têtes dans la sortie, même avec l'option -h
-a, --append
Ajouter le résultat au fichier OUTPUT au lieu de l'écraser.
-A, --auto-na
Activer les option -n -a si le fichier OUTPUT existe et qu'il est non
vide. Le test n'est effectué que pour le premier fichier spécifié.
-s, --same-output
Utiliser le même fichier pour écrire le résultat de toutes les requêtes.
Normalement, un numéro incrémental est ajouté au fichier en sortie si
plusieurs requêtes sont spécifiées. Si les en-têtes sont les mêmes,
ajouter le résultat au fichier directement à la suite. Sinon, sauter une
ligne blanche et afficher les nouveaux en-têtes.
-h, --force-headers
En cas d'écriture du résultat de plusieurs requêtes dans un même
fichier, ne pas tenter de concaténer les résultats même si les en-têtes
sont les mêmes.
--uc-output
Ajouter dans la sortie les résultat de toutes les requêtes, pas
seulement celles de type DQML
--loglevel LOGLEVEL
Spécifier le niveau de logs à afficher. Les valeurs valides sont à
choisir parmi ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, ERROR
La présence de certains fichiers dans les répertoires de configuration
utilisateur ou système configure les logs avant que les options de la
ligne de commande ne soient analysés: un fichier DEBUG fait démarrer
l'application avec le niveau de log ALL ce qui permet de voir les logs
concernant le chargement des jar. Un fichier SQL_DEBUG permet d'activer
la trace de DriverManager. Exemple:
mkdir -p ~/.sqlcsv && touch ~/.sqlcsv/{DEBUG,SQL_DEBUG}
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # twsync
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: twsync
{{{ ~~~
twsync: synchroniser un répertoire de wiki avec un tiddlywiki twsync: synchroniser un répertoire de wiki avec un tiddlywiki
USAGE USAGE
@ -36,4 +30,6 @@ OPTIONS
avec les dernières modifications. avec les dernières modifications.
-U Mettre à jour le fichier wikifile avec la dernière version de tiddlywiki -U Mettre à jour le fichier wikifile avec la dernière version de tiddlywiki
située dans ~/wop/modules/nutools/lib/tiddlywiki/empty.html située dans ~/wop/modules/nutools/lib/tiddlywiki/empty.html
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

13
doc/tools/uawk.md Normal file
View File

@ -0,0 +1,13 @@
# uawk
~~~
uawk: wrapper pour des outils implémentés en awk
USAGE
uawk TOOL args...
Les noms d'outils valides sont: awkrun awkcsv grepcsv awkfsv2csv mergecsv sortcsv dumpcsv printcsv
Utiliser l'option --help pour obtenir de l'aide sur chacun des outils
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,12 +1,6 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # ubackup
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: ubackup
{{{ ~~~
ubackup: faire une sauvegarde des fichiers ubackup: faire une sauvegarde des fichiers
USAGE USAGE
@ -21,4 +15,6 @@ OPTIONS
que pour l'utilisateur root. que pour l'utilisateur root.
-n Afficher ce qui doit être fait plutôt que de le faire -n Afficher ce qui doit être fait plutôt que de le faire
-H Arrêter la machine après une sauvegarde REUSSIE. -H Arrêter la machine après une sauvegarde REUSSIE.
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

31
doc/tools/ucalc.md Normal file
View File

@ -0,0 +1,31 @@
# ucalc
~~~
ucalc: Afficher une valeur dans plusieurs unités
USAGE
ucalc value
Sans suffixe, la valeur est exprimée en octets. Sinon, elle peut être suffixée
pour spécifier l'unité dans laquelle est exprimée la valeur:
K,M,G,T -- Kibi (1024), Mibi (1024^2), Gibi (1024^3), Tebi (1024^4)
k,m,g,t -- Kilo (1000), Mega (1000^2), Giga (1000^3), Tera (1000^4)
s -- secteurs de 512 octets
S -- secteurs de 2048 octets
p -- pages de 4096 octets
c -- cylindres (si l'option -c est spécifiée)
b -- octets
OPTIONS
-u UNIT
Spécifier l'unité de value. Le suffixe qui est éventuellement sur value
est ignoré.
-o UNIT
Spécifier l'unité en sortie. Par défaut, afficher la valeur dans toutes
les unités supportées.
-c VALUE
Taille d'un cylindre en octets, pour permettre l'affichage des valeurs
en cylindres
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,29 +1,28 @@
# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # uconf
##@creator: jclain
##@created: 15/03/2012 22:20
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: uconf
{{{ ~~~
uconf: Activer ou désactiver un paramètre dans un fichier de configuration uconf: Activer ou désactiver un paramètre dans un fichier de configuration
USAGE USAGE
uconf [options] config name[=value]... uconf [options] config name[=value]...
OPTIONS OPTIONS
-e Activer le paramètre (par défaut). Si le paramètre existe, mais est -e
Activer le paramètre (par défaut). Si le paramètre existe, mais est
commenté, il est décommenté. Si une valeur est spécifiée pour le commenté, il est décommenté. Si une valeur est spécifiée pour le
paramètre, le paramètre est modifié dans le fichier en conséquence. paramètre, le paramètre est modifié dans le fichier en conséquence.
-q Cette option s'utilise avec l'option -e et le type shell. Elle permet -q
Cette option s'utilise avec l'option -e et le type shell. Elle permet
de s'assurer que les valeurs ayant des espaces et/ou des caractères de s'assurer que les valeurs ayant des espaces et/ou des caractères
spéciaux sont quotées spéciaux sont quotées
-d Désactiver le paramètre. Le paramètre est commenté s'il existe dans le -d
Désactiver le paramètre. Le paramètre est commenté s'il existe dans le
fichier fichier
-a Ajouter une valeur à la variable, ou un paramètre avec cette valeur -a
Ajouter une valeur à la variable, ou un paramètre avec cette valeur
(suivant le type de fichier de configuration) (suivant le type de fichier de configuration)
-A Ajouter une valeur au tableau, ou un paramètre avec cette valeur -A
Ajouter une valeur au tableau, ou un paramètre avec cette valeur
(suivant le type de fichier de configuration) (suivant le type de fichier de configuration)
-t TYPE -t TYPE
Type de fichier de configuration. TYPE peut être sh (par défaut), apache Type de fichier de configuration. TYPE peut être sh (par défaut), apache
@ -48,4 +47,6 @@ OPTIONS
Avec le type mysql, préciser la section dans laquelle inscrire le Avec le type mysql, préciser la section dans laquelle inscrire le
paramètre. Attention! La section DOIT exister, elle n'est pas créée paramètre. Attention! La section DOIT exister, elle n'est pas créée
automatiquement. automatiquement.
}}} ~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

Some files were not shown because too many files have changed in this diff Show More