Skip to content

Commit

Permalink
feat!: v1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
EmileRolley committed Feb 29, 2024
1 parent 0904d2f commit d3f0315
Show file tree
Hide file tree
Showing 25 changed files with 3,566 additions and 141 deletions.
71 changes: 52 additions & 19 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,52 @@
# name: Build rules
# on:
# pull_request:
#
# jobs:
# build:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# with:
# ref: ${{ github.ref }}
# - name: Set-up bun
# uses: oven-sh/setup-bun@v1
# with:
# bun-version: latest
# - name: Install dependencies and build
# run: bun i --frozen-lockfile
# - name: Build
# run: bun run build
name: Build rules
on:
pull_request:

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"

- id: install
name: Install dependencies
run: yarn install --immutable

- id: build
name: Compile the rules
run: yarn build

deploy_gh_page:
runs-on: ubuntu-latest
needs:
- build
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"

- id: install
name: Install dependencies
run: yarn install --immutable && yarn install --immutable --cwd doc

- id: doc:build
name: Build the documentation
run: yarn doc:build
- name: Deploy
uses: crazy-max/ghaction-github-pages@v3
with:
target_branch: gh-pages
build_dir: doc/build
jekyll: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
node_modules
.yarn
%PACKAGE_NAME%.model.json
model-template.model.json
index.d.ts
index.js
51 changes: 22 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,8 @@ Pour utiliser ce template, il suffit de cliquer sur le bouton `Use this
template`. Puis de remplacer les variables suivantes dans tous les fichiers du
projet :

- `%PACKAGE_NAME%` : nom du paquet npm / nom du repository GitHub
- `%GITHUB_USER%` : nom d'utilisateur GitHub / organisation GitHub

Pour garantir une utilisation de la documentation sans erreur :

- `%DEFAULT_RULE%` : nom de la règle à afficher par défaut dans la documentation en ligne
- `model-template` : nom du paquet npm / nom du repository GitHub
- `publicodes` : nom d'utilisateur GitHub / organisation GitHub

Pour utiliser les fonctionnalités de la CI :

Expand All @@ -55,89 +51,86 @@ Pour utiliser les fonctionnalités de la CI :
_Modèle Publicodes pour la base de données NegaOctet_
- [`@incubateur-ademe/publicodes-impact-livraison`](https://github.com/incubateur-ademe/publicodes-negaoctet) -
_Modèle [Publicodes](https://publi.codes) pour le simulateur [Impact Livraison](https://impactco2.fr/livraison)_
- [`ekofest/publicodes-evenements`](https://github.com/ekofest/publicodes-evenements) -
_Modèle Publicodes pour le calcul de l'impact environnemental des événements_

## Usage

Ajouter le paquet à vos dépendances :

```
bun add %PACKAGE_NAME%
yarn add model-template
```

Instancier un nouveau moteur Publicode :

```typescript
import Engine from "publicodes"
import rules from "%PACKAGE_NAME%"
import rules from "model-template"

const engine = new Engine(rules)

engine.evaluate("tablette . consommation en mode actif")
engine.evaluate("dépenses primeur")
```

Utiliser certaines règles dans un autre modèle publicodes :

```yaml
importer!:
depuis:
nom: %PACKAGE_NAME%
url: https://github.com/%GITHUB_USER%/%PACKAGE_NAME%
dans: modèle numérique
nom: model-template
url: https://github.com/publicodes/model-template
les règles:
- numérique . internet . consommation horaire
- ordinateur portable . construction
- prix . carottes
- prix . carottes
- prix . avocats
```
### En local
#### Compiler le modèle
> Les règles publicodes du modèle sont disponible dans le workspace
> [`rules/`](https://github.com/%GITHUB_USER%/%PACKAGE_NAME%/tree/main/rules).
> [`rules/`](https://github.com/publicodes/model-template/tree/main/rules).

Pour installer les dépendances et compiler tous les fichiers `.publicodes` en
un seul fichier JSON, il suffit d'exécuter la commande suivante :

```
bun && bun run build
yarn
yarn build
```

#### Lancer la documentation

> Le code de la documentation est disponible dans le workspace
> [`doc/`](https://github.com/%GITHUB_USER%/%PACKAGE_NAME%/tree/main/doc).
> [`doc/`](https://github.com/publicodes/model-template/tree/main/doc).

Pour lancer l'app React en local permettant de parcourir la documentation du
modèle, il suffit d'exécuter la commande suivante :

```
bun i --cwd doc
yarn install --cwd doc
bun run doc:start
yarn doc
```

#### Lancer l'API

> Le code de l'API est disponible dans le workspace
> [`api/`](https://github.com/%GITHUB_USER%/%PACKAGE_NAME%/tree/main/api).
> [`api/`](https://github.com/publicodes/model-template/tree/main/api).

Pour lancer le serveur Node permettant d'utiliser l'API REST, il faut utiliser les commandes
suivantes :

```
bun run api
yarn install --cwd api
# En watch-mode
bun run api:watch
yarn api
```

## Publier une nouvelle version

Afin de publier une nouvelle version il suffit d'exécuter la commande `npm
version`.

## Exemple de dépôt utilisant ce template

- [`@incubateur-ademe/publicodes-impact-livraison`](https://github.com/incubateur-ademe/publicodes-impact-livraison)
- [`@incubateur-ademe/publicodes-negaoctet`](https://github.com/incubateur-ademe/publicodes-negaoctet)
- [`@incubateur-ademe/publicodes-commun`](https://github.com/incubateur-ademe/publicodes-commun)
19 changes: 8 additions & 11 deletions api/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "%PACKAGE_NAME%-api",
"name": "model-template-api",
"version": "0.1.0",
"description": "",
"type": "module",
Expand All @@ -9,25 +9,22 @@
"index.js"
],
"scripts": {
"build": "bun run index.js"
"start": "node server.js"
},
"repository": "git@github.com:%GITHUB_USER%/%PACKAGE_NAME%.git",
"homepage": "https://github.com/%GITHUB_USER%/%PACKAGE_NAME%#readme",
"repository": "git@github.com:publicodes/model-template.git",
"homepage": "https://github.com/publicodes/model-template#readme",
"bugs": {
"url": "https://github.com/%GITHUB_USER%/%PACKAGE_NAME%/issues"
"url": "https://github.com/publicodes/model-template/issues"
},
"authors": [],
"license": "MIT",
"devDependencies": {
"@incubateur-ademe/publicodes-tools": "^0.2.1",
"@publicodes/api": "^1.0.0-beta.71",
"nodemon": "^3.0.1"
},
"devDependencies": {},
"dependencies": {
"@koa/cors": "^4.0.0",
"@koa/router": "^12.0.0",
"@publicodes/rest-api": "^1.1.0",
"koa": "^2.14.2",
"publicodes": "^1.0.0-beta.71"
"publicodes": "^1.1.0"
},
"publishConfig": {
"access": "public"
Expand Down
19 changes: 19 additions & 0 deletions api/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import Router from "@koa/router"
import Koa from "koa"
import Engine from "publicodes"
import { koaMiddleware as publicodesAPI } from "@publicodes/rest-api"

import rules from "../model-template.model.json" assert { type: "json" }

const app = new Koa()
const router = new Router()

// Create middleware with your Engine
const apiRoutes = publicodesAPI(new Engine(rules))

// Basic routes usage (/evaluate, /rules, etc.)
router.use(apiRoutes)

app.use(router.routes()).listen(3000, () => {
console.log("Server started on http://localhost:3000")
})
Loading

0 comments on commit d3f0315

Please sign in to comment.