import * as CSV from 'std:csv'; import { Redmine } from 'bluemine'; const endpoint = 'https://projets.cohabit.fr/redmine'; const apiKey = ''; const redmine = new Redmine({ endpoint, apiKey }); type CsvEntry = { firstname: string; lastname: string; mail: string; }; const file = await Deno.readTextFile( 'C:/Users/Julien/Documents/Stage/FabLab/entrepreneur_full.csv', ); const csv = CSV.parse(file.replaceAll(';', ','), { skipFirstRow: true, }) as CsvEntry[]; const users: { id: number; login: string }[] = []; for (const { firstname, lastname } of csv) { const login = `${firstname.toLowerCase()}.${lastname.toLowerCase()}`; try { const list = await redmine.users.list({ limit: 1, name: login }); const user = list.users[0]; console.log(`get user: ${user.login}#${user.id}`); users.push(user); } catch { console.error(`error list: ${login}`); } } const { groups } = await redmine.unstableGroups.list() as unknown as { groups: { id: number; name: string }[]; }; const { id } = groups.filter(({ name }) => name === 'entrepreneur-01-24')[0]; for (const user of users) { try { console.error(`ok: ${user.login}#${user.id}`); await redmine.unstableGroups.addUser(id, user); } catch { console.error(`error: ${user.login}`); } }