import "dotenv/config";
import { spfi } from "@pnp/sp";
import { SPDefault } from "@pnp/nodejs";
import * as fs from "fs";
import "@pnp/sp/webs";
import "@pnp/sp/lists";
import "@pnp/sp/fields";
const TENANT_ID = process.env.TENANT_ID!;
const CLIENT_ID = process.env.CLIENT_ID!;
const THUMBPRINT = process.env.THUMBPRINT!;
const KEY_PATH = process.env.KEY_PATH!;
const SITE_URL = process.env.SITE_URL!;
const SP_ROOT_URL = process.env.SP_ROOT_URL!;
async function createSessionsList(): Promise<void> {
const privateKey = fs.readFileSync(KEY_PATH, "utf-8").trim();
const sp = spfi(SITE_URL).using(
SPDefault({
baseUrl: SITE_URL,
msal: {
config: {
auth: {
clientId: CLIENT_ID,
authority: `https://login.microsoftonline.com/${TENANT_ID}`,
clientCertificate: {
thumbprint: THUMBPRINT,
privateKey: privateKey
}
}
},
scopes: [`${SP_ROOT_URL}/.default`]
}
})
);
console.log("Création de la liste Sessions...");
await sp.web.lists.add("Sessions", "Liste des sessions de formation", 100);
const list = sp.web.lists.getByTitle("Sessions");
console.log("Ajout des colonnes...");
// Colonnes texte
for (const col of [
"CodeFormation", "HeureDebut", "NumeroSession",
"TypeFormation", "NomClient", "Site",
"CoordinationNom", "CoordinationEmail",
"Modalite", "LienTeams", "LienSupport",
"LienParticipants", "NomAgence", "EmailAgence",
"LienEmargement", "LienEvaluation", "FichierIcs"
]) {
await list.fields.addText(col);
console.log(` + ${col}`);
}
// Colonnes date
await list.fields.addDateTime("DateSession");
await list.fields.addDateTime("DateFin");
console.log(" + DateSession, DateFin");
// Colonnes nombre
await list.fields.addNumber("Duree");
await list.fields.addNumber("NbConfirmes");
await list.fields.addNumber("NbOption");
await list.fields.addNumber("NbDistanciel");
console.log(" + Duree, NbConfirmes, NbOption, NbDistanciel");
// Colonne texte long
await list.fields.addMultilineText("EnjeuxContexte");
console.log(" + EnjeuxContexte");
// Colonne choix
await list.fields.addChoice("Statut", {
Choices: ["Confirmé", "Option"]
});
console.log(" + Statut");
console.log("Liste Sessions créée avec succès.");
}
createSessionsList()
.then(() => process.exit(0))
.catch((err) => {
console.error("Erreur :", err.message ?? err);
process.exit(1);
});