diff --git a/.eslintignore b/.eslintignore index f06235c46..7e0cec355 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ node_modules dist +publicodes/example/ diff --git a/.github/workflows/publish-publicodes.yaml b/.github/workflows/publish-publicodes.yaml index 58e53e630..0c00460dd 100644 --- a/.github/workflows/publish-publicodes.yaml +++ b/.github/workflows/publish-publicodes.yaml @@ -6,7 +6,7 @@ on: jobs: test: - if: contains(join(github.event.commits.*.message, ' | '), '📦 Publicodes v1.') + if: contains(join(github.event.commits.*.message, ' | '), '📦 Publicodes v1.0.0-beta.') runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 @@ -14,8 +14,6 @@ jobs: with: path: '**/node_modules' key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}-v2 - - if: "!contains(join(github.event.commits.*.modified.*, 'publicodes/CHANGELOG.md')" - run: echo "::error file={name},line={line},col={col}::{message}" - run: yarn install --frozen-lockfile - working-directory: ./publicodes/example/publicode-react run: | @@ -35,6 +33,6 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_PUBLISH_SECRET }} - working-directory: ./publicodes/core - run: npm publish ${{ github.ref != 'refs/heads/master' && '--dry-run' || ''}} + run: npm publish ${{ github.ref != 'refs/heads/master' && '--dry-run' || ''}} --tag next - working-directory: ./publicodes/ui-react - run: npm publish ${{ github.ref != 'refs/heads/master' && '--dry-run' || ''}} + run: npm publish ${{ github.ref != 'refs/heads/master' && '--dry-run' || ''}} --tag next diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 627f12dfe..fe2e70b36 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,15 +18,15 @@ L'application est écrite en JavaScript, elle est exécuté uniquement côté cl Nous utilisons : -- [TypeScript](https://www.typescriptlang.org) pour ajouter un système de typage à notre code JavaScript. Le typage n'est pas utilisé partout et il n'est pas obligatoire de le prendre en compte pour contribuer. -- [Yarn](https://yarnpkg.com/fr) pour la gestion des dépendances (à la place de NPM qui est souvent utilisé dans les applications JavaScript) -- [React](https://reactjs.org) pour la gestion de l'interface utilisateur -- [Redux](https://redux.js.org) pour gérer le “state” de l'application côté client -- [Prettier](https://prettier.io/) pour formater le code source, l'idéal est de configurer votre éditeur de texte pour que les fichiers soit formatés automatiquement quand vous sauvegardez un fichier. Si vous utilisez [VS Code](https://code.visualstudio.com/) cette configuration est automatique. -- [Webpack](https://webpack.js.org) pour le “bundling” -- [Eslint](http://eslint.org) qui permet par exemple d'éviter de garder des variables inutilisées -- [Ramda](https://ramdajs.com) comme libraire d'utilitaires pour manipuler les listes/objects/etc (c'est une alternative à lodash ou underscore) -- [Mocha](https://mochajs.org), [Jest](https://jestjs.io) et [Cypress](https://www.cypress.io) pour les l'execution des tests. Plus d'informations dans la section consacrée aux tests. +- [TypeScript](https://www.typescriptlang.org) pour ajouter un système de typage à notre code JavaScript. Le typage n'est pas utilisé partout et il n'est pas obligatoire de le prendre en compte pour contribuer. +- [Yarn](https://yarnpkg.com/fr) pour la gestion des dépendances (à la place de NPM qui est souvent utilisé dans les applications JavaScript) +- [React](https://reactjs.org) pour la gestion de l'interface utilisateur +- [Redux](https://redux.js.org) pour gérer le “state” de l'application côté client +- [Prettier](https://prettier.io/) pour formater le code source, l'idéal est de configurer votre éditeur de texte pour que les fichiers soit formatés automatiquement quand vous sauvegardez un fichier. Si vous utilisez [VS Code](https://code.visualstudio.com/) cette configuration est automatique. +- [Webpack](https://webpack.js.org) pour le “bundling” +- [Eslint](http://eslint.org) qui permet par exemple d'éviter de garder des variables inutilisées +- [Ramda](https://ramdajs.com) comme libraire d'utilitaires pour manipuler les listes/objects/etc (c'est une alternative à lodash ou underscore) +- [Mocha](https://mochajs.org), [Jest](https://jestjs.io) et [Cypress](https://www.cypress.io) pour les l'execution des tests. Plus d'informations dans la section consacrée aux tests. ### Démarrage @@ -51,33 +51,32 @@ Pour activer le tracing Redux: REDUX_TRACE=true yarn start ``` - ### Messages de commit A mettre sans retenue dans les messages de commit : https://github.com/atom/atom/blob/master/CONTRIBUTING.md#git-commit-messages -- 🎨 `:art:` when working on the app's visual style -- 🐎 `:racehorse:` when improving performance -- 📝 `:memo:` when writing docs -- 🐛 `:bug:` when fixing a bug -- 🔥 `:fire:` when removing code or files -- 💚 `:green_heart:` when fixing the CI build -- ✅ `:white_check_mark:` when adding tests -- ⬆️ `:arrow_up:` when upgrading dependencies -- :sparkles: `:sparkles:` when formatting, renaming, reorganizing files +- 🎨 `:art:` when working on the app's visual style +- 🐎 `:racehorse:` when improving performance +- 📝 `:memo:` when writing docs +- 🐛 `:bug:` when fixing a bug +- 🔥 `:fire:` when removing code or files +- 💚 `:green_heart:` when fixing the CI build +- ✅ `:white_check_mark:` when adding tests +- ⬆️ `:arrow_up:` when upgrading dependencies +- :sparkles: `:sparkles:` when formatting, renaming, reorganizing files Et ceux spécifiques au projet : -- :gear: `:gear:` pour une contribution au moteur qui traite les YAML -- :hammer: `:hammer:` pour une contribution à la base de règles -- :calendar: `:calendar:` pour un changement de règle du à une évolution temporelle (en attendant mieux) -- :chart_with_upwards_trend: `:chart_with_upwards_trend:` pour une amélioration du tracking -- :alien: `:alien:` pour ajouter des traductions -- :wheelchair: `:wheelchair:` pour corriger les problèmes liés à l'accessibilité -- :fountain_pen: `:fountain_pen:` pour séparer les commits liés à la modification du contenu -- :mag: `:mag:` pour les modifications liées au référencement naturel +- :gear: `:gear:` pour une contribution au moteur qui traite les YAML +- :hammer: `:hammer:` pour une contribution à la base de règles +- :calendar: `:calendar:` pour un changement de règle du à une évolution temporelle (en attendant mieux) +- :chart_with_upwards_trend: `:chart_with_upwards_trend:` pour une amélioration du tracking +- :alien: `:alien:` pour ajouter des traductions +- :wheelchair: `:wheelchair:` pour corriger les problèmes liés à l'accessibilité +- :fountain_pen: `:fountain_pen:` pour séparer les commits liés à la modification du contenu +- :mag: `:mag:` pour les modifications liées au référencement naturel ### Tests @@ -133,10 +132,10 @@ N'oubliez pas de vérifier sur le diff que rien n'est choquant. ### CI/CD -- [CircleCI](https://circleci.com/) s'occupe de faire tourner les builds et - tests. -- [Netlify](https://www.netlify.com/), s'occupe de l’hébergement du site sur Internet - sur internet avec gestion des DNS. +- [CircleCI](https://circleci.com/) s'occupe de faire tourner les builds et + tests. +- [Netlify](https://www.netlify.com/), s'occupe de l’hébergement du site sur Internet + sur internet avec gestion des DNS. ### Analyse des bundles @@ -144,15 +143,15 @@ La commande `yarn run build:analyse-bundle` gènere une visualisation interactiv contenu packagé, cf. [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) -## Développement de modèles Publicodes +## Développement de modèles Publicodes ### Traduction des normes (lois) en règles Publicodes Checklist: -- [ ] Lire les articles de vulgarisation (sur le site de l'URSSAF, des impôts, etc.). -- [ ] Utiliser un moteur de recherche spécialisé, comme [RFPaye](https://rfpaye.grouperf.com/). -- [ ] [Lire les normes][wiki normes] et noter leurs référence dans les règles Publicodes. +- [ ] Lire les articles de vulgarisation (sur le site de l'URSSAF, des impôts, etc.). +- [ ] Utiliser un moteur de recherche spécialisé, comme [RFPaye](https://rfpaye.grouperf.com/). +- [ ] [Lire les normes][wiki normes] et noter leurs référence dans les règles Publicodes. [wiki normes]: https://github.com/betagouv/mon-entreprise/wiki/Comment-lire-les-normes-(la-loi)-efficacement-pour-r%C3%A9diger-des-r%C3%A8gles-Publicodes%3F @@ -160,10 +159,10 @@ Checklist: Pour tester les règles, il est recommandé de: -- faire tourner un simulateur et vérifier à la main l'adéquation des règles avec les normes - traduites ; -- créer des cas de tests de non-régression sous la forme de nouveaux snapshots (cf. - `mon-entreprise/test/regressions`). +- faire tourner un simulateur et vérifier à la main l'adéquation des règles avec les normes + traduites ; +- créer des cas de tests de non-régression sous la forme de nouveaux snapshots (cf. + `mon-entreprise/test/regressions`). ## Documentation @@ -183,3 +182,16 @@ s'avérer assez abrupt. Essayez plutôt de jeter un oeil [aux tests](./publicodes/test/mécanismes/expressions.yaml) dans un premier temps, puis au [mécanismes en place](./publicodes/source/mecanisms). + +## Publier une nouvelle version des paquets publicodes + +Voici la marche à suivre pour publier une nouvelle version : + +1. Renseigner les modifications dans publicodes/CHANGELOG.md +2. Remplacer les références à la précédente version par la nouvelle version dans les packages.json +3. Ajouter tous les changement dans un commit avec le message suivant : + ``` + 📦 Publicodes v1.0.0-beta. + ``` + > **Important** Le message doit être exactement celui-ci (emoji compris), car le script de déploiement automatique sur le CI se base sur ce dernier. +4. Laisser faire le CI, une fois le commit mergé sur master, le paquet sera déployé effectivement diff --git a/modele-social/package.json b/modele-social/package.json index 3e610f8bb..027cf1996 100644 --- a/modele-social/package.json +++ b/modele-social/package.json @@ -16,11 +16,11 @@ "dist/index.js" ], "devDependencies": { - "publicodes": "^1.0.0-beta.13", + "publicodes": "^1.0.0-beta.14", "yaml": "^1.10.0" }, "peerDependencies": { - "publicodes": "^1.0.0-beta.13" + "publicodes": "^1.0.0-beta.14" }, "scripts": { "build": "node build.js", diff --git a/mon-entreprise/package.json b/mon-entreprise/package.json index 98754b761..fbf8ae165 100644 --- a/mon-entreprise/package.json +++ b/mon-entreprise/package.json @@ -70,8 +70,8 @@ "fuse.js": "5.2.1", "iframe-resizer": "^4.1.1", "modele-social": "^0.2.0", - "publicodes": "^1.0.0-beta.13", - "publicodes-react": "^1.0.0-beta.13", + "publicodes": "^1.0.0-beta.14", + "publicodes-react": "^1.0.0-beta.14", "ramda": "^0.27.0", "react": "^17.0.0", "react-color": "^2.14.0", diff --git a/publicodes/core/package.json b/publicodes/core/package.json index a176d099b..0f4429802 100644 --- a/publicodes/core/package.json +++ b/publicodes/core/package.json @@ -1,6 +1,6 @@ { "name": "publicodes", - "version": "1.0.0-beta.13", + "version": "1.0.0-beta.14", "description": "A declarative language for encoding public algorithm", "main": "dist/index.js", "types": "dist/types/index.d.ts", diff --git a/publicodes/docs/se-lancer.md b/publicodes/docs/se-lancer.md index 5b00de95a..dc3465fe9 100644 --- a/publicodes/docs/se-lancer.md +++ b/publicodes/docs/se-lancer.md @@ -55,11 +55,11 @@ const engine = new Engine(rules) > - **ESModule sans npm install** (` +> > diff --git a/publicodes/example/publicode-react/.env b/publicodes/example/publicode-react/.env new file mode 100644 index 000000000..6f809cc25 --- /dev/null +++ b/publicodes/example/publicode-react/.env @@ -0,0 +1 @@ +SKIP_PREFLIGHT_CHECK=true diff --git a/publicodes/example/publicode-react/.gitignore b/publicodes/example/publicode-react/.gitignore index 4d29575de..b15da9280 100644 --- a/publicodes/example/publicode-react/.gitignore +++ b/publicodes/example/publicode-react/.gitignore @@ -1,4 +1,5 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +!.env # dependencies /node_modules @@ -10,7 +11,6 @@ # production /build - # misc .DS_Store .env.local diff --git a/publicodes/example/publicode-react/package.json b/publicodes/example/publicode-react/package.json index 3ad91f064..2f70c62cc 100644 --- a/publicodes/example/publicode-react/package.json +++ b/publicodes/example/publicode-react/package.json @@ -6,8 +6,8 @@ "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", - "publicodes": "../../core/publicodes-1.0.0-beta.13.tgz", - "publicodes-react": "../../ui-react/publicodes-react-1.0.0-beta.13.tgz", + "publicodes": "../../core/publicodes-1.0.0-beta.14.tgz", + "publicodes-react": "../../ui-react/publicodes-react-1.0.0-beta.14.tgz", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router": "^5.2.0", diff --git a/publicodes/example/publicode-react/src/setupTests.js b/publicodes/example/publicode-react/src/setupTests.js index 8f2609b7b..52aaef1d2 100644 --- a/publicodes/example/publicode-react/src/setupTests.js +++ b/publicodes/example/publicode-react/src/setupTests.js @@ -2,4 +2,4 @@ // allows you to do things like: // expect(element).toHaveTextContent(/react/i) // learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom' diff --git a/publicodes/ui-react/package.json b/publicodes/ui-react/package.json index 7a0f6264a..8bbe11009 100644 --- a/publicodes/ui-react/package.json +++ b/publicodes/ui-react/package.json @@ -1,6 +1,6 @@ { "name": "publicodes-react", - "version": "1.0.0-beta.13", + "version": "1.0.0-beta.14", "description": "UI to explore publicodes computations", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -18,8 +18,6 @@ "dependencies": { "classnames": "^2.2.6", "focus-trap-react": "^3.1.2", - "publicodes": "1.0.0-beta.13", - "publicodes-react": "1.0.0-beta.13", "ramda": "^0.27.0", "react-easy-emoji": "^1.4.0", "react-helmet": "^6.1.0", @@ -28,6 +26,7 @@ "yaml": "^1.9.2" }, "peerDependencies": { + "publicodes": "1.0.0-beta.14", "react": "^17.0.2", "react-router-dom": "^5.1.1", "react-router-hash-link": "^1.2.2"