Compare commits

...

610 Commits

Author SHA1 Message Date
Jephté Clain 0527aee96e Intégration de la branche release-11.3.0 2024-09-24 16:02:01 +04:00
Jephté Clain f156fe0b1e Init changelog & version 11.3.0 2024-09-24 16:02:00 +04:00
Jephté Clain 625d5f1d25 bug mineur 2024-09-24 16:01:36 +04:00
Jephté Clain e30820261a dkbuild: améliorer from_glob() 2024-07-12 23:04:43 +04:00
Jephté Clain 5c03184c94 lgrep, lless: modifier la doc pour ne parler que d'un fichier 2024-07-05 10:13:19 +04:00
Jephté Clain 0ed5ddf6b9 Intégration de la branche release-11.2.0 2024-06-21 20:34:15 +04:00
Jephté Clain f39787c6ec Intégration de la branche release-11.2.0 2024-06-21 20:34:14 +04:00
Jephté Clain 11145f686a Init changelog & version 11.2.0 2024-06-21 20:34:14 +04:00
Jephté Clain 21042e4677 bug 2024-06-21 20:33:50 +04:00
Jephté Clain e4176dfd94 reginc: possibilité de renommer des fichiers 2024-06-17 10:44:53 +04:00
Jephté Clain 1787aa2310 bug 2024-05-13 09:44:50 +04:00
Jephté Clain d1f77aa354 dkbuild: support dist none et tag LATEST 2024-05-10 17:15:30 +04:00
Jephté Clain c2cfd7739a bug 2024-05-10 16:04:54 +04:00
Jephté Clain e7745c2dd4 dk: support --plain-output 2024-03-19 07:26:06 +04:00
Jephté Clain ce8f541520 dkbuild: -g pour --profile 2024-03-06 22:36:49 +04:00
Jephté Clain 30594aa84b maj distributions 2024-02-12 11:47:27 +04:00
Jephté Clain 2df175ee57 dkbuild: cosmetic 2024-02-10 11:33:07 +04:00
Jephté Clain fbb05f8dee support des versions AMUE 2024-02-08 22:26:13 +04:00
Jephté Clain 9d8e3c53d1 Intégration de la branche release-11.1.0 2024-02-01 20:59:56 +04:00
Jephté Clain 2886c40aa2 Intégration de la branche release-11.1.0 2024-02-01 20:59:56 +04:00
Jephté Clain e50a686536 Init changelog & version 11.1.0 2024-02-01 20:59:56 +04:00
Jephté Clain 8570d12ce6 pff: les répertoires liés peuvent contenir des fichiers 2024-02-01 20:55:47 +04:00
Jephté Clain 5d6c6b4053 synchroniser pff et nulib/pff 2024-01-31 23:07:07 +04:00
Jephté Clain 90bda71351 pff: support des répertoires liés 2024-01-30 14:51:48 +04:00
Jephté Clain 7d7b88a427 autoriser les feature branches qui commencent par wip/ 2024-01-11 08:57:53 +04:00
Jephté Clain 5cc1826744 dk et dkbuild: support .composer.yaml et setup_image 2024-01-03 20:37:21 +04:00
Jephté Clain 0bf0f48ad0 dk: support ~/.dkbuild.env 2024-01-03 19:11:09 +04:00
Jephté Clain b818e11c73 dkbuild: ajout de --plain 2023-12-25 23:06:55 +04:00
Jephté Clain ad14de35ea dkbuild: configuration profil prod par défaut 2023-11-21 18:18:52 +04:00
Jephté Clain 54a5b5485d Sscreen: support des cas où screen n'est pas dans le PATH 2023-11-20 16:54:59 +04:00
Jephté Clain 5a06851b0f dkbuild: support profil par défaut 2023-11-18 08:39:28 +04:00
Jephté Clain a855b04c21 dkbuild: les versions de profil sont ordonnées comme les versions de distribution 2023-11-18 08:02:04 +04:00
Jephté Clain e5315532a1 dkbuild: sans --all-profiles, ne build que dans le profil par défaut 2023-11-18 07:52:35 +04:00
Jephté Clain db1467b8fd bug 2023-11-18 06:58:58 +04:00
Jephté Clain 3123d8e65e dkbuild: mappings par défaut 2023-11-17 23:12:10 +04:00
Jephté Clain d9b1485354 charnière entre java 8 et java 11 2023-11-07 09:21:15 +04:00
Jephté Clain 744a3fa0ac dkbuild: indiquer si la version de Java demandée n'est pas trouvée 2023-10-02 20:00:29 +04:00
Jephté Clain 2803868e16 dkbuild: marquer plus d'action comme étant du build 2023-10-02 19:31:07 +04:00
Jephté Clain 4f7bc3f6bf dkbuild: bug avec -u seul 2023-10-02 19:08:45 +04:00
Jephté Clain 8cdc3cb2bb modifs.mineures sans commentaires 2023-09-29 10:11:12 +04:00
Jephté Clain 1b7b2744ba Intégration de la branche release-11.0.0 2023-09-05 14:29:29 +04:00
Jephté Clain b9951d269d Intégration de la branche release-11.0.0 2023-09-05 14:29:29 +04:00
Jephté Clain 4ffd43f2e0 Init changelog & version 11.0.0 2023-09-05 14:29:29 +04:00
Jephté Clain ddfbc00f78 maj des images par défaut dk et dkbuild 2023-08-23 16:44:38 +04:00
Jephté Clain e33f2a5afe ajout registry privé 2023-08-22 10:43:43 +04:00
Jephté Clain f245e17138 image par défaut en prod 2023-08-22 10:32:14 +04:00
Jephté Clain efe31b8c9d support java17 2023-08-22 08:42:34 +04:00
Jephté Clain 5cb4112cd0 dkbuild: bug profil unitaire 2023-08-18 12:39:17 +04:00
Jephté Clain f424f41561 dkbuild: -u n'implique plus -b 2023-08-13 17:09:29 +04:00
Jephté Clain e5a147351d dkbuild: implémenter -u 2023-08-12 22:23:45 +04:00
Jephté Clain 771bd1c563 Intégration de la branche release-10.0.0 2023-08-12 21:06:39 +04:00
Jephté Clain 776cd96fd7 Intégration de la branche release-10.0.0 2023-08-12 21:06:39 +04:00
Jephté Clain 471315dcbb Init changelog & version 10.0.0 2023-08-12 21:06:39 +04:00
Jephté Clain bfdf9b5bef support système sans python2 2023-08-12 20:50:16 +04:00
Jephté Clain 108215fce4 maj registry pour devel 2023-08-11 09:55:46 +04:00
Jephté Clain 6ddb870a56 dkbuild: support profil nu 2023-08-07 13:40:31 +04:00
Jephté Clain c0b130fd29 dkbuild: support profil jclain 2023-08-07 11:42:03 +04:00
Jephté Clain ae20e49440 modifs.mineures sans commentaires 2023-07-14 10:13:01 +04:00
Jephté Clain 2e5101d6a2 ajout de lgrep 2023-07-14 10:12:26 +04:00
Jephté Clain cff4833370 ajout de ldiff 2023-07-10 16:33:31 +04:00
Jephté Clain 9c6e7a8750 renommer less1 en lless 2023-07-10 16:05:07 +04:00
Jephté Clain e9d52d8f35 ajout de less1 pour lire des fichiers latin1 2023-07-10 14:47:17 +04:00
Jephté Clain d3d86c6ff9 cssh: forcer la désactivation du verrouillage de la session 2023-07-06 19:03:42 +04:00
Jephté Clain b761cb610c Sscreen: désactiver verrouillage de la session 2023-06-30 19:20:50 +04:00
Jephté Clain 6e36d26471 Intégration de la branche release-9.16.0 2023-06-15 15:28:28 +04:00
Jephté Clain 2344a63da7 Intégration de la branche release-9.16.0 2023-06-15 15:28:28 +04:00
Jephté Clain 61dc4c1154 Init changelog & version 9.16.0 2023-06-15 15:28:28 +04:00
Jephté Clain f36be0dfb2 uscrontab: s'assurer que USER est défini 2023-06-15 15:28:15 +04:00
Jephté Clain 63674ef02b cosmetic 2023-06-14 16:03:03 +04:00
Jephté Clain ee80091650 cosmetic 2023-06-14 15:56:04 +04:00
Jephté Clain e5ab8dd240 Intégration de la branche release-9.15.0 2023-06-14 15:41:57 +04:00
Jephté Clain 8b0d4713b5 Intégration de la branche release-9.15.0 2023-06-14 15:41:57 +04:00
Jephté Clain 1025357631 Init changelog & version 9.15.0 2023-06-14 15:41:57 +04:00
Jephté Clain 2a023070e7 update-nutools: prendre le dépôt public par défaut 2023-06-14 15:41:14 +04:00
Jephté Clain 27a82e439b ajouter les numéros de version des debian et ubuntu 2023-06-12 16:34:54 +04:00
Jephté Clain 92157dee42 regins: implémentation initiale 2023-06-09 17:29:47 +04:00
Jephté Clain efe9fbbbdb dk: ajout de XX pour prune-cache 2023-06-06 08:20:45 +04:00
Jephté Clain dc94b5c0cf dkbuild: bug avec les chemins 2023-05-23 15:11:54 +04:00
Jephté Clain 5e876652f8 dk: X supprimer aussi le cache 2023-05-19 10:31:56 +04:00
Jephté Clain 9c1a8e67b2 dk: composer.phar est cherché dans sbin/ aussi 2023-05-17 09:03:33 +04:00
Jephté Clain 81cefdc51e regcp: activer support regexp-extended 2023-05-16 11:13:58 +04:00
Jephté Clain c5796d6b2d modifs.mineures sans commentaires 2023-05-14 08:09:51 +04:00
Jephté Clain 6919352a59 maj du message de commit par défaut 2023-04-12 15:59:23 +04:00
Jephté Clain 7ba7d1c501 pcxone: correction de l'url généré des dépôts git 2023-04-12 08:47:54 +04:00
Jephté Clain 9d7594356e repoctl: correction de l'url généré des dépôts git 2023-04-12 08:37:49 +04:00
Jephté Clain c0d4e950e9 Intégration de la branche release-9.14.0 2023-03-15 17:48:48 +04:00
Jephté Clain e071b81ad7 Intégration de la branche release-9.14.0 2023-03-15 17:48:48 +04:00
Jephté Clain d5ff03481d Init changelog & version 9.14.0 2023-03-15 17:48:48 +04:00
Jephté Clain 3ecb127f33 support docker compose v2 2023-03-15 16:15:44 +04:00
Jephté Clain 432ab6f915 dkbuild: composer et mvn ne sont lancés qu'en mode build 2023-02-20 10:06:20 +04:00
Jephté Clain 01c14bbeee regcp: ajout de l'option -n 2023-02-13 15:22:22 +04:00
Jephté Clain 0913c2ed9f upassword: rendre configurable le nombre de blocs 2023-02-10 18:36:21 +04:00
Jephté Clain 61433fbf9c dkbuild: revert image par défaut pour javabuilder 2023-02-03 10:04:02 +04:00
Jephté Clain e4e0a55073 pff: support mode vcs offline 2023-02-02 09:26:05 +04:00
Jephté Clain e08c66bc89 pff: support des archives sh de l'amue 2023-02-01 16:07:03 +04:00
Jephté Clain 0d1193278c dkbuild: corriger l'image javabuilder par défaut 2023-01-31 15:15:23 +04:00
Jephté Clain 3ead1f37bc dkbuild: utiliser automatiquement l'image si nécessaire pour composer ou maven 2023-01-31 09:47:38 +04:00
Jephté Clain 93de256914 ajout de regcp et regmv 2023-01-25 17:28:34 +04:00
Jephté Clain 5e33a36bcd rendre cohérent les en-têtes des scripts 2023-01-25 17:14:03 +04:00
Jephté Clain 9e1351529a ajout exemple .dkbuild.env 2023-01-10 11:09:46 +04:00
Jephté Clain c9e8110ece dkbuild: corriger calcul des tags 2023-01-08 15:47:29 +04:00
Jephté Clain c671cb399d dkbuild: fin support tag & last version 2023-01-08 15:22:24 +04:00
Jephté Clain 1a764f15ff dkbuild: début support tag & last version 2023-01-08 13:03:40 +04:00
Jephté Clain 027f9b8c45 dkbuild: ajout de from_glob() 2023-01-07 14:06:27 +04:00
Jephté Clain 2293239614 maj doc 2023-01-06 16:18:24 +04:00
Jephté Clain 9fc07bb4e7 dkbuild: ajout build add-tags= 2023-01-05 11:21:39 +04:00
Jephté Clain 7b15f945ba dkbuild: support préfixe et suffixe pour version 2023-01-05 11:02:13 +04:00
Jephté Clain f2cfaeef13 dkbuild: calculer extract automatiquement 2023-01-05 10:11:28 +04:00
Jephté Clain c36b8fb577 dkbuild: corriger le support des paramètres sans argument 2023-01-05 08:48:08 +04:00
Jephté Clain 68a42d0f6a dkbuild: maj templates 2023-01-05 08:30:01 +04:00
Jephté Clain 306e77f307 dkbuild: calcul de la version à partir d'un fichier ou d'un chemin 2023-01-05 08:01:30 +04:00
Jephté Clain b006bb44cd Maj des fichiers 2023-01-03 13:19:18 +04:00
Jephté Clain 6963d4109a uproject: push -f force le push 2022-10-18 11:22:56 +04:00
Jephté Clain 9665d5a5d0 cx-conndev: maj doc 2022-09-28 08:46:20 +04:00
Jephté Clain 137dfa9674 repoctl, uproject: ne plus enlever le suffixe .git 2022-08-30 14:58:08 +04:00
Jephté Clain 440d2aa1fa upassword: maj nombre de blocs par défaut 2022-08-16 10:39:32 +04:00
Jephté Clain f4047a3b64 ipaddr: forcer la sortie couleur 2022-08-13 18:57:19 +04:00
Jephté Clain af1bdd3ca5 Maj des fichiers 2022-08-10 16:01:46 +04:00
Jephté Clain 85e77e4bda dkbuild: corriger le calcul de la dernière version d'une distribution 2022-07-27 11:18:48 +04:00
Jephté Clain a56ec0e0f1 dkbuild: améliorer clean 2022-07-26 23:35:23 +04:00
Jephté Clain d6e78b9665 dkbuild: maj messages debug 2022-07-22 19:12:10 +04:00
Jephté Clain 1699cc5f44 dkbuild: les fichiers d'environnement par défaut ont l'extension .env 2022-07-21 11:46:01 +04:00
Jephté Clain 2ae8406a4b maj doc dkbuild 2022-07-21 11:41:01 +04:00
Jephté Clain 1db7d08e82 maj doc cx-shelldev 2022-06-26 16:11:28 +04:00
Jephté Clain aba08c2600 maj update-nutools 2022-06-18 10:43:40 +04:00
Jephté Clain e83b6d1036 possibilité de choisir l'adresse IP 2022-06-17 15:21:28 +04:00
Jephté Clain af9096df0c ajouter le template fichier vide 2022-06-14 13:55:33 +04:00
Jephté Clain 89f0c0974d typo 2022-06-03 09:49:35 +04:00
Jephté Clain fb434c2a96 bug parse_date 2022-04-06 08:38:44 +04:00
Jephté Clain f7ab14ff7e dkbuild: implémentation initiale 2022-03-29 09:42:27 +04:00
Jephté Clain f46812f07a cx-conndev: maj doc 2022-02-17 08:55:34 +04:00
Jephté Clain e76a6a6a84 Intégration de la branche release-9.13.0 2022-02-07 22:20:41 +04:00
Jephté Clain 45bf006040 Intégration de la branche release-9.13.0 2022-02-07 22:20:41 +04:00
Jephté Clain d5cc9ca031 Init changelog & version 9.13.0 2022-02-07 22:20:41 +04:00
Jephté Clain 06686d98f1 pff: support nettoyage wsdl/ 2022-02-07 22:20:19 +04:00
Jephté Clain 9a018a6f51 pdev: ajout de --check 2022-01-25 09:54:48 +04:00
Jephté Clain a932a1a7cd la branche par défaut est master en prod 2022-01-24 08:53:05 +04:00
Jephté Clain cb09f4db83 maj template yaml 2022-01-21 17:47:41 +04:00
Jephté Clain f8952225cf foreach: rendre -g et -S compatibles 2022-01-20 00:13:05 +04:00
Jephté Clain 4f7bcbcede maj template CSS 2022-01-14 16:14:20 +04:00
Jephté Clain 5cdd93d3d8 upassword: réintégrer password wom 2021-11-22 15:59:02 +04:00
Jephté Clain 7030b8783c dk: ajouter mvn_action=install 2021-11-02 15:08:09 +04:00
Jephté Clain 8a682edade upassword: changer le générateur aléatoire 2021-11-02 11:12:19 +04:00
Jephté Clain a85cdf6ddc Maj des fichiers 2021-10-24 12:55:09 +04:00
Jephté Clain d75783b0eb dmcerts: cosmetic 2021-10-24 11:21:07 +04:00
Jephté Clain 11e6021e77 dmcerts: certificat client avec la même durée que le CA 2021-10-24 11:14:44 +04:00
Jephté Clain 938307cb69 ajout dmcerts 2021-10-24 10:30:27 +04:00
Jephté Clain 8b49084d91 typo 2021-10-11 19:42:30 +04:00
Jephté Clain 98c1ac8843 ajouter le support de bullseye 2021-10-11 19:40:20 +04:00
Jephté Clain 28d42b00f3 authftp: support des mots de passe avec des caractères spéciaux 2021-09-22 22:47:03 +04:00
Jephté Clain dfdfd59eae sélectionner java 1.6 par défaut pour worun 2021-09-20 16:05:30 +04:00
Jephté Clain 6af03598c8 pff: ajout de la commande normalisée new_cmd_amue_clean_libs 2021-06-13 12:06:59 +04:00
Jephté Clain b3a44d07ad pff: bug 2021-05-27 13:32:46 +04:00
Jephté Clain 111463a861 pff: ajout AUTO_CMDS et NEW_CMDS, supprimer MKDIRS 2021-05-27 11:40:39 +04:00
Jephté Clain fe839f4c7b woinst: bug 2021-04-17 19:58:18 +04:00
Jephté Clain ba8e1a1dcc upasword: ajout des mot de passe javamonitor de webobjects 2021-04-10 20:51:29 +04:00
Jephté Clain a75b91e2e9 network: utiliser 127.0.1.1 pour dhcp 2021-04-06 16:31:38 +04:00
Jephté Clain dfb5fc31d8 maj ulib/redhat 2021-04-06 11:59:51 +04:00
Jephté Clain 40c9cb968c supprimer docker/ qui est obsolète 2021-04-05 18:17:06 +04:00
Jephté Clain 580e20b342 supprimer nulib de la distribution de nutools 2021-04-05 11:54:44 +04:00
Jephté Clain da28d8b429 pff: changer le format des fichiers de version 2021-03-30 08:22:45 +04:00
Jephté Clain b03df72236 Intégration de la branche release-9.12.0 2021-03-29 09:41:20 +04:00
Jephté Clain 7a4870f8c8 Intégration de la branche release-9.12.0 2021-03-29 09:41:20 +04:00
Jephté Clain a4ed8d9a45 Init changelog & version 9.12.0 2021-03-29 09:41:20 +04:00
Jephté Clain 3d54e3771d pff: bug origext 2021-03-26 22:02:56 +04:00
Jephté Clain 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
Jephté Clain 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
Jephté Clain b191552cb0 dk: bug dans le mapping par défaut dans le profil test 2021-02-08 16:46:36 +04:00
Jephté Clain 1d4c4b4b04 dk: support COMPOSER_PHP=none 2021-02-08 16:19:33 +04:00
Jephté Clain b3983edd2a dk: support des mappings d'hôtes 2021-02-03 17:30:54 +04:00
Jephté Clain 543d2d2f79 dk: mvn est aussi un frontend pour lancer java 2021-02-02 06:18:35 +04:00
Jephté Clain f1a9c7a5e5 dk: début support projets maven 2021-01-29 12:10:23 +04:00
Jephté Clain ad44a1c2e5 dk: support build dans une image pour les projets composer 2021-01-27 17:15:36 +04:00
Jephté Clain 44f719b2e6 Intégration de la branche release-9.11.0 2020-12-11 15:43:15 +04:00
Jephté Clain 40d6605472 Intégration de la branche release-9.11.0 2020-12-11 15:43:15 +04:00
Jephté Clain f64bbbf0ee Init changelog & version 9.11.0 2020-12-11 15:43:15 +04:00
Jephté Clain 01e940b953 repoctl: permettre create -u 2020-11-27 10:19:14 +04:00
Jephté Clain e453ed2533 maj doc 2020-11-15 10:30:28 +04:00
Jephté Clain 434a8bce16 compileAndGo: support java 11 2020-11-13 16:27:19 +04:00
Jephté Clain 337f24c447 Intégration de la branche release-9.10.0 2020-11-12 23:05:13 +04:00
Jephté Clain dac4cb6a73 Intégration de la branche release-9.10.0 2020-11-12 23:05:13 +04:00
Jephté Clain c6d00839d2 Init changelog & version 9.10.0 2020-11-12 23:05:13 +04:00
Jephté Clain 24d05192d1 dk: support merge .shared_env et .machine_env 2020-11-12 21:56:10 +04:00
Jephté Clain 45c40d735b dk: support de --pull 2020-11-12 15:51:22 +04:00
Jephté Clain c921d2a902 pff: support de NOUPSTREAM 2020-10-28 22:45:10 +04:00
Jephté Clain edf956f1bb dk: BRANCH peut aussi être un ^COMMIT 2020-10-28 05:54:42 +04:00
Jephté Clain 85842f3c41 renommer start-screen en Sscreen 2020-10-26 16:30:35 +04:00
Jephté Clain e395720902 maj doc 2020-10-09 09:08:02 +04:00
Jephté Clain 4603b1a6a0 bug 2020-10-06 04:40:55 +04:00
Jephté Clain a91542b47f maj .gitattributes par défaut 2020-10-06 04:02:19 +04:00
Jephté Clain 51c4c3317c support sélection java 11 2020-10-06 03:46:31 +04:00
Jephté Clain 82a7952e2a dm: support des aliases pour ssh aussi 2020-10-02 09:12:56 +04:00
Jephté Clain d1d32de841 dk: bug avec update-devel 2020-09-28 16:08:15 +04:00
Jephté Clain 037cb1a9e2 maj template sql 2020-09-25 11:21:41 +04:00
Jephté Clain 04d037f3ed support rhel8 / ol8 2020-09-23 14:33:01 +04:00
Jephté Clain 725ba6d2c2 cssh: donner un nom à la session 2020-09-23 13:35:01 +04:00
Jephté Clain 246b9473aa Intégration de la branche release-9.9.0 2020-09-21 18:08:31 +04:00
Jephté Clain 9555874ec3 Intégration de la branche release-9.9.0 2020-09-21 18:08:31 +04:00
Jephté Clain e2e6b76e4a Init changelog & version 9.9.0 2020-09-21 18:08:30 +04:00
Jephté Clain 2ec6c21ec8 support gros doigt de python2 sur les systèmes modernes 2020-09-21 18:06:05 +04:00
Jephté Clain bc1a740f35 bug 2020-09-17 06:02:05 +04:00
Jephté Clain ada594a30b dm: support des aliases 2020-09-17 05:59:36 +04:00
Jephté Clain 856c948eeb repoctl: ajout de update-origin 2020-09-10 11:15:40 +04:00
Jephté Clain cc1b45d0fc support de l'option -u 2020-09-08 11:51:40 +04:00
Jephté Clain 28ceb74b44 cosmetic 2020-08-31 15:41:46 +04:00
Jephté Clain 751e372bfd bug 2020-08-31 15:35:14 +04:00
Jephté Clain 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
Jephté Clain 14beb13b7c dk: support minimal maven 2020-07-12 20:17:19 +04:00
Jephté Clain f474657be6 dk: ajout de COMPOSER_ARGS 2020-07-07 10:35:55 +04:00
Jephté Clain 109797502a cosmetic 2020-06-22 16:32:32 +04:00
Jephté Clain bb7a4fc84c foreach: ajout de l'option -S 2020-06-21 22:49:17 +04:00
Jephté Clain 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
Jephté Clain 07bea2c842 cx-conndev: support klean 2020-06-09 18:01:13 +04:00
Jephté Clain 7254661f45 dk: support du nommage du répertoire pour le checkout 2020-06-09 14:04:37 +04:00
Jephté Clain fb285e0319 ne vérifier conndev.php que si c'est nécessaire 2020-06-05 16:39:44 +04:00
Jephté Clain 9d5713c1f9 Intégration de la branche release-9.8.0 2020-04-28 16:42:19 +04:00
Jephté Clain d083d87c93 Intégration de la branche release-9.8.0 2020-04-28 16:42:19 +04:00
Jephté Clain 9ed51b43f8 Init changelog & version 9.8.0 2020-04-28 16:42:19 +04:00
Jephté Clain e2b2f49214 dk: vérifier que le répertoire destination existe avant rsync 2020-04-28 16:41:47 +04:00
Jephté Clain c147a0cef3 dk: possibilité de spécifier les options de rsync 2020-04-23 11:07:46 +04:00
Jephté Clain 05fd86acc7 Intégration de la branche release-9.7.0 2020-04-17 10:20:37 +04:00
Jephté Clain 10177a16de Intégration de la branche release-9.7.0 2020-04-17 10:20:37 +04:00
Jephté Clain b18b24c22d Init changelog & version 9.7.0 2020-04-17 10:20:37 +04:00
Jephté Clain f4f9b69257 dk: bug avec la synchro d'un fichier 2020-04-16 22:44:38 +04:00
Jephté Clain 74190f7264 dk: par défaut, les suffixes courants sont supprimés 2020-04-15 04:31:29 +04:00
Jephté Clain 9fad9924ef dk: support répertoire/fichier source 2020-04-14 12:24:16 +04:00
Jephté Clain 1d7e2d0949 bug 2020-04-10 17:09:32 +04:00
Jephté Clain 7268cecce6 pff: workaround pour certaines erreurs de packaging 2020-04-10 17:04:41 +04:00
Jephté Clain aa269661cb dk: support build args avec la syntaxe NAME=VALUE 2020-03-31 23:38:53 +04:00
Jephté Clain f7b3f90ba0 dk: augmenter la largeur de la colonne node 2020-03-29 21:27:21 +04:00
Jephté Clain 1c4c1c3faf dmctl: l'option -a supporte les répertoires 2020-03-29 21:04:44 +04:00
Jephté Clain ccf3c67278 dk: aliases de filtres 2020-03-27 18:58:23 +04:00
Jephté Clain 1b12cee1fb dk: afficher un warning si le profil n'est pas défini pour une machine 2020-03-26 22:57:04 +04:00
Jephté Clain 45976f45c2 dk: sta affiche le statut pour tous les services 2020-03-26 22:33:25 +04:00
Jephté Clain 1960c0c94e dk: implémenter status 2020-03-26 16:40:37 +04:00
Jephté Clain 4f206d732c dk: frontend plus 'transparent' 2020-03-20 22:51:05 +04:00
Jephté Clain d666859b83 dk: supprimer avec image:tag si possible 2020-03-18 05:25:05 +04:00
Jephté Clain 4ee346b521 maj chemin ip 2020-03-13 10:46:54 +04:00
Jephté Clain c9796b2562 ipaddr: frontend pour ip addr 2020-03-12 21:36:39 +04:00
Jephté Clain 668eec1497 dmctl: possibilité d'importer toutes les machines d'un répertoire 2020-03-11 15:23:47 +04:00
Jephté Clain abd178bf0d Intégration de la branche release-9.6.0 2020-02-24 09:13:57 +04:00
Jephté Clain b0db9af448 Intégration de la branche release-9.6.0 2020-02-24 09:13:57 +04:00
Jephté Clain d7763fd8b7 Init changelog & version 9.6.0 2020-02-24 09:13:57 +04:00
Jephté Clain b7492fc34e dk: ajout de l'option -e 2020-02-14 11:18:32 +04:00
Jephté Clain 08c081ac33 modification pour support des valeurs spéciales (ne sont pas synchronisées) dans LDAP 2020-02-13 09:04:26 +04:00
Jephté Clain 98129cd400 passer par un script annexe pour cssh 2020-02-07 08:45:57 +04:00
Jephté Clain 99c0ccd66d dk: support de PHP_VERSION_MAX 2020-01-30 14:32:44 +04:00
Jephté Clain 2283a66201 Intégration de la branche release-9.5.0 2020-01-28 14:06:01 +04:00
Jephté Clain 412ad542f4 Intégration de la branche release-9.5.0 2020-01-28 14:06:01 +04:00
Jephté Clain 8f1810f52b Init changelog & version 9.5.0 2020-01-28 14:06:01 +04:00
Jephté Clain 640a2b1158 maj doc 2020-01-28 14:05:43 +04:00
Jephté Clain 7f143c0fd4 Intégration de la branche release-9.4.4 2020-01-27 08:48:56 +04:00
Jephté Clain e873ad523e Intégration de la branche release-9.4.4 2020-01-27 08:48:56 +04:00
Jephté Clain 625b45582a Init changelog & version 9.4.4 2020-01-27 08:48:56 +04:00
Jephté Clain 300935c83e bug 2020-01-26 09:27:36 +04:00
Jephté Clain 43330297e3 Intégration de la branche release-9.4.3 2020-01-24 13:02:51 +04:00
Jephté Clain 046ba0d323 Intégration de la branche release-9.4.3 2020-01-24 13:02:50 +04:00
Jephté Clain 7fd6b81742 Init changelog & version 9.4.3 2020-01-24 13:02:50 +04:00
Jephté Clain 4ba6909e4b ajouter le support de buster pour la completion 2020-01-24 12:52:43 +04:00
Jephté Clain 0c21e704c3 Intégration de la branche release-9.4.2 2020-01-24 08:52:32 +04:00
Jephté Clain c8b8f107a1 Intégration de la branche release-9.4.2 2020-01-24 08:52:31 +04:00
Jephté Clain 979c39c01b Init changelog & version 9.4.2 2020-01-24 08:52:31 +04:00
Jephté Clain fd5b7872a3 dk: bug 2020-01-24 08:52:22 +04:00
Jephté Clain ad1898388f maj de l'image par défaut 2020-01-23 20:25:04 +04:00
Jephté Clain c33ff4c5ef ajouter le support de buster 2020-01-23 13:59:34 +04:00
Jephté Clain 247b449752 dk: maj doc 2020-01-22 13:56:34 +04:00
Jephté Clain 28f4d398c2 dk: support de COMPOSER_PHP 2020-01-22 10:47:14 +04:00
Jephté Clain f28df5266c maj image composer 2020-01-21 22:15:09 +04:00
Jephté Clain 1210ca7382 Intégration de la branche release-9.4.1 2020-01-20 14:46:16 +04:00
Jephté Clain 46416f713c Intégration de la branche release-9.4.1 2020-01-20 14:46:16 +04:00
Jephté Clain 60a8796f4c Init changelog & version 9.4.1 2020-01-20 14:46:16 +04:00
Jephté Clain 6f01bac2be dk: si la commande est inconnue, la transmettre à docker 2020-01-12 07:25:48 +04:00
Jephté Clain 175f6edce6 cssh: traiter le cas où screen n'est pas disponible 2019-12-26 15:34:25 +04:00
Jephté Clain 73db7284cf umail: possibilité de spécifier le type de body 2019-12-18 21:50:17 +04:00
Jephté Clain 5fc55cc3e7 dk: support des fonctions de nettoyage par profil 2019-12-13 22:14:56 +04:00
Jephté Clain 21274af799 dk: APPS peut avoir une valeur dépendante du profil 2019-12-13 18:17:51 +04:00
Jephté Clain f7f8889bba support des filtres avec wildcards 2019-12-05 14:43:33 +04:00
Jephté Clain 747c563a2b repoctl: divers bugs 2019-12-05 11:56:34 +04:00
Jephté Clain 4fdd23c8eb dk: support limité de podman 2019-12-03 06:39:00 +04:00
Jephté Clain 5457228b02 dk: support des aliases pour les mappings pff 2019-12-03 06:27:46 +04:00
Jephté Clain a55f9c4a04 dk: ajout de get-profile 2019-11-21 08:55:09 +04:00
Jephté Clain ac7efadaae dk: possibilité de forcer la suppression des images 2019-11-07 12:09:39 +04:00
Jephté Clain 528483893f typo 2019-11-06 15:19:46 +04:00
Jephté Clain d5c51622c2 dk: dans build.env, une variable peut en mentionner une autre 2019-11-05 01:14:07 +04:00
Jephté Clain f7d036a60f repoctl: cosmetic 2019-10-10 10:41:13 +04:00
Jephté Clain 87b8d5b5b0 Intégration de la branche update-repoctl 2019-10-10 10:24:11 +04:00
Jephté Clain 0866bbd4d9 finaliser edit et implémenter get 2019-10-10 10:24:07 +04:00
Jephté Clain 8daf4ec6a1 début implémentation edit 2019-10-08 23:07:55 +04:00
Jephté Clain ef1c8f2996 utiliser dk composer, et ne pas utiliser de container par défaut 2019-10-03 19:43:46 +04:00
Jephté Clain 269379f3a2 dk: rendre le code overridable 2019-10-03 19:20:32 +04:00
Jephté Clain aae3703558 bug avec traitement des variables de docker-machine -u 2019-10-03 19:12:38 +04:00
Jephté Clain f8750935a8 dk: par défaut, forcer l'utilisation de la machine locale pour dk composer 2019-10-03 18:56:33 +04:00
Jephté Clain c202a279dd dk: support COMPOSER_SETUP et COMPOSER_CMD 2019-10-03 15:58:07 +04:00
Jephté Clain 921caa1acc dk: le shell est lancé en root 2019-10-02 22:20:48 +04:00
Jephté Clain ce98445e41 dk: support de composer shell 2019-10-02 22:16:40 +04:00
Jephté Clain 2b5ed18ee3 dk: ajouter un frontend pour composer 2019-10-02 22:04:10 +04:00
Jephté Clain 29c54e7548 dmctl: import/export de docker machines 2019-09-28 17:30:10 +04:00
Jephté Clain de53bae548 Intégration de la branche add-repoctl 2019-09-28 12:33:19 +04:00
Jephté Clain 600b8246fa support limité de pcrone et pclone 2019-09-28 12:33:03 +04:00
Jephté Clain 914f635fe1 implémentation initiale de create, list, delete 2019-09-18 10:57:20 +04:00
Jephté Clain a774497248 squelette 2019-09-18 10:57:20 +04:00
Jephté Clain 5a444a65b9 dk: support pff 2019-09-18 10:57:12 +04:00
Jephté Clain 425e8a5642 dk: maj format ps 2019-09-18 00:35:10 +04:00
Jephté Clain 52c3d7a690 dk: ps, ls et rm prennent des filtres. ajout de pull 2019-09-18 00:13:22 +04:00
Jephté Clain d5f8fa4fff cx-updatedev: ajout de l'option -g 2019-08-27 16:48:27 +04:00
Jephté Clain 5fe5137328 dk: support de COMPOSER_ACTION et sqlmig NOFIX 2019-08-26 16:12:53 +04:00
Jephté Clain 74cf35b47c typo 2019-08-21 11:20:21 +04:00
Jephté Clain 046862389d alias pour docer-machine 2019-08-21 09:57:08 +04:00
Jephté Clain 3dfe5427e9 dk: support de scripts génériques 2019-08-14 17:29:30 +04:00
Jephté Clain 488a2574a8 délai pour éviter les maj intempestives d'eclipse 2019-07-19 16:27:42 +04:00
Jephté Clain 13ce5b8254 dk: tagger aussi avec la distribution 2019-07-18 22:51:43 +04:00
Jephté Clain d03b04f822 dk: ajouter automatiquement le suffixe -$DIST à la version 2019-07-18 20:57:53 +04:00
Jephté Clain 68794910a6 maj doc 2019-07-15 09:11:52 +04:00
Jephté Clain 7fad3635e2 cssh: compat avec les vieilles versionsd de linux 2019-07-14 21:49:18 +04:00
Jephté Clain f65dda68e4 bug 2019-07-13 04:57:58 +04:00
Jephté Clain bc7eebc487 ajouter --with-registry-auth à dk update 2019-06-29 12:17:07 +04:00
Jephté Clain 8af50f4b91 nettoyage de logs webobjects 2019-06-26 11:08:24 +04:00
Jephté Clain 458ccd3df1 dk: support de certaines options pour dk run 2019-06-25 11:02:52 +04:00
Jephté Clain c97bc6a92e dk: support de la commande run 2019-06-24 23:57:02 +04:00
Jephté Clain ae70f66089 synchro des dépendances uniquement pour le type composer 2019-06-20 15:10:42 +04:00
Jephté Clain f508dae60f support des mises à jour en mode devel 2019-06-20 14:58:00 +04:00
Jephté Clain 60a4c73857 cx-conndev: ajouter l'option -d 2019-06-19 23:22:17 +04:00
Jephté Clain 85ac283eff cx-conndev: renommer l'option en --mysql-cmd 2019-06-19 15:51:31 +04:00
Jephté Clain 80db4629f6 cx-conndev: ajout de l'option --cmd 2019-06-19 14:50:34 +04:00
Jephté Clain 4400ba758a ajout de ensure-vip 2019-06-18 07:16:06 +04:00
Jephté Clain ae7ffeb7b1 cx-updatedev: remplacer --ru par -w, --ud, --ur en fonction des besoins 2019-06-12 23:19:00 +04:00
Jephté Clain 9bfd515cac dk -c est auto-complete friendly 2019-06-11 08:18:43 +04:00
Jephté Clain a5a41d9b1e dk: support de fichiers compose non défaut 2019-06-11 08:06:29 +04:00
Jephté Clain 7e5859eee5 bug 2019-06-11 06:39:13 +04:00
Jephté Clain b3429603c9 bug 2019-06-07 15:15:12 +04:00
Jephté Clain c44d1d31f7 dk: par défaut, ne pas ajouter le profil au nom de projet 2019-06-05 18:23:07 +04:00
Jephté Clain aa4eb4a481 cx-updatedev: ajout des mises à jour récursives 2019-06-05 15:45:37 +04:00
Jephté Clain 4c58b127af Intégration de la branche release-9.4.0 2019-06-05 10:15:32 +04:00
Jephté Clain 991f94b48c Init changelog & version 9.4.0 2019-06-05 10:15:32 +04:00
Jephté Clain fb96852bf6 Intégration de la branche dk-deploy 2019-06-05 10:14:23 +04:00
Jephté Clain 386fc0d070 implémenter service, update, scale 2019-06-05 10:14:08 +04:00
Jephté Clain c2f43e6b6d optimiser l'utilisation de docker-machine 2019-06-05 10:14:08 +04:00
Jephté Clain 8cb3b2fc57 ajouter la commande deploy 2019-06-05 10:14:07 +04:00
Jephté Clain 5967541159 cx-updatedev: ajouter l'option -j 2019-06-03 09:41:29 +04:00
Jephté Clain d79e218dfc dk: support de push pour docker-compose 2019-05-31 17:14:59 +04:00
Jephté Clain ccbfff4366 dk: simplifier la gestion du nommage des services 2019-05-31 15:42:11 +04:00
Jephté Clain 50dee34e6f dk: support de build d'un service en particulier 2019-05-30 23:25:34 +04:00
Jephté Clain 99d5069b55 bug 2019-05-30 22:43:23 +04:00
Jephté Clain a825f3b931 bug 2019-05-27 10:07:18 +04:00
Jephté Clain 8c143e16c3 foreach: ajout de --cc 2019-05-27 10:00:33 +04:00
Jephté Clain 7e26ae1e0c foreach: ajout des raccourcis -G et -C 2019-05-26 23:05:59 +04:00
Jephté Clain cbb34ecd3f cx-conndev: afficher les erreurs 2019-05-24 11:49:11 +04:00
Jephté Clain 7524a2869a cosmetic 2019-05-22 23:07:41 +04:00
Jephté Clain 9b03dcd69f cx-updatedev: ajout de -i et -u 2019-05-22 23:04:52 +04:00
Jephté Clain c7eca6ae7d cx-updatedev: ajout des options -l et -c 2019-05-21 10:54:54 +04:00
Jephté Clain 8b4067ab49 bug 2019-05-21 09:50:42 +04:00
Jephté Clain 3971dca710 scripts pour gérer projets composer 2019-05-21 09:40:15 +04:00
Jephté Clain c66eee117e scripts pour gérer projets composer 2019-05-21 09:31:23 +04:00
Jephté Clain 7c135faa60 fconv, fnconv: support de sed 2019-05-18 07:44:46 +04:00
Jephté Clain 72c3512072 dk: bug dans la détection du type de projet 2019-05-10 16:29:30 +04:00
Jephté Clain 0891e89278 sqlmig: corriger la lecture des paramètres 2019-05-09 12:48:17 +04:00
Jephté Clain d197fc0420 sqlmig: support de l'importation directe des fichiers csv 2019-05-09 12:21:07 +04:00
Jephté Clain d028c47842 dk: maj doc et support d'origine de profil 2019-05-02 13:46:08 +04:00
Jephté Clain b068a12c02 dk: maj doc et support de branche de profil 2019-05-02 13:39:24 +04:00
Jephté Clain d7c981d257 dk: afficher l'adresse ip 2019-04-17 02:31:09 +04:00
Jephté Clain 7ec538187b dk: renommer service en systemd-unit 2019-04-10 07:25:20 +04:00
Jephté Clain 43c5445603 Intégration de la branche release-9.3.0 2019-04-02 16:03:38 +04:00
Jephté Clain 0054d4de70 Init changelog & version 9.3.0 2019-04-02 16:03:38 +04:00
Jephté Clain 6a03853aa7 ajout de update-apps en natif 2019-04-02 15:59:47 +04:00
Jephté Clain 6462bec2c6 dk: ajouter exec, maj doc 2019-03-28 10:53:50 +04:00
Jephté Clain 7a728a9d34 dk: stop, logs et down acceptent maintenant un argument 2019-03-28 10:19:55 +04:00
Jephté Clain df788f6159 support mariadb 2019-01-17 09:16:01 +04:00
Jephté Clain edaaec19ee bug 2019-01-14 16:09:03 +04:00
Jephté Clain 41089f7ed0 dk: ajout de l'action bs 2018-12-09 22:33:07 +04:00
Jephté Clain af2b74f31f sqlmig: init crée aussi 02grants.sql 2018-12-08 15:48:12 +04:00
Jephté Clain de5727e7e2 Intégration de la branche release-9.2.0 2018-12-08 11:58:23 +04:00
Jephté Clain 49c8e756e6 Init changelog & version 9.2.0 2018-12-08 11:58:23 +04:00
Jephté Clain 71bb5aaaec bug 2018-12-08 11:57:53 +04:00
Jephté Clain 44b1954a43 dk: s'assurer que docker-compose et docker existent quand on crée le service 2018-12-07 16:04:18 +04:00
Jephté Clain d70825c296 dk: bug dans la définition du service 2018-12-01 23:04:28 +04:00
Jephté Clain 45d912d495 EnsureVM: être en mode shared par défaut 2018-11-27 23:15:04 +04:00
Jephté Clain 3292686e33 EnsureVM: ne plus chercher à décharger les modules par défaut 2018-11-24 16:28:57 +04:00
Jephté Clain 5139c09d70 Intégration de la branche release-9.1.0 2018-11-22 15:40:33 +04:00
Jephté Clain 25a4f9640d Init changelog & version 9.1.0 2018-11-22 15:40:33 +04:00
Jephté Clain ba29496150 dk: génération d'un service systemd 2018-11-22 15:34:07 +04:00
Jephté Clain f72dd86584 option -n pour pcrone le clone pas le dépôt nouvellement créé 2018-11-21 22:19:35 +04:00
Jephté Clain 01325d0c23 sqlmig: support chemin config/sqlmig et bug avec csv_null 2018-11-19 22:24:28 +04:00
Jephté Clain 45da726704 dk: ajout de l'option --fake pour afficher les commandes 2018-11-19 09:56:04 +04:00
Jephté Clain dcb637e054 dk: support de --no-cache pour docker-compose build 2018-11-16 21:22:05 +04:00
Jephté Clain 9c6f606daa Intégration de la branche update-pcrone 2018-11-16 20:53:43 +04:00
Jephté Clain 764dd53bf8 maj prefixe et meilleur affichage des erreurs 2018-11-16 20:53:33 +04:00
Jephté Clain 307fa4827a dk: option -j pour désactiver le cache 2018-11-16 20:48:51 +04:00
Jephté Clain 45c6422e62 profils pour docker-machine 2018-11-16 16:25:33 +04:00
Jephté Clain a9004fa1d2 dk: PROFILE est exporté 2018-11-16 14:16:16 +04:00
Jephté Clain 434a87019f Intégration de la branche release-9.0.0 2018-11-15 09:40:20 +04:00
Jephté Clain 6d0b122a8f Init changelog & version 9.0.0 2018-11-15 09:40:20 +04:00
Jephté Clain af969e4876 maj de l'url source de nutools 2018-11-15 09:40:06 +04:00
Jephté Clain b0d9cd91bb Intégration de la branche release-8.3.0 2018-11-15 09:32:01 +04:00
Jephté Clain 0c4af8a27a Init changelog & version 8.3.0 2018-11-15 09:32:01 +04:00
Jephté Clain 7ff32caed0 dk brd honore les scripts de build 2018-11-14 14:28:24 +04:00
Jephté Clain 3293d09e90 support docker-machine use 2018-11-12 16:36:58 +04:00
Jephté Clain e6be47eb32 ajouter de nouveaux formats pour parse_date 2018-11-10 09:58:22 +04:00
Jephté Clain 1151b5c01a latin1compat gère les points de suspension 2018-11-08 15:18:10 +04:00
Jephté Clain 2f86786c94 ajouter le template pour yaml 2018-11-08 10:25:44 +04:00
Jephté Clain e9d0aeebaf Intégration de la branche release-8.2.0 2018-11-02 15:06:18 +04:00
Jephté Clain 0193e7c35d Init changelog & version 8.2.0 2018-11-02 15:06:18 +04:00
Jephté Clain 7583dedaea Intégration de la branche update-pff 2018-11-02 15:05:54 +04:00
Jephté Clain 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
Jephté Clain 4f7cb900d2 dk: support de .compose.env pour le nom du projet 2018-10-09 19:12:07 +04:00
Jephté Clain 9d991e2d43 pcrone: possibilité de créer des dépôts gogs 2018-10-09 11:14:05 +04:00
Jephté Clain e3ba5800c0 dk: corriger push 2018-10-09 10:02:57 +04:00
Jephté Clain 48c662be2e gérer les tags autrement. ajouter push 2018-10-08 11:50:56 +04:00
Jephté Clain 566f1d7afb tailor.py: possibilité de modifier les préréglages par les options 2018-10-06 16:46:15 +04:00
Jephté Clain f34b63a51e bug 2018-10-01 20:49:00 +04:00
Jephté Clain 2873638aa5 afficher le profil courant 2018-10-01 09:28:20 +04:00
Jephté Clain 3a4cc1258d Intégration de la branche release-8.1.0 2018-09-28 08:39:31 +04:00
Jephté Clain 22adfe63ee Init changelog & version 8.1.0 2018-09-28 08:39:31 +04:00
Jephté Clain e74480cccc dk: action build par défaut 2018-09-27 21:51:33 +04:00
Jephté Clain 56b18a4eb6 dk: rendre overridable VERSION 2018-09-27 21:46:24 +04:00
Jephté Clain ed180b5bfb dk pour faciliter l'utilisation de docker 2018-09-27 21:00:45 +04:00
Jephté Clain 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
Jephté Clain a5be8d8770 maj gitignore initial 2018-09-10 07:54:53 +04:00
Jephté Clain 19267dd993 utempl: support du datage automatique des fichiers 2018-07-21 10:34:02 +04:00
Jephté Clain dbf965db90 Intégration de la branche release-8.0.0 2018-07-21 10:21:05 +04:00
Jephté Clain 3ac0859c0a Init changelog & version 8.0.0 2018-07-21 10:21:04 +04:00
Jephté Clain a60f23a2af maj version ulib 2018-07-21 10:20:53 +04:00
Jephté Clain 6cfb62b92d sqlmig: ignorer les opérations de maintenance 2018-07-21 10:19:23 +04:00
Jephté Clain 305a1808bf bug 2018-06-19 09:06:49 +04:00
Jephté Clain 6184fde5a2 tailor.py: avec le preset php, traiter \n 2018-06-19 01:15:39 +04:00
Jephté Clain 7676c7635a tailor.py: ajouter l'analyse de php fatal error 2018-06-18 23:18:07 +04:00
Jephté Clain 775bc8eee6 tailor.py: préréglages pour apache et php 2018-06-18 22:10:00 +04:00
Jephté Clain d620760681 sqlmig: support des préfixes alphanumériques pour les fichiers csv 2018-06-18 09:06:02 +04:00
Jephté Clain fe0e2718d8 maj doc 2018-06-12 10:44:01 +04:00
Jephté Clain 300d42ab04 cosmetic 2018-06-07 07:33:22 +04:00
Jephté Clain 16114f54d6 maj doc 2018-06-04 15:37:14 +04:00
Jephté Clain 827dd141b7 sqlmig: l'option -f supporte plusieurs fichiers 2018-06-04 14:26:29 +04:00
Jephté Clain e78ec7f61c sqlmig: support des préfixes avec '.' pour les conversions csv --> sql 2018-06-04 14:06:19 +04:00
Jephté Clain 0ae44bd3ed maj scripts docker 2018-06-03 13:29:53 +04:00
Jephté Clain 1a2f6c4335 maj docker 2018-06-02 22:00:01 +04:00
Jephté Clain cdd152f716 maj docker 2018-06-02 21:55:40 +04:00
Jephté Clain 04e37db5cb docker: ajout run 2018-06-02 19:52:40 +04:00
Jephté Clain 75385a76bf cosmetic 2018-06-02 19:15:20 +04:00
Jephté Clain c1d98a01dc interpréteur interactif sous docker 2018-06-02 18:29:18 +04:00
Jephté Clain ba2c8063a8 image docker 2018-06-02 18:20:02 +04:00
Jephté Clain e621a5671e sqlmig: possibilité de spécifier csv_null pour la conversion des fichiers csv 2018-05-31 15:28:25 +04:00
Jephté Clain 6f1b8b4926 mysqlloadcsv: bug avec les valeurs de la forme 00+ 2018-05-31 02:25:49 +04:00
Jephté Clain a88c24e747 sqlmig: ajout de l'option --connect 2018-05-30 07:18:48 +04:00
Jephté Clain bad6c4811a sqlmig: corriger le suivi des maj admin 2018-05-24 22:53:32 +04:00
Jephté Clain 4b85c93251 sqlmig: support des suffixes pour les noms de base de données 2018-05-24 22:13:06 +04:00
Jephté Clain 9600fb801a sqlmig: bug avec option conflictuelle 2018-05-22 10:23:05 +04:00
Jephté Clain 7181725056 sqlmig: ajout de l'option --update-one 2018-05-15 10:02:43 +04:00
Jephté Clain 6a6b2a5f32 sqlmig: mode fake pour afficher les opérations qui doivent être faites 2018-05-11 11:13:33 +04:00
Jephté Clain e0d6910271 nulib: afficher les lignes d'action 2018-05-09 00:18:25 +04:00
Jephté Clain c7286d1406 nulib: corriger l'affichage du menu 2018-05-08 21:45:53 +04:00
Jephté Clain 4d2bf89e23 settings pour projet eclipse 2018-05-08 21:45:37 +04:00
Jephté Clain 0bbcef690b nulib: génération d'une table 2018-05-08 15:20:45 +04:00
Jephté Clain 51f4e92c3d ajouter projet pydev pour nulib 2018-05-08 08:50:11 +04:00
Jephté Clain 8b8cffd9f8 mysqlloadcsv: insérer les valeurs dans une transaction 2018-05-07 14:26:05 +04:00
Jephté Clain d4137906be ulib/web: possibilité d'avoir un container non fluid pour menu 2018-05-07 11:23:59 +04:00
Jephté Clain 6e142b7e61 bug 2018-05-07 11:12:49 +04:00
Jephté Clain 1a3550ed9a nulib/web: ajout de redirect() et set_profile(). améliorer la lisibilité des arguments 2018-05-07 10:49:00 +04:00
Jephté Clain c58a6ccaf7 sqlmig: ne pas utiliser truncate par défaut 2018-05-06 15:26:22 +04:00
Jephté Clain 7bc3af2869 sqlmig: conversion automatique des fichiers *.csv en *.sql 2018-05-06 14:37:05 +04:00
Jephté Clain 4c43b01739 sqlmig: mode dépendant du profil 2018-05-06 11:50:45 +04:00
Jephté Clain 174c08759e sqlmig: support des fichiers spécifique au mode devel 2018-05-06 00:25:47 +04:00
Jephté Clain e493b49811 sqlmig: support des profils 2018-05-04 10:13:21 +04:00
Jephté Clain 66e1674c00 pff: support de DISTTYPE 2018-05-03 15:35:33 +04:00
Jephté Clain f1dca506fb sqlmig: support des mises à jour administratives 2018-05-03 14:17:30 +04:00
Jephté Clain 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
Jephté Clain 7f503ae2ab pff: utiliser git diff pour la colorisation 2018-04-30 15:08:06 +04:00
Jephté Clain 96449de8d6 base: page_maybe() affiche les codes couleurs 2018-04-30 14:42:21 +04:00
Jephté Clain 6e45dfe457 pff: bug avec filtres 2018-04-30 13:36:32 +04:00
Jephté Clain 60f3e4d344 Intégration de la branche nulib-experiment 2018-04-26 23:23:10 +04:00
Jephté Clain a3c5ffbd88 maj logo univ2017 2018-04-26 23:22:46 +04:00
Jephté Clain 4535b67045 support deploydb et pffprofile 2018-04-26 23:22:46 +04:00
Jephté Clain 7356c1da73 déploiement d'application webpyapp 2018-04-26 23:22:45 +04:00
Jephté Clain 1c3c07f8b2 début d'implémentation nulib 2018-04-26 23:22:45 +04:00
Jephté Clain db57d7958f mysqlloadcsv: support de l'option --prefix 2018-04-25 19:07:41 +04:00
Jephté Clain a4e758ec5d pff: afficher la version du projet 2018-04-17 17:01:52 +04:00
Jephté Clain 777bb1fc68 Intégration de la branche update-pff 2018-04-17 09:31:00 +04:00
Jephté Clain 9c86a6ff6e début du support de la variable PROTECTS 2018-04-17 06:29:47 +04:00
Jephté Clain 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
Jephté Clain fa6e87a425 possibilité de spécifier merge_strategy pour les conflits 2018-04-17 05:18:11 +04:00
Jephté Clain 5f68f3eb50 l'utilisateur doit faire Commit ou Abort. sinon lui demander son choix 2018-04-17 04:50:28 +04:00
Jephté Clain 33b7dbabd8 chrono.py: ajouter le bouton pause 2018-04-15 03:30:31 +04:00
Jephté Clain 49df32157d uinst: support des exclusions pour chmod et chown 2018-03-20 12:03:17 +04:00
Jephté Clain daafe41e63 pcrone: créer les fichiers .gitignore et .gitattributes 2018-03-14 09:59:49 +04:00
Jephté Clain 3c8b6f8d5f norm_properties: supprimer les espaces de fin 2018-03-08 16:36:46 +04:00
Jephté Clain 045885c77a les fichiers properties sont parfois considérés comme binaires 2018-03-08 16:05:11 +04:00
Jephté Clain 1b1589e046 pff: ne pousser que si un remote est défini pour la branche 2018-03-08 15:49:52 +04:00
Jephté Clain 13440e2fd9 pff: support des filtres à l'intégration 2018-03-08 15:44:30 +04:00
Jephté Clain ee3b58354c pff: support du paramètre MKDIRS 2018-03-08 14:54:40 +04:00
Jephté Clain 56972a669c toinst: ajouter l'option --ct 2018-03-08 14:50:19 +04:00
Jephté Clain 952b4edcef pff: raccourcis pour abort() et done() 2018-03-08 14:50:07 +04:00
Jephté Clain 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
Jephté Clain 82c366957f pff: les fichiers du profil Base sont en lecture seule 2018-03-08 10:36:22 +04:00
Jephté Clain 2fa28d5cd3 pff: honorer l'ordre de .pff.conf pour le premier profil 2018-03-07 11:07:35 +04:00
Jephté Clain af006c4db9 pff: sélectionner le premier profil par défaut 2018-03-07 11:01:32 +04:00
Jephté Clain e20757b45e Intégration de la branche update-pff 2018-03-06 13:08:59 +04:00
Jephté Clain cb21c53895 finaliser l'implémentation de patch_cmd() 2018-03-06 13:08:18 +04:00
Jephté Clain 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
Jephté Clain 4bc810843e corriger l'affichage de diff_cmd() 2018-03-06 13:08:06 +04:00
Jephté Clain 7299aeb98c suite implémentation patch_cmd() 2018-03-06 13:08:05 +04:00
Jephté Clain eee9a65c70 support de l'édition dans le profil ALL et rajouter les raccourcis -P, -T, -A 2018-03-06 13:08:05 +04:00
Jephté Clain 6b33929b17 début d'implémentation de patch_cmd() 2018-03-06 13:08:05 +04:00
Jephté Clain 2b1ad2b531 implémenter l'option -p avec edit_cmd() 2018-03-06 13:07:53 +04:00
Jephté Clain a0752e9d94 maj doc 2018-03-01 14:27:31 +04:00
Jephté Clain ad303993e0 Intégration de la branche update-pu 2018-03-01 10:22:33 +04:00
Jephté Clain 7408760ca7 finaliser l'implémentation 2018-03-01 10:22:29 +04:00
Jephté Clain 1ec281d746 début d'implémentation 2018-02-26 16:28:41 +04:00
Jephté Clain 5d828c4894 pff: créer automatiquement le profil Common 2018-02-23 09:22:13 +04:00
Jephté Clain 9481cad10c pff: bug avec l'intégration de fichier origines locaux 2018-02-23 09:15:53 +04:00
Jephté Clain f17dccaaf9 maj des logos de l'université 2018-02-14 12:15:40 +04:00
Jephté Clain a61452c816 pff: enregistrer les profils définis et les créer sans confirmation si nécessaire 2018-02-07 17:23:47 +04:00
Jephté Clain 86963ec09f pff: cosmetic 2018-02-07 16:58:54 +04:00
Jephté Clain 9eaed33548 pff -d: ajout de --list-names pour afficher seulement les noms de fichiers 2018-02-07 16:43:06 +04:00
Jephté Clain 70165cb09f pff: ajout de --diff et --infos -l 2018-02-07 16:22:50 +04:00
Jephté Clain ed0659f2a1 pff: améliorer l'affichage de pff --infos 2018-02-07 15:32:11 +04:00
Jephté Clain f0ae5ae118 Intégration de la branche update-pff 2018-02-07 12:32:54 +04:00
Jephté Clain 9a37329cc1 utiliser le profil Common par défaut 2018-02-07 12:32:46 +04:00
Jephté Clain 6f6fc747e2 maj doc 2018-02-07 12:03:51 +04:00
Jephté Clain 7954e7fcc8 pff: support des projets pff déployés avec toinst 2018-02-05 10:20:43 +04:00
Jephté Clain ab535b759b toinst: exclure le répertoire des profils pff 2018-02-05 10:09:30 +04:00
Jephté Clain 625f93d80e Intégration de la branche add-pff 2018-02-01 14:58:21 +04:00
Jephté Clain 4a8c5d1e3d completion automatique 2018-02-01 14:57:38 +04:00
Jephté Clain 151e083a49 multiconf: ajout de conf_update() 2018-02-01 14:57:38 +04:00
Jephté Clain 7c86854605 maj du prompt 2018-02-01 14:57:38 +04:00
Jephté Clain 20d083b4f7 implémentation initiale 2018-02-01 14:57:38 +04:00
Jephté Clain 4a46cd33f0 maj sqlcsv 2018-01-24 10:12:55 +04:00
Jephté Clain bdd859c5ae bug avec l'utilisation de gensub() 2018-01-23 11:07:48 +04:00
Jephté Clain bda961fc5b update-nutools: support de l'option --devel 2018-01-13 19:03:37 +04:00
Jephté Clain f35e9e8560 ufile: ajouter le mode local uniquement 2018-01-13 17:42:47 +04:00
Jephté Clain bc4c8cbb81 Intégration de la branche ufile-named-rules 2017-12-27 10:21:42 +04:00
Jephté Clain 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
Jephté Clain 0e6f55abb9 support des variables 2017-12-27 10:21:00 +04:00
Jephté Clain 191d3c223d ufile: support des règles nommées 2017-12-27 07:44:51 +04:00
Jephté Clain 2d84c44c5b Intégration de la branche release-7.4.0 2017-12-20 19:01:55 +04:00
Jephté Clain b40388f3a5 Init changelog & version 7.4.0 2017-12-20 19:01:55 +04:00
Jephté Clain 48e43599b8 sqlcsv: possibilité de spécifier le chemin de chargement des drivers jdbc 2017-12-20 19:01:10 +04:00
Jephté Clain a7e6228669 ufile: par défaut -c ne charge que le fichier spécifié 2017-12-17 11:46:58 +04:00
Jephté Clain 0b595837ba support de quelques combinaisons de diacritiques 2017-11-13 12:05:12 +04:00
Jephté Clain 4f520db786 authftp: support préliminaire de --sftp 2017-11-13 11:21:17 +04:00
Jephté Clain 4f11cc40d6 ufile: possibilité d'écraser les fichiers sans confirmation 2017-10-28 11:25:11 +04:00
Jephté Clain 9132d6d6ec Intégration de la branche release-7.3.0 2017-10-19 12:12:34 +04:00
Jephté Clain b07b894e01 Init changelog & version 7.3.0 2017-10-19 12:12:34 +04:00
Jephté Clain 72d7d15cca maj version ulib 2017-10-19 12:11:41 +04:00
Jephté Clain 9fb19b4cef ulib/multiconf: améliorer conf_install() 2017-10-19 12:11:03 +04:00
Jephté Clain 6c3ae24a67 openurl: supprimer la sortie erreur pour cacher les warnings GTK 2017-10-19 09:12:08 +04:00
Jephté Clain 528a281e30 em: supprimer la sortie d'erreur par défaut. rendre configurable la géométrie 2017-10-18 06:55:51 +04:00
Jephté Clain 489b31ded9 moiso: améliorer l'ergonomie pour le démontage 2017-10-18 06:37:44 +04:00
Jephté Clain 7bd0a95b3e ufile: support des pattern regex 2017-10-17 22:45:47 +04:00
Jephté Clain 6130c2ff7f chrono.py: 0 est équivalent à la chaine vide 2017-10-17 21:46:01 +04:00
Jephté Clain 9c5b46b372 pyulib: ajouter ShConfig 2017-10-16 04:37:26 +04:00
Jephté Clain f31f5f72ad corriger un problème de compilation sur OL6 2017-10-13 12:02:19 +04:00
Jephté Clain ab8ede8c28 awk: support du format dd/mm/yy 2017-10-12 21:03:59 +04:00
Jephté Clain 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
Jephté Clain 5bf55e5999 bug 2017-09-28 10:43:04 +04:00
Jephté Clain b6ff411b8f maj doc uscrontab 2017-09-27 21:58:29 +04:00
Jephté Clain 1569bfb29a Intégration de la branche release-7.2.0 2017-09-26 17:01:37 +04:00
Jephté Clain 45573e23f7 Init changelog & version 7.2.0 2017-09-26 17:01:35 +04:00
Jephté Clain 1e576da4ae multiconf: rajouter conf_upgrade() dans conf_auto() 2017-09-25 23:18:51 +04:00
Jephté Clain eeef48dfe1 Intégration de la branche update-config 2017-09-24 14:07:29 +04:00
Jephté Clain ea45055864 implémentation simplifiée avec conf_upgrade() 2017-09-24 14:07:09 +04:00
Jephté Clain efc60b36ab description des modifications 2017-09-24 11:38:26 +04:00
Jephté Clain 36eec4a517 Intégration de la branche update-ufile 2017-09-22 21:15:34 +04:00
Jephté Clain 2afffefa75 ne pas implémenter la recherche automatique de fichier de configuration 2017-09-22 21:15:04 +04:00
Jephté Clain 6ec37f6af4 ufile: implémenter l'option -r 2017-09-22 21:14:16 +04:00
Jephté Clain 6e8c200803 maj TODO 2017-09-22 20:44:32 +04:00
Jephté Clain cf629e62e1 uscrontab: support des oneshot vars 2017-09-21 02:09:05 +04:00
Jephté Clain a66c0c231f uscrontab: ajout des options -@, -H, -M 2017-09-21 01:20:56 +04:00
Jephté Clain 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
Jephté Clain 8ad2e4c1e1 lftp ne supporte pas l'utilisation des guillemets 2017-09-20 23:58:30 +04:00
Jephté Clain 7fb81a0bc9 désactiver la vérification du certificat par défaut 2017-09-20 09:12:22 +04:00
Jephté Clain dbc3daa737 multiconf: bug 2017-09-19 08:19:12 +04:00
Jephté Clain aff1c15931 multiconf: support des variables de type path et compatibilité avec bash 4.3 2017-09-18 11:47:20 +04:00
Jephté Clain 8e17fb1fb3 Intégration de la branche add-multiconf 2017-09-15 07:05:12 +04:00
Jephté Clain a916180ef2 ajouter conf_install pour installer les fichiers de configuration dans un répertoire standardisé 2017-09-14 23:11:26 +04:00
Jephté Clain 0372a5c44c ufile charge les fichiers de ~/etc/ufile.d/ 2017-09-14 22:21:53 +04:00
Jephté Clain 7d1ec90345 simplifier l'API 2017-09-14 22:21:34 +04:00
Jephté Clain c9886925a3 fin implémentation 2017-09-14 21:51:23 +04:00
Jephté Clain 72e0c369c3 maj doc 2017-09-14 08:28:40 +04:00
Jephté Clain f4725018aa squelette initial 2017-09-13 08:13:11 +04:00
Jephté Clain 1267056d2f Intégration de la branche release-7.1.0 2017-09-10 19:20:38 +04:00
Jephté Clain 3f105f12d5 Init changelog & version 7.1.0 2017-09-10 19:20:38 +04:00
Jephté Clain f131e21177 uwatch: ajout de l'option -r 2017-09-09 21:25:40 +04:00
Jephté Clain d99718e692 cosmetic 2017-09-07 16:11:44 +04:00
Jephté Clain 1aee0cb4e6 maj sqlcsv 2017-09-07 15:32:23 +04:00
Jephté Clain f05382cdac Intégration de la branche release-7.0.0 2017-08-25 15:54:19 +04:00
Jephté Clain 747c056aec maj ulib 2017-08-25 15:54:10 +04:00
Jephté Clain 1ee4de04c4 Init changelog & version 7.0.0 2017-08-25 15:53:53 +04:00
Jephté Clain e4f154efc6 uawk: possibilité de lancer les versions locale-aware 2017-08-25 15:45:39 +04:00
Jephté Clain ef00e07b21 bug 2017-08-24 13:39:49 +04:00
Jephté Clain 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
Jephté Clain 2f448d542d ussh: problèmes de compatibilité 2017-07-29 23:02:39 +04:00
Jephté Clain 2cc24119b5 bug potentiel 2017-07-26 11:44:17 +04:00
Jephté Clain 65bd363a13 webpyapp: réorganiser les fichiers pour supporter des librairies locales 2017-07-20 09:13:51 +04:00
Jephté Clain 0b39b2324b webpyapp: les variables de server.conf sont configurables 2017-07-20 01:30:56 +04:00
Jephté Clain d1a1d4d664 webpyapp: cosmetic 2017-07-20 00:16:02 +04:00
Jephté Clain 46fbec7974 webpyapp: bootstrap facilité des sessions 2017-07-19 23:46:46 +04:00
Jephté Clain c541958828 webpyapp: support du mode développement 2017-07-19 23:46:37 +04:00
Jephté Clain e2ea2ead3c ufile: ajout de --force-cp 2017-07-19 23:12:06 +04:00
Jephté Clain eacc23902f Intégration de la branche release-6.7.0 2017-07-19 15:45:16 +04:00
Jephté Clain 8e404c4f65 Init changelog & version 6.7.0 2017-07-19 15:45:15 +04:00
Jephté Clain 1b922757c0 apacheconfig: support d'un script post-update.sh 2017-07-18 10:49:45 +04:00
Jephté Clain 70fedc230c webpyapp: support de bootstrapcss 2017-07-18 10:36:19 +04:00
Jephté Clain eca8c11900 webpyapp: installation du service 2017-07-18 09:32:17 +04:00
Jephté Clain ce52d25855 support de l'activation de services systemd uniquement 2017-07-18 09:31:50 +04:00
Jephté Clain a76d28e9fd webpy: chargement automatique de la configuration depuis server.conf 2017-07-18 07:56:15 +04:00
Jephté Clain 070f5bfff6 début de template webpyapp 2017-07-17 21:59:20 +04:00
Jephté Clain 3f464145aa web.py: ajout de la fonction _utf8plaintext() 2017-07-17 21:59:00 +04:00
Jephté Clain 335ca05aaa compatibilité avec les vieilles versions de bash 2017-07-17 16:15:30 +04:00
Jephté Clain 04717850a5 support de stretch pour la completion 2017-07-10 20:07:31 +04:00
357 changed files with 47462 additions and 19199 deletions

View File

@ -1,3 +1,635 @@
## Version 11.3.0 du 24/09/2024-16:02
* `625d5f1` bug mineur
* `e308202` dkbuild: améliorer from_glob()
* `5c03184` lgrep, lless: modifier la doc pour ne parler que d'un fichier
## Version 11.2.0 du 21/06/2024-20:34
* `21042e4` bug
* `e4176df` reginc: possibilité de renommer des fichiers
* `1787aa2` bug
* `d1f77aa` dkbuild: support dist none et tag LATEST
* `c2cfd77` bug
* `e7745c2` dk: support --plain-output
* `ce8f541` dkbuild: -g pour --profile
* `30594aa` maj distributions
* `2df175e` dkbuild: cosmetic
* `fbb05f8` support des versions AMUE
## Version 11.1.0 du 01/02/2024-20:59
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers
* `5d6c6b4` synchroniser pff et nulib/pff
* `90bda71` pff: support des répertoires liés
* `7d7b88a` autoriser les feature branches qui commencent par wip/
* `5cc1826` dk et dkbuild: support .composer.yaml et setup_image
* `0bf0f48` dk: support ~/.dkbuild.env
* `b818e11` dkbuild: ajout de --plain
* `ad14de3` dkbuild: configuration profil prod par défaut
* `54a5b54` Sscreen: support des cas où screen n'est pas dans le PATH
* `5a06851` dkbuild: support profil par défaut
* `a855b04` dkbuild: les versions de profil sont ordonnées comme les versions de distribution
* `e531553` dkbuild: sans --all-profiles, ne build que dans le profil par défaut
* `db1467b` bug
* `3123d8e` dkbuild: mappings par défaut
* `d9b1485` charnière entre java 8 et java 11
* `744a3fa` dkbuild: indiquer si la version de Java demandée n'est pas trouvée
* `2803868` dkbuild: marquer plus d'action comme étant du build
* `4f7bc3f` dkbuild: bug avec -u seul
* `8cdc3cb` modifs.mineures sans commentaires
## Version 11.0.0 du 05/09/2023-14:29
* `ddfbc00` maj des images par défaut dk et dkbuild
* `e33f2a5` ajout registry privé
* `f245e17` image par défaut en prod
* `efe31b8` support java17
* `5cb4112` dkbuild: bug profil unitaire
* `f424f41` dkbuild: -u n'implique plus -b
* `e5a1473` dkbuild: implémenter -u
## Version 10.0.0 du 12/08/2023-21:06
* `bfdf9b5` support système sans python2
* `108215f` maj registry pour devel
* `6ddb870` dkbuild: support profil nu
* `c0b130f` dkbuild: support profil jclain
* `ae20e49` modifs.mineures sans commentaires
* `2e5101d` ajout de lgrep
* `cff4833` ajout de ldiff
* `9c6e7a8` renommer less1 en lless
* `e9d52d8` ajout de less1 pour lire des fichiers latin1
* `d3d86c6` cssh: forcer la désactivation du verrouillage de la session
* `b761cb6` Sscreen: désactiver verrouillage de la session
## Version 9.16.0 du 15/06/2023-15:28
* `f36be0d` uscrontab: s'assurer que USER est défini
* `63674ef` cosmetic
* `ee80091` cosmetic
## Version 9.15.0 du 14/06/2023-15:41
* `2a02307` update-nutools: prendre le dépôt public par défaut
* `27a82e4` ajouter les numéros de version des debian et ubuntu
* `92157de` regins: implémentation initiale
* `efe9fbb` dk: ajout de XX pour prune-cache
* `dc94b5c` dkbuild: bug avec les chemins
* `5e87665` dk: X supprimer aussi le cache
* `9c1a8e6` dk: composer.phar est cherché dans sbin/ aussi
* `81cefdc` regcp: activer support regexp-extended
* `c5796d6` modifs.mineures sans commentaires
* `6919352` maj du message de commit par défaut
* `7ba7d1c` pcxone: correction de l'url généré des dépôts git
* `9d75943` repoctl: correction de l'url généré des dépôts git
## Version 9.14.0 du 15/03/2023-17:48
* `3ecb127` support docker compose v2
* `432ab6f` dkbuild: composer et mvn ne sont lancés qu'en mode build
* `01c14bb` regcp: ajout de l'option -n
* `0913c2e` upassword: rendre configurable le nombre de blocs
* `61433fb` dkbuild: revert image par défaut pour javabuilder
* `e4e0a55` pff: support mode vcs offline
* `e08c66b` pff: support des archives sh de l'amue
* `0d11932` dkbuild: corriger l'image javabuilder par défaut
* `3ead1f3` dkbuild: utiliser automatiquement l'image si nécessaire pour composer ou maven
* `93de256` ajout de regcp et regmv
* `5e33a36` rendre cohérent les en-têtes des scripts
* `9e13515` ajout exemple .dkbuild.env
* `c9e8110` dkbuild: corriger calcul des tags
* `c671cb3` dkbuild: fin support tag & last version
* `1a764f1` dkbuild: début support tag & last version
* `027f9b8` dkbuild: ajout de from_glob()
* `2293239` maj doc
* `9fc07bb` dkbuild: ajout build add-tags=
* `7b15f94` dkbuild: support préfixe et suffixe pour version
* `f2cfaee` dkbuild: calculer extract automatiquement
* `c36b8fb` dkbuild: corriger le support des paramètres sans argument
* `68a42d0` dkbuild: maj templates
* `306e77f` dkbuild: calcul de la version à partir d'un fichier ou d'un chemin
* `b006bb4` Maj des fichiers
* `6963d41` uproject: push -f force le push
* `9665d5a` cx-conndev: maj doc
* `137dfa9` repoctl, uproject: ne plus enlever le suffixe .git
* `440d2aa` upassword: maj nombre de blocs par défaut
* `f4047a3` ipaddr: forcer la sortie couleur
* `af1bdd3` Maj des fichiers
* `85e77e4` dkbuild: corriger le calcul de la dernière version d'une distribution
* `a56ec0e` dkbuild: améliorer clean
* `d6e78b9` dkbuild: maj messages debug
* `1699cc5` dkbuild: les fichiers d'environnement par défaut ont l'extension .env
* `2ae8406` maj doc dkbuild
* `1db7d08` maj doc cx-shelldev
* `aba08c2` maj update-nutools
* `e83b6d1` possibilité de choisir l'adresse IP
* `af9096d` ajouter le template fichier vide
* `89f0c09` typo
* `fb434c2` bug parse_date
* `f7ab14f` dkbuild: implémentation initiale
* `f46812f` cx-conndev: maj doc
## Version 9.13.0 du 07/02/2022-22:20
* `06686d9` pff: support nettoyage wsdl/
* `9a018a6` pdev: ajout de --check
* `a932a1a` la branche par défaut est master en prod
* `cb09f4d` maj template yaml
* `f895222` foreach: rendre -g et -S compatibles
* `4f7bcbc` maj template CSS
* `5cdd93d` upassword: réintégrer password wom
* `7030b87` dk: ajouter mvn_action=install
* `8a682ed` upassword: changer le générateur aléatoire
* `a85cdf6` Maj des fichiers
* `d75783b` dmcerts: cosmetic
* `11e6021` dmcerts: certificat client avec la même durée que le CA
* `938307c` ajout dmcerts
* `8b49084` typo
* `98c1ac8` ajouter le support de bullseye
* `28d42b0` authftp: support des mots de passe avec des caractères spéciaux
* `dfdfd59` sélectionner java 1.6 par défaut pour worun
* `6af0359` pff: ajout de la commande normalisée new_cmd_amue_clean_libs
* `b3a44d0` pff: bug
* `111463a` pff: ajout AUTO_CMDS et NEW_CMDS, supprimer MKDIRS
* `fe839f4` woinst: bug
* `ba8e1a1` upasword: ajout des mot de passe javamonitor de webobjects
* `a75b91e` network: utiliser 127.0.1.1 pour dhcp
* `dfb5fc3` maj ulib/redhat
* `40c9cb9` supprimer docker/ qui est obsolète
* `580e20b` supprimer nulib de la distribution de nutools
* `da28d8b` pff: changer le format des fichiers de version
## Version 9.12.0 du 29/03/2021-09:41
* `3d54e37` pff: bug origext
* `4607f0f` possibilité de spécifier compat bash_completion si pas debian
* `4bf4f6d` authftp: info pour host key verification failed
* `47e0583` forcer l'utilisation de python2
* `026b849` dmctl: support de l'import de plusieurs machines avec -l
* `31e43da` dk: support de 'system' comme alias de 'none' pour COMPOSER_PHP et MAVEN_JAVA
* `b191552` dk: bug dans le mapping par défaut dans le profil test
* `1d4c4b4` dk: support COMPOSER_PHP=none
* `b3983ed` dk: support des mappings d'hôtes
* `543d2d2` dk: mvn est aussi un frontend pour lancer java
* `f1a9c7a` dk: début support projets maven
* `ad44a1c` dk: support build dans une image pour les projets composer
## Version 9.11.0 du 11/12/2020-15:43
* `01e940b` repoctl: permettre create -u
* `e453ed2` maj doc
* `434a8bc` compileAndGo: support java 11
## Version 9.10.0 du 12/11/2020-23:05
* `24d0519` dk: support merge .shared_env et .machine_env
* `45c40d7` dk: support de --pull
* `c921d2a` pff: support de NOUPSTREAM
* `edf956f` dk: BRANCH peut aussi être un ^COMMIT
* `85842f3` renommer start-screen en Sscreen
* `e395720` maj doc
* `4603b1a` bug
* `a91542b` maj .gitattributes par défaut
* `51c4c33` support sélection java 11
* `82a7952` dm: support des aliases pour ssh aussi
* `d1d32de` dk: bug avec update-devel
* `037cb1a` maj template sql
* `04d037f` support rhel8 / ol8
* `725ba6d` cssh: donner un nom à la session
## Version 9.9.0 du 21/09/2020-18:08
* `2ec6c21` support gros doigt de python2 sur les systèmes modernes
* `bc1a740` bug
* `ada594a` dm: support des aliases
* `856c948` repoctl: ajout de update-origin
* `cc1b45d` support de l'option -u
* `28ceb74` cosmetic
* `751e372` bug
* `c5e1536` support de la définition des aliases et des profils dans les répertoires de cluster
* `14beb13` dk: support minimal maven
* `f474657` dk: ajout de COMPOSER_ARGS
* `1097975` cosmetic
* `bb7a4fc` foreach: ajout de l'option -S
* `e0e6178` dk: support de la sélection d'un service et de la machine sur laquelle tourne un service
* `07bea2c` cx-conndev: support klean
* `7254661` dk: support du nommage du répertoire pour le checkout
* `fb285e0` ne vérifier conndev.php que si c'est nécessaire
## Version 9.8.0 du 28/04/2020-16:42
* `e2b2f49` dk: vérifier que le répertoire destination existe avant rsync
* `c147a0c` dk: possibilité de spécifier les options de rsync
## Version 9.7.0 du 17/04/2020-10:20
* `f4f9b69` dk: bug avec la synchro d'un fichier
* `74190f7` dk: par défaut, les suffixes courants sont supprimés
* `9fad992` dk: support répertoire/fichier source
* `1d7e2d0` bug
* `7268cec` pff: workaround pour certaines erreurs de packaging
* `aa26966` dk: support build args avec la syntaxe NAME=VALUE
* `f7b3f90` dk: augmenter la largeur de la colonne node
* `1c4c1c3` dmctl: l'option -a supporte les répertoires
* `ccf3c67` dk: aliases de filtres
* `1b12cee` dk: afficher un warning si le profil n'est pas défini pour une machine
* `45976f4` dk: sta affiche le statut pour tous les services
* `1960c0c` dk: implémenter status
* `4f206d7` dk: frontend plus 'transparent'
* `d666859` dk: supprimer avec image:tag si possible
* `4ee346b` maj chemin ip
* `c9796b2` ipaddr: frontend pour ip addr
* `668eec1` dmctl: possibilité d'importer toutes les machines d'un répertoire
## Version 9.6.0 du 24/02/2020-09:13
* `b7492fc` dk: ajout de l'option -e
* `08c081a` modification pour support des valeurs spéciales (ne sont pas synchronisées) dans LDAP
* `98129cd` passer par un script annexe pour cssh
* `99c0ccd` dk: support de PHP_VERSION_MAX
## Version 9.5.0 du 28/01/2020-14:06
* `640a2b1` maj doc
## Version 9.4.4 du 27/01/2020-08:48
* `300935c` bug
## Version 9.4.3 du 24/01/2020-13:02
* `4ba6909` ajouter le support de buster pour la completion
## Version 9.4.2 du 24/01/2020-08:52
* `fd5b787` dk: bug
* `ad18983` maj de l'image par défaut
* `c33ff4c` ajouter le support de buster
* `247b449` dk: maj doc
* `28f4d39` dk: support de COMPOSER_PHP
* `f28df52` maj image composer
## Version 9.4.1 du 20/01/2020-14:46
* `6f01bac` dk: si la commande est inconnue, la transmettre à docker
* `175f6ed` cssh: traiter le cas où screen n'est pas disponible
* `73db728` umail: possibilité de spécifier le type de body
* `5fc55cc` dk: support des fonctions de nettoyage par profil
* `21274af` dk: APPS peut avoir une valeur dépendante du profil
* `f7f8889` support des filtres avec wildcards
* `747c563` repoctl: divers bugs
* `4fdd23c` dk: support limité de podman
* `5457228` dk: support des aliases pour les mappings pff
* `a55f9c4` dk: ajout de get-profile
* `ac7efad` dk: possibilité de forcer la suppression des images
* `5284838` typo
* `d5c5162` dk: dans build.env, une variable peut en mentionner une autre
* `f7d036a` repoctl: cosmetic
* `87b8d5b` Intégration de la branche update-repoctl
* `0866bbd` finaliser edit et implémenter get
* `8daf4ec` début implémentation edit
* `ef1c8f2` utiliser dk composer, et ne pas utiliser de container par défaut
* `269379f` dk: rendre le code overridable
* `aae3703` bug avec traitement des variables de docker-machine -u
* `f875093` dk: par défaut, forcer l'utilisation de la machine locale pour dk composer
* `c202a27` dk: support COMPOSER_SETUP et COMPOSER_CMD
* `921caa1` dk: le shell est lancé en root
* `ce98445` dk: support de composer shell
* `2b5ed18` dk: ajouter un frontend pour composer
* `29c54e7` dmctl: import/export de docker machines
* `de53bae` Intégration de la branche add-repoctl
* `600b824` support limité de pcrone et pclone
* `914f635` implémentation initiale de create, list, delete
* `a774497` squelette
* `5a444a6` dk: support pff
* `425e8a5` dk: maj format ps
* `52c3d7a` dk: ps, ls et rm prennent des filtres. ajout de pull
* `d5f8fa4` cx-updatedev: ajout de l'option -g
* `5fe5137` dk: support de COMPOSER_ACTION et sqlmig NOFIX
* `74cf35b` typo
* `0468623` alias pour docer-machine
* `3dfe542` dk: support de scripts génériques
* `488a257` délai pour éviter les maj intempestives d'eclipse
* `13ce5b8` dk: tagger aussi avec la distribution
* `d03b04f` dk: ajouter automatiquement le suffixe -$DIST à la version
* `6879491` maj doc
* `7fad363` cssh: compat avec les vieilles versionsd de linux
* `f65dda6` bug
* `bc7eebc` ajouter --with-registry-auth à dk update
* `8af50f4` nettoyage de logs webobjects
* `458ccd3` dk: support de certaines options pour dk run
* `c97bc6a` dk: support de la commande run
* `ae70f66` synchro des dépendances uniquement pour le type composer
* `f508dae` support des mises à jour en mode devel
* `60a4c73` cx-conndev: ajouter l'option -d
* `85ac283` cx-conndev: renommer l'option en --mysql-cmd
* `80db462` cx-conndev: ajout de l'option --cmd
* `4400ba7` ajout de ensure-vip
* `ae7ffeb` cx-updatedev: remplacer --ru par -w, --ud, --ur en fonction des besoins
* `9bfd515` dk -c est auto-complete friendly
* `a5a41d9` dk: support de fichiers compose non défaut
* `7e5859e` bug
* `b342960` bug
* `c44d1d3` dk: par défaut, ne pas ajouter le profil au nom de projet
* `aa4eb4a` cx-updatedev: ajout des mises à jour récursives
## Version 9.4.0 du 05/06/2019-10:15
* `fb96852` Intégration de la branche dk-deploy
* `386fc0d` implémenter service, update, scale
* `c2f43e6` optimiser l'utilisation de docker-machine
* `8cb3b2f` ajouter la commande deploy
* `5967541` cx-updatedev: ajouter l'option -j
* `d79e218` dk: support de push pour docker-compose
* `ccbfff4` dk: simplifier la gestion du nommage des services
* `50dee34` dk: support de build d'un service en particulier
* `99d5069` bug
* `a825f3b` bug
* `8c143e1` foreach: ajout de --cc
* `7e26ae1` foreach: ajout des raccourcis -G et -C
* `cbb34ec` cx-conndev: afficher les erreurs
* `7524a28` cosmetic
* `9b03dcd` cx-updatedev: ajout de -i et -u
* `c7eca6a` cx-updatedev: ajout des options -l et -c
* `8b4067a` bug
* `3971dca` scripts pour gérer projets composer
* `c66eee1` scripts pour gérer projets composer
* `7c135fa` fconv, fnconv: support de sed
* `72c3512` dk: bug dans la détection du type de projet
* `0891e89` sqlmig: corriger la lecture des paramètres
* `d197fc0` sqlmig: support de l'importation directe des fichiers csv
* `d028c47` dk: maj doc et support d'origine de profil
* `b068a12` dk: maj doc et support de branche de profil
* `d7c981d` dk: afficher l'adresse ip
* `7ec5381` dk: renommer service en systemd-unit
## Version 9.3.0 du 02/04/2019-16:03
* `6a03853` ajout de update-apps en natif
* `6462bec` dk: ajouter exec, maj doc
* `7a728a9` dk: stop, logs et down acceptent maintenant un argument
* `df788f6` support mariadb
* `edaaec1` bug
* `41089f7` dk: ajout de l'action bs
* `af2b74f` sqlmig: init crée aussi 02grants.sql
## Version 9.2.0 du 08/12/2018-11:58
* `71bb5aa` bug
* `44b1954` dk: s'assurer que docker-compose et docker existent quand on crée le service
* `d70825c` dk: bug dans la définition du service
* `45d912d` EnsureVM: être en mode shared par défaut
* `3292686` EnsureVM: ne plus chercher à décharger les modules par défaut
## Version 9.1.0 du 22/11/2018-15:40
* `ba29496` dk: génération d'un service systemd
* `f72dd86` option -n pour pcrone le clone pas le dépôt nouvellement créé
* `01325d0` sqlmig: support chemin config/sqlmig et bug avec csv_null
* `45da726` dk: ajout de l'option --fake pour afficher les commandes
* `dcb637e` dk: support de --no-cache pour docker-compose build
* `9c6f606` Intégration de la branche update-pcrone
* `764dd53` maj prefixe et meilleur affichage des erreurs
* `307fa48` dk: option -j pour désactiver le cache
* `45c6422` profils pour docker-machine
* `a9004fa` dk: PROFILE est exporté
## Version 9.0.0 du 15/11/2018-09:40
* `af969e4` maj de l'url source de nutools
## Version 8.3.0 du 15/11/2018-09:32
* `7ff32ca` dk brd honore les scripts de build
* `3293d09` support docker-machine use
* `e6be47e` ajouter de nouveaux formats pour parse_date
* `1151b5c` latin1compat gère les points de suspension
* `2f86786` ajouter le template pour yaml
## Version 8.2.0 du 02/11/2018-15:06
* `7583ded` Intégration de la branche update-pff
* `96c146e` ajout de l'option NOMERGES pour ne pas tenter de fusionner avec git des fichiers binaires
* `4f7cb90` dk: support de .compose.env pour le nom du projet
* `9d991e2` pcrone: possibilité de créer des dépôts gogs
* `e3ba580` dk: corriger push
* `48c662b` gérer les tags autrement. ajouter push
* `566f1d7` tailor.py: possibilité de modifier les préréglages par les options
* `f34b63a` bug
* `2873638` afficher le profil courant
## Version 8.1.0 du 28/09/2018-08:39
* `e74480c` dk: action build par défaut
* `56b18a4` dk: rendre overridable VERSION
* `ed180b5` dk pour faciliter l'utilisation de docker
* `4ad84c0` sqlmig: ajout de la restauration de la base test à partir d'une copie de la prod
* `a5be8d8` maj gitignore initial
* `19267dd` utempl: support du datage automatique des fichiers
## Version 8.0.0 du 21/07/2018-10:21
* `a60f23a` maj version ulib
* `6cfb62b` sqlmig: ignorer les opérations de maintenance
* `305a180` bug
* `6184fde` tailor.py: avec le preset php, traiter \n
* `7676c76` tailor.py: ajouter l'analyse de php fatal error
* `775bc8e` tailor.py: préréglages pour apache et php
* `d620760` sqlmig: support des préfixes alphanumériques pour les fichiers csv
* `fe0e271` maj doc
* `300d42a` cosmetic
* `16114f5` maj doc
* `827dd14` sqlmig: l'option -f supporte plusieurs fichiers
* `e78ec7f` sqlmig: support des préfixes avec '.' pour les conversions csv --> sql
* `0ae44bd` maj scripts docker
* `1a2f6c4` maj docker
* `cdd152f` maj docker
* `04e37db` docker: ajout run
* `75385a7` cosmetic
* `c1d98a0` interpréteur interactif sous docker
* `ba2c806` image docker
* `e621a56` sqlmig: possibilité de spécifier csv_null pour la conversion des fichiers csv
* `6f1b8b4` mysqlloadcsv: bug avec les valeurs de la forme 00+
* `a88c24e` sqlmig: ajout de l'option --connect
* `bad6c48` sqlmig: corriger le suivi des maj admin
* `4b85c93` sqlmig: support des suffixes pour les noms de base de données
* `9600fb8` sqlmig: bug avec option conflictuelle
* `7181725` sqlmig: ajout de l'option --update-one
* `6a6b2a5` sqlmig: mode fake pour afficher les opérations qui doivent être faites
* `e0d6910` nulib: afficher les lignes d'action
* `c7286d1` nulib: corriger l'affichage du menu
* `4d2bf89` settings pour projet eclipse
* `0bbcef6` nulib: génération d'une table
* `51f4e92` ajouter projet pydev pour nulib
* `8b8cffd` mysqlloadcsv: insérer les valeurs dans une transaction
* `d413790` ulib/web: possibilité d'avoir un container non fluid pour menu
* `6e142b7` bug
* `1a3550e` nulib/web: ajout de redirect() et set_profile(). améliorer la lisibilité des arguments
* `c58a6cc` sqlmig: ne pas utiliser truncate par défaut
* `7bc3af2` sqlmig: conversion automatique des fichiers *.csv en *.sql
* `4c43b01` sqlmig: mode dépendant du profil
* `174c087` sqlmig: support des fichiers spécifique au mode devel
* `e493b49` sqlmig: support des profils
* `66e1674` pff: support de DISTTYPE
* `f1dca50` sqlmig: support des mises à jour administratives
* `b5e2417` création de sqlmig pour gérer les mises à jour sur une base de données
* `7f503ae` pff: utiliser git diff pour la colorisation
* `96449de` base: page_maybe() affiche les codes couleurs
* `6e45dfe` pff: bug avec filtres
* `60f3e4d` Intégration de la branche nulib-experiment
* `a3c5ffb` maj logo univ2017
* `4535b67` support deploydb et pffprofile
* `7356c1d` déploiement d'application webpyapp
* `1c3c07f` début d'implémentation nulib
* `db57d79` mysqlloadcsv: support de l'option --prefix
* `a4e758e` pff: afficher la version du projet
* `777bb1f` Intégration de la branche update-pff
* `9c86a6f` début du support de la variable PROTECTS
* `f9d3f90` après Commit, vérifier qu'il n'y a pas encore des marques de conflit
* `fa6e87a` possibilité de spécifier merge_strategy pour les conflits
* `5f68f3e` l'utilisateur doit faire Commit ou Abort. sinon lui demander son choix
* `33b7dba` chrono.py: ajouter le bouton pause
* `49df321` uinst: support des exclusions pour chmod et chown
* `daafe41` pcrone: créer les fichiers .gitignore et .gitattributes
* `3c8b6f8` norm_properties: supprimer les espaces de fin
* `045885c` les fichiers properties sont parfois considérés comme binaires
* `1b1589e` pff: ne pousser que si un remote est défini pour la branche
* `13440e2` pff: support des filtres à l'intégration
* `ee3b583` pff: support du paramètre MKDIRS
* `56972a6` toinst: ajouter l'option --ct
* `952b4ed` pff: raccourcis pour abort() et done()
* `51109be` pff: forcer le mode des fichiers du profil Base parce que git n'enregistre pas les autorisations
* `82c3669` pff: les fichiers du profil Base sont en lecture seule
* `2fa28d5` pff: honorer l'ordre de .pff.conf pour le premier profil
* `af006c4` pff: sélectionner le premier profil par défaut
* `e20757b` Intégration de la branche update-pff
* `cb21c53` finaliser l'implémentation de patch_cmd()
* `04f2f91` intervertir les options -a et -b. en effet, -a est susceptible d'être plus utilisé et est plus naturel
* `4bc8108` corriger l'affichage de diff_cmd()
* `7299aeb` suite implémentation patch_cmd()
* `eee9a65` support de l'édition dans le profil ALL et rajouter les raccourcis -P, -T, -A
* `6b33929` début d'implémentation de patch_cmd()
* `2b1ad2b` implémenter l'option -p avec edit_cmd()
* `a0752e9` maj doc
* `ad30399` Intégration de la branche update-pu
* `7408760` finaliser l'implémentation
* `1ec281d` début d'implémentation
* `5d828c4` pff: créer automatiquement le profil Common
* `9481cad` pff: bug avec l'intégration de fichier origines locaux
* `f17dcca` maj des logos de l'université
* `a61452c` pff: enregistrer les profils définis et les créer sans confirmation si nécessaire
* `86963ec` pff: cosmetic
* `9eaed33` pff -d: ajout de --list-names pour afficher seulement les noms de fichiers
* `70165cb` pff: ajout de --diff et --infos -l
* `ed0659f` pff: améliorer l'affichage de pff --infos
* `f0ae5ae` Intégration de la branche update-pff
* `9a37329` utiliser le profil Common par défaut
* `6f6fc74` maj doc
* `7954e7f` pff: support des projets pff déployés avec toinst
* `ab535b7` toinst: exclure le répertoire des profils pff
* `625f93d` Intégration de la branche add-pff
* `4a8c5d1` completion automatique
* `151e083` multiconf: ajout de conf_update()
* `7c86854` maj du prompt
* `20d083b` implémentation initiale
* `4a46cd3` maj sqlcsv
* `bdd859c` bug avec l'utilisation de gensub()
* `bda961f` update-nutools: support de l'option --devel
* `f35e9e8` ufile: ajouter le mode local uniquement
* `bc4c8cb` Intégration de la branche ufile-named-rules
* `be4985f` possibilité de choisir la réponse par défaut pour copy_update_ask et conf_install
* `0e6f55a` support des variables
* `191d3c2` ufile: support des règles nommées
## Version 7.4.0 du 20/12/2017-19:01
* `48e4359` sqlcsv: possibilité de spécifier le chemin de chargement des drivers jdbc
* `a7e6228` ufile: par défaut -c ne charge que le fichier spécifié
* `0b59583` support de quelques combinaisons de diacritiques
* `4f520db` authftp: support préliminaire de --sftp
* `4f11cc4` ufile: possibilité d'écraser les fichiers sans confirmation
## Version 7.3.0 du 19/10/2017-12:12
* `72d7d15` maj version ulib
* `9fb19b4` ulib/multiconf: améliorer conf_install()
* `6c3ae24` openurl: supprimer la sortie erreur pour cacher les warnings GTK
* `528a281` em: supprimer la sortie d'erreur par défaut. rendre configurable la géométrie
* `489b31d` moiso: améliorer l'ergonomie pour le démontage
* `7bd0a95` ufile: support des pattern regex
* `6130c2f` chrono.py: 0 est équivalent à la chaine vide
* `9c5b46b` pyulib: ajouter ShConfig
* `f31f5f7` corriger un problème de compilation sur OL6
* `ab8ede8` awk: support du format dd/mm/yy
* `312c7dc` ajouter des fonctions pour simplifier le check de la version de l'os et l'installation de paquets
* `5bf55e5` bug
* `b6ff411` maj doc uscrontab
## Version 7.2.0 du 26/09/2017-17:01
* `1e576da` multiconf: rajouter conf_upgrade() dans conf_auto()
* `eeef48d` Intégration de la branche update-config
* `ea45055` implémentation simplifiée avec conf_upgrade()
* `efc60b3` description des modifications
* `36eec4a` Intégration de la branche update-ufile
* `2afffef` ne pas implémenter la recherche automatique de fichier de configuration
* `6ec37f6` ufile: implémenter l'option -r
* `6e8c200` maj TODO
* `cf629e6` uscrontab: support des oneshot vars
* `a66c0c2` uscrontab: ajout des options -@, -H, -M
* `52e838e` uwatch: ajouter les options -w et -p pour attendre la disparition d'un fichier ou d'un processus
* `8ad2e4c` lftp ne supporte pas l'utilisation des guillemets
* `7fb81a0` désactiver la vérification du certificat par défaut
* `dbc3daa` multiconf: bug
* `aff1c15` multiconf: support des variables de type path et compatibilité avec bash 4.3
* `8e17fb1` Intégration de la branche add-multiconf
* `a916180` ajouter conf_install pour installer les fichiers de configuration dans un répertoire standardisé
* `0372a5c` ufile charge les fichiers de ~/etc/ufile.d/
* `7d1ec90` simplifier l'API
* `c988692` fin implémentation
* `72e0c36` maj doc
* `f472501` squelette initial
## Version 7.1.0 du 10/09/2017-19:20
* `f131e21` uwatch: ajout de l'option -r
* `d99718e` cosmetic
* `1aee0cb` maj sqlcsv
## Version 7.0.0 du 25/08/2017-15:53
* `e4f154e` uawk: possibilité de lancer les versions locale-aware
* `ef00e07` bug
* `377ca5e` implémenter awkcsv2fsv. corriger un bug avec les outils qui utilisaient cawkrun à l'intérieur d'une fonction l*
* `2f448d5` ussh: problèmes de compatibilité
* `2cc2411` bug potentiel
* `65bd363` webpyapp: réorganiser les fichiers pour supporter des librairies locales
* `0b39b23` webpyapp: les variables de server.conf sont configurables
* `d1a1d4d` webpyapp: cosmetic
* `46fbec7` webpyapp: bootstrap facilité des sessions
* `c541958` webpyapp: support du mode développement
* `e2ea2ea` ufile: ajout de --force-cp
## Version 6.7.0 du 19/07/2017-15:45
* `1b92275` apacheconfig: support d'un script post-update.sh
* `70fedc2` webpyapp: support de bootstrapcss
* `eca8c11` webpyapp: installation du service
* `ce52d25` support de l'activation de services systemd uniquement
* `a76d28e` webpy: chargement automatique de la configuration depuis server.conf
* `070f5bf` début de template webpyapp
* `3f46414` web.py: ajout de la fonction _utf8plaintext()
* `335ca05` compatibilité avec les vieilles versions de bash
* `0471785` support de stretch pour la completion
* `c659159` corriger le calcul de la version de tomcat à sélectionner
* `e3344f5` bug
* `f663e59` pdev: ajout de l'option -n
* `796898b` apacheconfig: destdir n'est peut-être pas spécifié
* `4f99397` apacheconfig: mettre à jour le dépôt avant de charger la configuration
* `80ae9d7` apacheconfig -up met à jour le dépôt avant le déploiement
* `2a6cd4d` javaproperties: support de l'échappement de : et =
## Version 6.6.0 du 10/06/2017-11:22
* `302986d` maj dépot jclain.fr en repos.ct

View File

@ -1,7 +1,7 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS service
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire service
function display_help() {
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é
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
for module in vboxpci vboxnetadp vboxnetflt vboxdrv; do
if lsmod | quietgrep "$module"; then
@ -82,7 +82,7 @@ function ensure_virtualbox() {
# sont chargés, et que le service vboxdrv est démarré
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
for module in kvm_intel kvm_amd kvm; do
if lsmod | quietgrep "$module"; then
@ -117,9 +117,12 @@ function ensure_virtualbox() {
}
check_only=
exclusive=
parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-c,--check-only,--check check_only=1 \
-x,--exclusive exclusive=1 \
-s,--shared exclusive= \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
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
# -*- 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
urequire DEFAULTS virsh
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire virsh
function display_help() {
uecho "$scriptname: lancer une machine virtuelle kvm

View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: lancer une machine virtuelle VirtualBox

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

View File

@ -1,3 +1,10 @@
# 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
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1 +1 @@
6.6.0
11.3.0

2
_root
View File

@ -1,6 +1,6 @@
#!/bin/bash
# -*- 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
function display_help() {

View File

@ -1,7 +1,7 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS template apache.tools
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
urequire template apache.tools
apacheconfig_initvars
function display_help() {
@ -68,6 +68,10 @@ OPTIONS
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
Spécifier le cas échéant le répertoire contenant les certificats à
déployer. Cet argument est requis si le répertoire certsconf/ existe,
@ -111,6 +115,7 @@ FULLCONF=
pull=
fixip=
netconf=
no_post_update=
aac_certsdir=
bits=
oneconf=
@ -145,6 +150,7 @@ args=(
-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=
@ -211,6 +217,7 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
-d "$destdir" --$action
${fixip:+--fix-ip}
${netconf:+--network-config}
${no_post_update:+--no-post-update}
${aac_certsdir:+-r "$aac_certsdir"}
${oneconf:+--one-conf "$oneconf"}
${onemodule:+--one-module "$onemodule"}
@ -230,7 +237,7 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
"$destdir" "$aac_certsdir" \
"$config" "$oneconf" "$onemodule" "$onesite" \
"$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" \
"$netconf" "$fixip" || die
"$netconf" "$fixip" "$no_post_update" || die
eend
elif [ "$action" == localhosts ]; then
etitle "Mise à jour de /etc/hosts"

40
authftp
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: Se connecter sur un site FTP authentifié
@ -28,6 +27,11 @@ OPTIONS
--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
automatiquement avec lftp si le mot de passe contient une virgule. A cause de la
@ -35,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 @"
}
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
set_defaults proxy
set_defaults authftp
@ -43,6 +55,8 @@ noproxy="$AUTHFTP_PROXY_DISABLED"
lftp=
options=()
tls=
verify_certificate=no
sftp=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-p,--proxy noproxy= \
@ -50,6 +64,8 @@ parse_opts "${PRETTYOPTS[@]}" \
-l,--lftp lftp=1 \
-o:,--option: options \
--tls tls=1 \
--verify-certificate verify_certificate=yes \
--sftp sftp=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
[ -n "$noproxy" -o -n "$AUTHFTP_PROXY_HOST" ] || die "AUTHFTP_PROXY_HOST doit être défini"
@ -62,13 +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 chemin" path "$4" N
[ -n "$tls" ] && lftp=1
[ -n "$tls" -o -n "$sftp" ] && lftp=1
[ -n "$sftp" ] && noproxy=1
if [ -n "$lftp" ]; 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
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
else
if [ -n "$noproxy" ]; then

3
caturl
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: Afficher une url

134
chrono.py
View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/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"""
@ -32,6 +32,12 @@ def playSound(name=None):
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'
@ -77,13 +83,24 @@ def parse_timeout(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
date_end = None
max_elapsed = None
initial = None
started = None
def __init__(self, timeout=None, start=False):
self.ZERO = self.__delta(0)
self.set_timeout(timeout)
if start: self.start()
@ -99,37 +116,76 @@ class Chrono:
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
if timeout is None: self.initial = '00:00'
else: self.initial = self.__format(self.__delta(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()
if timeout is None: self.date_end = None
else: self.date_end = self.date_start + self.__delta(timeout)
self.started = True
def stop(self):
self.started = False
self.state = self.STATE_STARTED
def is_started(self):
return self.started
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):
return self.started and self.date_end is not None and Datetime.today() >= self.date_end
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):
now = Datetime.today()
if self.date_end is None: delta = now - self.date_start
elif now > self.date_end: delta = Timedelta()
else: delta = self.date_end - now
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
@ -209,11 +265,9 @@ def run_chronometre(timeout=None, autostart=False):
class Application(Frame):
root = None
chrono = None
stop = None
def __init__(self, timeout=None, autostart=False, **kw):
self.chrono = Chrono(timeout)
self.stop = False
root = Tk()
root.title("Chronomètre")
@ -221,6 +275,8 @@ def run_chronometre(timeout=None, autostart=False):
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
@ -228,19 +284,22 @@ def run_chronometre(timeout=None, autostart=False):
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="Démarrer", command=self.do_start)
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="Quitter", command=self.quit)
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=3, sticky='nsew')
self.TIME.grid(column=0, row=0, columnspan=4, sticky='nsew')
self.START.grid(column=0, row=1, sticky='ew')
self.CONFIG.grid(column=1, row=1, sticky='ew')
self.QUIT.grid(column=2, 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=1)
self.columnconfigure(2, 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()
@ -255,15 +314,27 @@ def run_chronometre(timeout=None, autostart=False):
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:
@ -312,14 +383,14 @@ if __name__ == '__main__':
AP.set_defaults(autostart=None, timeout=None)
AP.add_argument('timeout', metavar='TIMEOUT', nargs='?',
help=u"""\
>>> (valeur vide)
>>> '' (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)
>>> '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]]
>>> '@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',
@ -334,7 +405,6 @@ d'arrivée, et que la durée est calculée automatiquement""")
timeout = o.timeout
if timeout is None: timeout = DEFAULT_TIMEOUT
elif timeout == '': timeout = None
o.timeout = timeout
run_chronometre(o.timeout, o.autostart)

View File

@ -411,7 +411,7 @@ javac* | jikes*)
fi
[[ ! -z "${execute:="${compilerDir}java -cp $cacheDir${classPath:+:$classPath} $mainClass"}" ]]
# 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*)
if [[ -z "$classPath" && -z "$compilerArgs" && -z "$CLASSPATH" ]] ; then

View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
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

65
cssh
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
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"
[ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter"
cmd="'$(qvals "${args[@]}")
"'
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
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
'\'
[ ${#args[*]} -gt 0 ] && cmd="$(qvals "${args[@]}"); " || cmd=
cmd="$cmd
export LOCKPRG=/bin/true; $(<"$scriptdir/Sscreen")"
cmd="'${cmd//\'/\'\\\'\'}'"
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

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

3080
dk Executable file

File diff suppressed because it is too large Load Diff

3255
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,35 +0,0 @@
# 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](tools/uinst): Déploiement local
* [mkusfx](tools/mkusfx): Faire une archive auto-installable avec uinst
* [ruinst](tools/ruinst): Déploiement distant avec uinst
* [runs](tools/runs): Lancer un script avec le protocole RUNS
* [rruns](tools/rruns): Déploiement distant avec runs
* Librairie réutilisable de scripts shell
* [uinc](tools/uinc): Dépliage des inclusions dans un fichier
* [ulibsync](tools/ulibsync): Faire une copie locale pour un projet de ulib et/ou pyulib
* Autres outils
* [udir](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

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
exit 0
fi
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
source "$(dirname -- "$0")/lib/ulib/ulib" || exit 1
urequire base
function display_help() {

View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: afficher les connexions TCP entrantes sur un port

10
em
View File

@ -1,13 +1,19 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
EMACS_GEOMETRY=150x50+0+67
: "${EM_GEOMETRY:=150x50+0+67}" "${EM_STDERR:=}"
# Essayer avec emacs
emacs="$(which emacs 2>/dev/null)"
if [ -x "$emacs" ]; then
if [ -n "$DISPLAY" ]; then
exec "$emacs" -g "$EMACS_GEOMETRY" "$@" &
if [ -n "$EM_STDERR" ]; then
# ne pas supprimer la sortie erreur
exec "$emacs" -g "$EM_GEOMETRY" "$@" &
else
# supprimer la sortie d'erreur. les warnings de GTK sont horripilants
exec "$emacs" -g "$EM_GEOMETRY" "$@" 2>/dev/null &
fi
exit 0
else
exec "$emacs" -nw "$@"

122
ensure-vip Executable file
View File

@ -0,0 +1,122 @@
#!/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 ipcalc
function display_help() {
uecho "$scriptname: s'assurer que l'hôte courant a l'adresse IP spécifiée
USAGE
$scriptname IPs...
NB: ce script ne supporte que la modification d'interfaces qui ne sont pas des
bridges. il est conçu avant tout pour utilisation sur un serveur, pas un poste
de travail.
OPTIONS
-i, --ignore-iface IFACE
Ajouter une interface à la liste des interfaces à ignorer. Si cette
option est utilisée, la liste par défaut n'est pas utilisée, sauf si
l'option -d est utilisée aussi.
-d, --defaults
Ajouter les valeurs suivantes à liste des interfaces à ignorer:
${DEFAULT_IGNORE_IFACES[*]}
Cette option est automatiquement activée si l'option -i n'est pas
utilisée
-n, --fake
Afficher simplement les modification à effectuer"
}
DEFAULT_IGNORE_IFACES=(
"docker*"
"br-*"
"veth*"
)
DEFAULT_PROFILES=(prod test devel)
ignore_ifaces=()
fake=
args=(
--help '$exit_with display_help'
-i:,--ignore-iface: ignore_ifaces
-d,--defaults '$array_extend ignore_ifaces DEFAULT_IGNORE_IFACES'
-n,--fake fake=1
)
parse_args "$@"; set -- "${args[@]}"
require_debian
for vip in "$@"; do
[ "${vip%/*}" != "$vip" ] || vip="$vip/32"
vips+=("$vip")
done
array_fix_paths ignore_ifaces
[ ${#ignore_ifaces[*]} -gt 0 ] || ignore_ifaces=("${DEFAULT_IGNORE_IFACES[@]}")
if [ -n "$fake" ]; then
set_verbosity --debug
__NETWORK_DEVEL_SHOW_MODIFS=1
__DEBIAN_NETWORK_DEVEL_SHOW_MODIFS=1
fi
################################################################################
# réimplémentation "corrigée" de network_config_partial()
nifile="$__DEBIAN_NETWORK_INTERFACES"
network_set_confips
network_set_confbrs
tmpconfips=()
for confip in "${confips[@]}"; do
network_parse_confip "$confip" iface gateway ipsuffixes
continue=
for ignore_iface in "${ignore_ifaces[@]}"; do
if eval "[[ \"\$iface\" == $(qwc "$ignore_iface") ]]"; then
continue=1
break
fi
done
[ -n "$continue" ] && continue
tmpconfips+=("$confip")
network_parse_ipsuffix "${ipsuffixes[0]}" mainip suffix
for vip in "${vips[@]}"; do
if [ "${vip%.*}" == "${mainip%.*}" ]; then
tmpconfips+=("$iface:$vip")
fi
done
done
confips=("${tmpconfips[@]}")
confbrs=()
network_fix_confs
network_config "" confips confbrs || exit 0
# des modifications ont eu lieu, tenter de configurer les nouvelles adresses
# d'abord calculer les adresses ips qui sont activées
network_set_confips
for confip in "${confips[@]}"; do
network_parse_confip "$confip" iface gateway ipsuffixes
for ipsuffix in "${ipsuffixes[@]}"; do
network_parse_ipsuffix "$ipsuffix" ip suffix
array_addu ips "$ip"
done
done
# puis lister les commandes correspondant aux adresses ips non activées
array_from_lines ups "$(awkrun <"$nifile" -f ips[@] '
$1 == "up" && $2 == "ip" && $3 == "addr" && $4 == "add" {
ip = $5; sub(/(\/[0-9.]+)?$/, "", ip) # enlever suffixe
if (! in_array(ip, ips)) {
$1 = ""
print
}
}')"
if [ ${#ups[*]} -gt 0 ]; then
etitle "Configuration des nouvelles adresses"
for up in "${ups[@]}"; do
estep "$up"
eval "$up"
done
eend
fi

7
fconv
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire
@ -54,6 +53,8 @@ COMMANDES
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
[sed] s/from/to/opts
Filtrer avec l'expression régulière de sed 's/from/to/opts'
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
@ -151,6 +152,8 @@ function parse_cmd() {
cr) echo _nl2cr;;
latin1compat|lc) echo _latin1compat;;
noaccents|na|fixchars|fc) echo _noaccents;;
s/*) qvals sed "$cmd" "$@";;
sed) qvals sed "$@";;
sort) qvals sort "$@";;
*)
echo "$cmd: commande invalide"

9
fnconv
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: renommer un fichier ou les fichiers d'un répertoire
@ -51,7 +50,9 @@ COMMANDES
u, uppercase
Transformer le nom en majuscule
f, fixcase
Transformer le nom en minuscule s'il est entièrement en majuscule"
Transformer le nom en minuscule s'il est entièrement en majuscule
[sed] s/from/to/opts
Renommer le fichier avec l'expression régulière de sed 's/from/to/opts'"
}
function _lowercase() {
@ -163,6 +164,8 @@ function parse_cmd() {
lowercase|lower|l) echo _lowercase;;
uppercase|upper|u) echo _uppercase;;
fixcase|fix|f) echo _fixcase;;
s/*) qvals sed "$cmd" "$@";;
sed) qvals sed "$@";;
*)
echo "$cmd: commande invalide"
return 1

7
fndate
View File

@ -11,8 +11,7 @@ if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
exit 0
fi
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: manipuler des noms de fichier pour les dater
@ -234,6 +233,7 @@ dcopy) action=copy;;
dmove) action=move;;
dcmd) action=cmd;;
esac
cmd_quiet=
placeholder=
auto_force_date=1
force_date=
@ -248,6 +248,7 @@ parse_opts "${PRETTYOPTS[@]}" \
-m,--move action=move \
-c,--cmd action=cmd \
--string action=string \
--cmd-quiet cmd_quiet=1 \
-P:,--placeholder: placeholder= \
--no-auto-force-date auto_force_date= \
-@:,--force-date: force_date= \
@ -293,7 +294,7 @@ if [ "$action" == cmd ]; then
found=
for arg in "$@"; do
if have_ph "$arg"; then
check_interaction -c && evalx qvals "${args[@]}" "$arg" // estepi "Commande:"
[ -z "$cmd_quiet" ] && check_interaction -c && evalx qvals "${args[@]}" "$arg" // estepi "Commande:"
setx arg=replace_ph "$arg" "$force_date"
read_value "Veuillez confirmer le nom" arg "$arg"
found=1

73
foreach
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: lancer une commande pour un ensemble d'arguments
@ -74,10 +73,23 @@ OPTIONS
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:
$scriptname -n '*.c' 'cp \"\$item\" dest/dir'
-t, --title
--no-title
--title
--pt, --parent-title
--nt, --no-title
Afficher (resp. ne pas afficher) chaque correspondance avant de lancer
la commande. Par défaut, l'affichage est effectué."
la commande. Par défaut, l'affichage est effectué.
Avec --parent-title, pour chaque correspondance afficher plutôt le
répertoire parent (valide uniquement avec l'option -p)
-S, --git-status
Equivalent à spécifier la commande 'git status --p'
Utiliser par exemple avec -g, -G ou -C
-G, --git-projects
Equivalent à '--ptitle -p */.git --' e.g '$scriptname -G git pull' pour
mettre à jour les dépôts situés dans un répertoire
-C, --composer-projects
Equivalent à '--ptitle -p */composer.json --'
--cc, --composer-cmd
Equivalent à '--ptitle -p */composer.json -- dk composer'"
}
basedir=
@ -85,7 +97,9 @@ match=auto
changedir=
parentdir=
expand=1
title=1
title=auto
command=
shortcut=
args=(+
--help '$exit_with display_help'
-b:,--basedir: basedir=
@ -97,18 +111,47 @@ args=(+
-s,--string match=string
-x,--expand expand=1
-n,--no-expand expand=
-t,--title title=1
--no-title title=
--title title=1
--pt,--parent-title title=p
--nt,--no-title title=
-S,--git-status command=git-status-p
-G,--git-projects shortcut=git
-C,--composer-projects shortcut=composer
--cc,--composer-cmd shortcut=composer-cmd
)
parse_args "$@"; set -- "${args[@]}"
if [ "$match" == auto ]; then
if [ -n "$changedir" ]; then
match=dir
case "$command" in
git-status-p)
if [ -n "$shortcut" ]; then
set -- git status --p "$@"
else
match=all
set -- "$@" -- git status --p
fi
;;
esac
case "$shortcut" in
git)
set -- */.git -- "$@"
parentdir=1
[ "$title" == auto ] && title=p
;;
composer)
set -- */composer.json -- "$@"
parentdir=1
[ "$title" == auto ] && title=p
;;
composer-cmd)
set -- */composer.json -- "$scriptdir/dk" composer "$@"
parentdir=1
[ "$title" == auto ] && title=p
;;
esac
if [ "$match" == auto ]; then
[ -n "$changedir" ] && match=dir || match=all
fi
[ "$title" == auto ] && title=1
alt_syntax=
for sep in "$@"; do
@ -175,7 +218,11 @@ fi
[ -n "$title" ] && einfo "${#items[@]} correspondance(s) trouvée(s)"
let index=0
for item in "${items[@]}"; do
[ -n "$title" ] && etitle "$item"
if [ -n "$parentdir" -a "$title" == p ]; then
etitle "$(dirname -- "$item")"
elif [ -n "$title" ]; then
etitle "$item"
fi
i="$item"
setx file=abspath "$item"
setx dir=dirname -- "$file"

3
geturl
View File

@ -1,7 +1,6 @@
#!/bin/bash
# -*- 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
urequire DEFAULTS
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: Télécharger un fichier avec wget ou curl

28
ipaddr Executable file
View File

@ -0,0 +1,28 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# frontend pour 'ip addr' qui formatte l'affichage pour prendre moins de place
if [ -x /usr/bin/ip ]; then IP=/usr/bin/ip
elif [ -x /bin/ip ]; then IP=/bin/ip
else IP=ip
fi
if [ -n "IPADDR_COLOR" ]; then isatty=1
else tty -s <&1 && isatty=1 || isatty=
fi
"$IP" addr "$@" | awk -v isatty="$isatty" '
isatty && $0 ~ /^[0-9]/ {
$0 = gensub(/: ([^:]+):/, ": \x1B[32m\\1\x1B[0m:", 1)
}
isatty && $1 == "inet" {
$0 = gensub(/inet ([^ ]+) /, "inet \x1B[34m\\1\x1B[0m ", 1)
}
{
if ($1 == "inet" || $1 == "inet6") {
printf "%s -- ", $0
getline
sub(/^ +/, "")
}
}
{ print }'

33
ldiff Executable file
View File

@ -0,0 +1,33 @@
#!/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: frontend de diff pour comparer deux fichiers encodés en latin1
USAGE
$scriptname [options] Lfile Rfile
OPTIONS
-u, -U, --unified N
-w, --ignore-all-space
-B, --ignore-blank-lines
options de diff qui sont reprises telles quelles"
}
diffopts=()
args=(
--help '$exit_with display_help'
-u '$diffopts+=(-u)'
-U:,--unified: '$diffopts+=(-U "$value_")'
-w,--ignore-all-space '$diffopts+=(-w)'
-B,--ignore-blank-lines '$diffopts+=(-B)'
)
parse_args "$@"; set -- "${args[@]}"
Lfile="$1"
Rfile="$2"
[ -n "$Lfile" -a -n "$Rfile" ] || die "vous devez spécifier les deux fichiers"
[ -d "$Lfile" -o -d "$Rfile" ] && die "il faut absolument comparer deux fichiers"
diff "${diffopts[@]}" <(iconv -f latin1 -t utf-8 "$Lfile") <(iconv -f latin1 -t utf-8 "$Rfile")

41
lgrep Executable file
View File

@ -0,0 +1,41 @@
#!/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: frontend de grep pour chercher dans un fichier encodé en latin1
USAGE
$scriptname [options] FILE
OPTIONS
options de grep qui sont reprises telles quelles"
}
grepopts=()
args=(
--help '$exit_with display_help'
-E,--extended-regexp '$grepopts+=(-E)'
-F,--fixed-strings '$grepopts+=(-F)'
-G,--basic-regexp '$grepopts+=(-G)'
-P,--perl-regexp '$grepopts+=(-P)'
-i,--ignore-case '$grepopts+=(-i)'
-v,--invert-match '$grepopts+=(-v)'
-L,--files-without-match '$grepopts+=(-L)'
-l,--files-with-matches '$grepopts+=(-l)'
-q,--quiet,--silent '$grepopts+=(-q)'
-s,--no-messages '$grepopts+=(-s)'
-H,--with-filename '$grepopts+=(-H)'
-h,--no-filename '$grepopts+=(-h)'
-a,--text '$grepopts+=(-a)'
-r,--recursive '$grepopts+=(-r)'
-R,--dereference-recursive '$grepopts+=(-R)'
)
parse_args "$@"; set -- "${args[@]}"
pattern="$1"
args=("${@:2}")
#XXX ajouter le support de -r, -h, -H, notamment si ${args[@]} contient un
# répertoire
iconv -f latin1 -t utf-8 "${args[@]}" | grep "${grepopts[@]}" "$pattern"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
u"""%(scriptname)s: afficher le hash SHA-1 d'un fichier exprimé en base 36

View File

@ -4,22 +4,25 @@
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
function __bash_completion_enabled() { return 1; }
function __bash_completion_module_enabled() { return 1; }
if [ -f /etc/debian_version ]; then
_file=
if [ -n "$UTOOLS_BASH_COMPLETION_COMPAT" ]; then
_file="@@dest@@/lib/ulib/$UTOOLS_BASH_COMPLETION_COMPAT/bash_completion"
elif [ -f /etc/debian_version ]; then
case "$(</etc/debian_version)" in
6*|squeeze*)
# le code suivant n'est compatible qu'avec debian squeeze (plus
# exactement, avec bash 4.0)
_file="@@dest@@/lib/ulib/bash40/bash_completion"
;;
7*|wheezy*|8*|jessie*)
7*|wheezy*|8*|jessie*|9*|stretch*|10*|buster*)
# le code suivant n'est compatible qu'avec debian wheezy et
# supérieur (plus exactement, avec bash 4.1)
_file="@@dest@@/lib/ulib/bash41/bash_completion"
;;
esac
fi
[ -f "$_file" ] && source "$_file"
unset _file
fi
if __bash_completion_enabled; then
for i in "@@dest@@/lib/completion.d/"*; do
[ -f "$i" ] || continue

View File

@ -0,0 +1,54 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
if [ -n "$UTOOLS_DOCKER_ALIASES" ]; then
#if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
# alias dm=__docker_machine_wrapper
#else
# alias dm=docker-machine
#fi
function dm() {
case "$1" in
use|ssh)
if [ -n "$2" -a -f ~/etc/default/dk ]; then
# chercher les aliases éventuels
local cmd="$1"; shift
local machine="$1"; shift
machine="$(
CLUSTERDIRS=()
DM_ALIASES=()
source ~/etc/default/dk
for alias_machine in "${DM_ALIASES[@]}"; do
if [ "${alias_machine%%:*}" == "$machine" ]; then
echo "${alias_machine#*:}"
exit
fi
done
for clusterdir in "${CLUSTERDIRS[@]}"; do
if [ -f "$clusterdir/0config/configure.conf" ]; then
DM_ALIASES=()
source "$clusterdir/0config/configure.conf"
for alias_machine in "${DM_ALIASES[@]}"; do
if [ "${alias_machine%%:*}" == "$machine" ]; then
echo "${alias_machine#*:}"
exit
fi
done
fi
done
echo "$machine"
)"
set -- "$cmd" "$machine" "$@"
fi
;;
esac
if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
__docker_machine_wrapper "$@"
else
docker-machine "$@"
fi
}
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
complete -F _docker_machine dm
fi
fi

View File

@ -9,8 +9,12 @@
# Activer l'auto complétion de bash pour les outils de nutools
#export UTOOLS_BASH_COMPLETION=1
#export UTOOLS_BASH_COMPLETION_COMPAT=bash41
# utools utilise su plutôt que sudo pour la fonction run_as_root et le script
# _root. Par défaut, ce n'est le cas que si sudo n'est pas installé. Si sudo est
# configuré, il est préférable de ne pas utiliser su.
#export UTOOLS_USES_SU=false
# Activer les aliases pour l'utilisation de docker
#export UTOOLS_DOCKER_ALIASES=1

24
lib/default/dk Normal file
View File

@ -0,0 +1,24 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Profil par défaut
#PROFILE=prod
# Aliases pour docker-machine
#DM_ALIASES=(alias:name)
# Profiles pour docker-machine
#DM_PROFILES=(name:profile...)
# Répertoires de gestion de cluster. Dans chacun de ces répertoires, le fichier
# 0config/configure.conf est sourcé à la recherche de définitions de profils et
# d'aliases
#CLUSTERDIRS=(~/wop/containers/*.univ.run)
# Répertoire de base par défaut des projets en mode devel
#DEFAULT_DEVEL_SRCDIR="$HOME/wop"
#COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
#MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
# Image à utiliser pour les builds
#DEFAULT_COMPOSER_IMAGE=pubdocker.univ-reunion.fr/image/php:d11
#DEFAULT_MAVEN_IMAGE=pubdocker.univ-reunion.fr/image/javabuilder:d11

35
lib/default/repoctl Normal file
View File

@ -0,0 +1,35 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Liste de préfixes permettant de taper le nom d'un dépôt plus rapidement e.g
# repoctl create g/ssi-php/myproj
# repoctl create v:modules/myproj
# sont équivalents à
# repoctl create https://git.univ-reunion.fr/ssi-php/myproj
# repoctl create git@vcs.univ.run:modules/myproj
# Le format est ALIAS=ACTUAL
#
# Ces définitions fonctionnent aussi pour tous les scripts qui utilisent
# repoctl, dont notamment pclone et pcrone
REPO_PREFIXES=(
s:=git@git.univ-reunion.fr:
g/=https://git.univ-reunion.fr/
v:=git@vcs.univ.run: av/=https://vcs.univ-reunion.fr/anongit/
p:=pgit@vcs.univ.run: ap/=https://pvcs.univ-reunion.fr/anongit/
j/=https://git.jclain.fr/
)
# Définitions des types de dépôt. Le format est NAME:TYPE:PREFIX
# * NAME est utilisé pour définir des configurations supplémentaires
# * TYPE peut valoir gitolite ou gogs (ou gitea qui est un alias de gogs). Le
# type par défaut est 'gitolite'
REPO_TYPES=(
ur:gitea:https://git.univ-reunion.fr/
jclain:gitea:https://git.jclain.fr/
)
# Configuration de l'accès à l'API gogs
# un nom de dépôt est de la forme user/repo. Si user != $GOGS_USER alors on crée
# dans une organisation
#ur_GOGS_URL=https://git.univ-reunion.fr
#ur_GOGS_USER="$USER"
#ur_GOGS_KEY=

11
lib/default/sqlmig Normal file
View File

@ -0,0 +1,11 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Mode par défaut: prod ou devel
#MODE=auto
# Répertoire des profils
#PROFILEDIR=/etc/sqlmig
# Mapping profil/mode
#prod_PROFILE_MODE=prod
#test_PROFILE_MODE=devel

View File

@ -1,9 +1,8 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Fichiers externes à inclure. Chacun de ces fichiers peut contenir des
# définitions de fonctions et de la variables RULES
INCLUDES=()
# Règles pour le classement des fichiers. Chaque règle est de la forme
# pattern:destdir[:renamef]
RULES=()
# Règles nommées. Chaque règle est de la forme name:destdir[:renamef]
NRULES=()

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
default_profile "${DKBUILD_PROFILE:-prod}"
if profile jclain; then
setenv REGISTRY=docker.jclain.fr
setenv PRIVAREG=docker.jclain.fr
elif profile prod test; then
setenv REGISTRY=pubdocker.univ-reunion.fr
setenv PRIVAREG=pridocker.univ-reunion.fr
host_mappings=(
pridocker.univ-reunion.fr:10.85.1.56
pubdocker.univ-reunion.fr:10.85.1.57
repos.univ-reunion.fr:10.85.1.57
git.univ-reunion.fr:10.85.1.55
)
default docker host-mappings="${host_mappings[*]}"
elif profile devel; then
setenv REGISTRY=docker.devel.self
setenv PRIVAREG=docker.devel.self
fi

View File

@ -0,0 +1 @@
php

View File

@ -0,0 +1,3 @@
*.zip filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.tar.gz filter=lfs diff=lfs merge=lfs -text

View File

@ -0,0 +1,2 @@
.~lock*#
.*.swp

View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM $REGISTRY/debian/min:$DIST
#RUN /debian/pkg i

View File

@ -0,0 +1,2 @@
/b/t/
**/.git/

View File

@ -0,0 +1,3 @@
/b/
/Dockerfile
# autogénéré

View File

@ -0,0 +1,11 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setdists d11
# fichiers communs
copy ../common/ ./ gitignore=.
dockerfile "" Dockerfile.in sed="
s/\\\$REGISTRY/$REGISTRY/
s/\\\$DIST/$DIST/
"
build

View File

@ -0,0 +1 @@
../dkbuild.env

View File

@ -0,0 +1,9 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
dists=(
d11
)
setdists "${dists[@]}"
if dist d11; then
include d11
fi

View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr
setenv IMAGE=$REGISTRY/GROUP/NAME

3
lib/dkbuild/templates/php/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/Dockerfile
.~lock*#
.*.swp

View File

@ -0,0 +1,25 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
if profile prod; then
default checkout branch=master
elif profile test devel; then
default checkout branch=develop
fi
default composer image=$REGISTRY/image/phpbuilder:$DIST
## web ########################################################################
checkout https://git.univ-reunion.fr/sda-php/NAME-app b/web
composer b/web
dockerfile
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM $REGISTRY/image/apache-php-myiccas:$DIST
#RUN /debian/pkg i
#ENV MSMTP_ENABLE=1
#COPY b/web/config/msmtp /msmtp-config
COPY b/web/config/ssl /ssl-config
COPY b/web/config/apache /apache-config
COPY b/web/config/php /php-config
#COPY b/web/config/before-start-apache /
COPY b/web /var/www/app
build

View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr
setenv IMAGE=$REGISTRY/GROUP/NAME
setenv DIST=d11

View File

@ -0,0 +1,6 @@
/docker-compose.yml
/docker-compose.*.yml
/web/Dockerfile
/db/Dockerfile
.~lock*#
.*.swp

View File

@ -0,0 +1,37 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setprofiles prod test devel
if profile prod; then
default checkout branch=master
elif profile test devel; then
default checkout branch=develop
fi
default composer image=$REGISTRY/image/phpbuilder:$DIST
## web ########################################################################
checkout https://git.univ-reunion.fr/sda-php/NAME-app web/b/web
composer web/b/web
dockerfile context=web
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM $REGISTRY/image/apache-php-myiccas:$DIST
#RUN /debian/pkg i
#ENV MSMTP_ENABLE=1
#COPY b/web/config/msmtp /msmtp-config
COPY b/web/config/ssl /ssl-config
COPY b/web/config/apache /apache-config
COPY b/web/config/php /php-config
#COPY b/web/config/before-start-apache /
COPY b/web /var/www/app
## db #########################################################################
copy web/b/web/config/sqlmig db/config/mariadb/sqlmig
dockerfile context=db
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM $REGISTRY/image/mariadb:$DIST
COPY config/mariadb /mariadb-config

View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr
setenv IMAGE=$REGISTRY/GROUP/NAME
setenv DIST=d11

View File

@ -0,0 +1,12 @@
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
version: "3.7"
services:
db:
image: $REGISTRY/devel/GROUP/NAME-db
web:
image: $REGISTRY/devel/GROUP/NAME-web
environment:
- APP_PROFILE=devel
- BASE_URL=http://NAME.self

View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
version: "3.7"
services:
db:
image: $REGISTRY/GROUP/NAME-db
web:
image: $REGISTRY/GROUP/NAME-web
environment:
- APP_PROFILE=prod
- BASE_URL=https://NAME.univ-reunion.fr
extra_hosts:
- "casn.univ-reunion.fr:10.85.1.15"

View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
version: "3.7"
services:
db:
image: $REGISTRY/test/GROUP/NAME-db
web:
image: $REGISTRY/test/GROUP/NAME-web
environment:
- APP_PROFILE=test
- BASE_URL=https://NAME-test.univ-reunion.fr
extra_hosts:
- "casn.univ-reunion.fr:10.85.1.15"

View File

@ -0,0 +1,34 @@
# -*- coding: utf-8 mode: yaml -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
version: "3.7"
services:
db:
build: db
volumes:
- db-data:/var/lib/mysql
networks:
default:
aliases:
- NAMEdb
deploy:
update_config:
order: stop-first
web:
build: web
volumes:
- log-data:/var/log/apache2
- session-data:/var/lib/php/sessions
extra_hosts:
- "smtp.univ.run:10.82.70.46"
- "vs-apoprod-bdd.univ.run:10.82.91.11"
- "vs-apotest-bdd.univ.run:10.82.91.13"
- "vs-apodevp-bdd.univ.run:10.82.91.15"
deploy:
update_config:
order: start-first
volumes:
db-data:
log-data:
session-data:

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Description des templates de ce répertoire
TEMPLATES=(
[image]="Image générique basée sur debian"
[php]="Application web PHP"
[php_db]="Application web PHP avec base de données"
)

5
lib/dkbuild/tests/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
/Dockerfile
/src
/dest
/srcdir/
/destdir/

View File

@ -0,0 +1,8 @@
# tests
Lancer un test de cette façon
~~~sh
../../../dkbuild -j test-xxx
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -0,0 +1,2 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=docker.jclain.fr

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
section "variables de build"
setarg A="arg A"
resetarg B="arg B"
info "A=${ARGS[A]}, B=${ARGS[B]}"
if [ "${ARGS[A]}" != x ]; then
note "\
Essayer de relancer avec
$(qvals dkbuild -j "$(relpath "$DKBUILD")" --arg A=x --arg B=y)
on ne devrait pas pouvoir modifier la valeur de B"
fi
# pas de build automatique
AUTOBUILD=

View File

@ -0,0 +1,13 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr
setenv IMAGE=$REGISTRY/group/name
info "IMAGE=$IMAGE"
if [ "$REGISTRY" == pubdocker.univ-reunion.fr ]; then
note "\
Essayer de relancer avec
$(qvals dkbuild -j "$(relpath "$DKBUILD")" -c registry.env)
La valeur de IMAGE devrait changer"
fi
AUTOBUILD=

View File

@ -0,0 +1,15 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
run rm -rf src dest srcdir destdir
run mkdir srcdir
genfile srcdir/src <<<"file"
run ln -s src srcdir/link
copy srcdir destdir
if run; then
[ -f destdir/src ] || die "destdir/src n'a pas été créé"
diff -qr srcdir destdir || die "srcdir et destdir ne sont pas identiques"
fi
AUTOBUILD=

View File

@ -0,0 +1,13 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
run rm -rf src dest srcdir destdir
run mkdir srcdir
genfile srcdir/src <<<"file"
run ln -s src srcdir/link
genfile dest <<<"dest"
copy srcdir dest
info "on ne devrait pas arriver ici"
AUTOBUILD=

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setdists v1-d11 v2-d11 v1-d10
setenv IMAGE=dkbuild-tests/distversions
dockerfile
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM scratch
ENV var=$DIST-$VERSION
build
info "vérifier les images construites avec
dk ls dkbuild-tests/distversions
on devrait avoir les images suivantes:
dkbuild-tests/distversions:v1-d10
dkbuild-tests/distversions:d10 -> v1-d10
dkbuild-tests/distversions:v1-d11
dkbuild-tests/distversions:v2-d11
dkbuild-tests/distversions:d11 -> v2-d11
dkbuild-tests/distversions:latest -> v2-d11
"

View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
run rm -rf src dest srcdir destdir
genfile src <<<"file"
run mkdir destdir
copy src destdir
if run; then
[ -f destdir/src ] || die "destdir/src n'a pas été créé"
diff -q src destdir/src || die "src et destdir/src ne sont pas identiques"
fi
AUTOBUILD=

View File

@ -0,0 +1,13 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
run rm -rf src dest srcdir destdir
genfile src <<<"file"
copy src dest
if run; then
[ -f dest ] || die "dest n'a pas été créé"
diff -q src dest || die "src et dest ne sont pas identiques"
fi
AUTOBUILD=

View File

@ -0,0 +1,27 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
run rm -rf src dest srcdir destdir
run mkdir srcdir
genfile srcdir/src <<<"file"
run ln -s src srcdir/link
run mkdir destdir
genfile destdir/.gitignore <<<"/a/"
copy srcdir destdir/a gitignore=destdir
copy srcdir destdir/b gitignore=destdir
if run; then
[ -f destdir/a/src ] || die "destdir/a/src n'a pas été créé"
[ -f destdir/b/src ] || die "destdir/b/src n'a pas été créé"
[ -L destdir/a/link ] || die "destdir/a/link n'a pas été créé"
[ -L destdir/b/link ] || die "destdir/b/link n'a pas été créé"
ignored="$(<destdir/.gitignore)"
expected="\
/a/
/b/link
/b/src"
[ "$ignored" == "$expected" ] || die "les fichiers n'ont pas été ignorés"
fi
AUTOBUILD=

View File

@ -0,0 +1,13 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setdists d11 d10
setprofiles prod test
if dist LATEST; then
info "$DIST est la distribution la plus récente"
fi
if profile DEFAULT; then
info "$PROFILE est le profil par défaut"
fi
# pas de build automatique
AUTOBUILD=

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setdists v1-d11 v2-d11 v1-d10
if dist LATEST; then
info "$DIST est la distribution la plus récente"
fi
info "version=$VERSION"
# pas de build automatique
AUTOBUILD=

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setprofiles v1-prod v2-prod test
if profile DEFAULT; then
info "$PROFILE est le profil par défaut"
fi
info "version=$VERSION"
# pas de build automatique
AUTOBUILD=

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
if machine fast5; then
setprofiles prod
elif machine fast4; then
setprofiles test
else
setprofiles devel test prod
fi
if run; then
echo "PROFILE=$PROFILE"
fi
# pas de build automatique
AUTOBUILD=

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
section "première section"
note "une note"
info "une première info"
info "une deuxième info"
debug "message de debug"
section "deuxième section"
note "une note"
info "une première info"
info "une deuxième info"
debug "message de debug"
# pas de build automatique
AUTOBUILD=

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv IMAGE=dkbuild-tests/tags0
dockerfile
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM scratch
ENV var=empty
build

View File

@ -0,0 +1,9 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setprofiles v1-prod v2-prod
setenv IMAGE=dkbuild-tests/tags1
dockerfile
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
FROM scratch
ENV var=empty
build

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
section "variables d'environnement"
setenv A="env A"
resetenv B="env B"
info "A=$A, B=$B"
if [ "$A" != x ]; then
note "\
Essayer de relancer avec
$(qvals dkbuild -j "$(relpath "$DKBUILD")" -e A=x -e B=y)
on ne devrait pas pouvoir modifier la valeur de B"
fi
# pas de build automatique
AUTOBUILD=

106
lib/dmcerts_openssl_ca.cnf Normal file
View File

@ -0,0 +1,106 @@
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
[ca]
default_ca = dmca
[dmca]
dir = @@cadir@@
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
unique_subject = no
new_certs_dir = $dir/newcerts
certificate = $dir/dmca.crt
serial = $dir/serial
crl = $dir/dmca.crl
private_key = $dir/dmca.key
RANDFILE = $dir/private/.rand
x509_extensions = usr_cert
name_opt = ca_default
cert_opt = ca_default
default_days = 10950
default_crl_days = 30
default_md = sha256
preserve = no
policy = policy_match
[policy_match]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[req]
default_bits = 2048
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
string_mask = utf8only
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = FR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = La Reunion
localityName = Locality Name (eg, city)
localityName_default = Sainte-Clotilde
0.organizationName = Organization Name (eg, company)
0.organizationName_default = jclain
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default =
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_default = dmca
commonName_max = 64
emailAddress = Email Address
emailAddress_default = jephte.clain@univ-reunion.fr
emailAddress_max = 64
[req_attributes]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = dmca
[usr_cert]
basicConstraints=CA:FALSE
nsComment = "dmca certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation,digitalSignature,keyEncipherment
[v3_ca]
#subjectKeyIdentifier=hash
#authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage = critical,keyCertSign,digitalSignature,keyEncipherment,keyAgreement
[crl_ext]
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always

View File

@ -0,0 +1,99 @@
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
[ca]
default_ca = dmca
[dmca]
dir = @@cadir@@
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
unique_subject = no
new_certs_dir = $dir/newcerts
certificate = $dir/dmca.crt
serial = $dir/serial
crl = $dir/dmca.crl
private_key = $dir/dmca.key
RANDFILE = $dir/private/.rand
x509_extensions = usr_ext
name_opt = ca_default
cert_opt = ca_default
copy_extensions = copy
default_days = 10950
default_crl_days = 30
default_md = sha256
preserve = no
policy = policy_match
[policy_match]
#countryName = match
#stateOrProvinceName = match
#organizationName = match
countryName = supplied
stateOrProvinceName = supplied
organizationName = supplied
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[req]
default_bits = 2048
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = usr_ext
string_mask = utf8only
#input_password = secret
#output_password = secret
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = FR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = La Reunion
localityName = Locality Name (eg, city)
localityName_default = Sainte-Clotilde
0.organizationName = Organization Name (eg, company)
0.organizationName_default = jclain
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default =
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[req_attributes]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = jclain
[usr_ext]
basicConstraints=critical,CA:FALSE
#subjectKeyIdentifier=hash
#authorityKeyIdentifier=keyid,issuer:always
keyUsage = critical,digitalSignature
extendedKeyUsage = clientAuth
[crl_ext]
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always

View File

@ -0,0 +1,101 @@
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
[ca]
default_ca = dmca
[dmca]
dir = @@cadir@@
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
unique_subject = no
new_certs_dir = $dir/newcerts
certificate = $dir/dmca.crt
serial = $dir/serial
crl = $dir/dmca.crl
private_key = $dir/dmca.key
RANDFILE = $dir/private/.rand
x509_extensions = usr_ext
name_opt = ca_default
cert_opt = ca_default
copy_extensions = copy
default_days = 3650
default_crl_days = 30
default_md = sha256
preserve = no
policy = policy_match
[policy_match]
#countryName = match
#stateOrProvinceName = match
#organizationName = match
countryName = supplied
stateOrProvinceName = supplied
organizationName = supplied
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[req]
default_bits = 2048
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = usr_ext
string_mask = utf8only
#input_password = secret
#output_password = secret
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = FR
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = La Reunion
localityName = Locality Name (eg, city)
localityName_default = Sainte-Clotilde
0.organizationName = Organization Name (eg, company)
0.organizationName_default = jclain
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default =
commonName = Common Name (eg, your name or your server\'s hostname)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[req_attributes]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = jclain
[usr_ext]
basicConstraints = critical,CA:FALSE
#subjectKeyIdentifier=hash
#authorityKeyIdentifier=keyid,issuer:always
keyUsage = critical,digitalSignature,keyEncipherment,keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = DNS:localhost
[crl_ext]
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always

View File

@ -20,9 +20,12 @@ if [ -n "$UTOOLS_BASH_PROMPT" ]; then
DEFAULT_PS1="[CHROOT:$UTOOLS_CHROOT] $DEFAULT_PS1"
fi
GENERATE_PS1='function __genps1() {
local cvs svn git uinst woinst suffix p="$PWD"
local cvs svn git pff uinst woinst suffix p="$PWD"
if [ -n "$UTOOLS_AUTO" ]; then
PS1=
if [ "$DOCKER_MACHINE_WRAPPED" == true -a -n "$DOCKER_MACHINE_NAME" ]; then
PS1="DK-|$DOCKER_MACHINE_NAME|"
fi
while [ "$p" != "$HOME" -a "$p" != "" ]; do
if [ -z "$cvs" -a -d "$p/CVS" ]; then
PS1="${PS1:+$PS1,}cvs$suffix"
@ -55,6 +58,14 @@ if [ -n "$UTOOLS_AUTO" ]; then
PS1="${PS1:+$PS1,}$flag"
git=1
fi
if [ -z "$pff" -a -d "$p/pff" -a -f "$p/.pff.conf" ]; then
flag=pff
if [ -L "$p/pff/.Current" ]; then
flag="$flag$(source "$p/.pff.conf" 2>/dev/null; echo "${VERSION:+:$VERSION}"):$(readlink "$p/pff/.Current")"
fi
PS1="${PS1:+$PS1,}$flag"
pff=1
fi
if [ -z "$uinst" ]; then
if [ -f "$p/.uinst.conf" ]; then
PS1="${PS1:+$PS1,}uinst$suffix"
@ -119,7 +130,7 @@ fi
eval "$GENERATE_PS1"
'
;;
screen)
screen*)
PROMPT_COMMAND='
if [ -n "$UTOOLS_AUTO" ]; then
echo -ne "\033_[screen] ${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~} $(if [ -f build.properties ]; then

View File

@ -1,7 +1,7 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/../../ulib/ulib" && urequire DEFAULTS || exit 1
source "$(dirname "$0")/../../ulib/ulib" || exit 1
urequire DEFAULTS
pyulibdir="$(abspath "$scriptdir/..")"
utoolsdir="$(abspath "$scriptdir/../..")"
@ -18,18 +18,6 @@ while [ -n "$1" ]; do
done
[ -n "$default" ] && show_pc=1 && show_path=1 && show_ppath=1
function quote_pc() {
local s
s="${1//\\/\\\\}"
s="${s//\"/\\\"}"
s="${s//$/\\$}"
s="${s//then
/then }"
s="${s//
/; }"
echo "$s"
}
srcdir="$pyulibdir/src"
testdir="$pyulibdir/test"
@ -53,7 +41,7 @@ array_del ppath "$testdir"
array_ins ppath "$testdir"
array_ins ppath "$srcdir"
[ -n "$show_pc" -a -n "$new_pc" ] && echo "export PROMPT_COMMAND=\"$(quote_pc "$new_pc")\""
[ -n "$show_pc" -a -n "$new_pc" ] && echo "export PROMPT_COMMAND=$(qval "$new_pc")"
IFS=:
[ -n "$show_path" ] && echo "export PATH=\"${path[*]}\""
[ -n "$show_ppath" ] && echo "export PYTHONPATH=\"${ppath[*]}\""

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
"""%(name)s: Fonction à usage de TODO pour gérer les tiddlywikis

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
"""%(name)s: Gérer un fichier html tiddlywiki

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
"""%(name)s: Gestion d'un fichier tiddlywiki.html

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
u"""%(scriptname)s: gérer une liste de tâches

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
u"""%(scriptname)s: gérer un TiddlyWiki

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
NAME = 'pyulib'

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
u"""%(scriptname)s: Gérer des fichiers de sauvegarde

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
u"""%(scriptname)s: Afficher la dernière version d'un ensemble de fichiers

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
u"""%(scriptname)s: afficher les contacts téléphoniques

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