Commit af005a64 authored by Andrey Piskunov's avatar Andrey Piskunov
Browse files

:tada: add script

parents
No related merge requests found
Showing with 519 additions and 0 deletions
+519 -0
.gitignore 0 → 100644
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
\ No newline at end of file
README.md 0 → 100644
# Скрипт для создания репозиториев gitlab для студентов
\ No newline at end of file
Димир Тимурович Аброков dtabrokov
Руслана Геннадьевна Агаджанян rgagadzhanian
Александра Вадимовна Аин avain
Андрей Андреевич Акимов ananakimov
Владислав Алексеевич Алексеев vlalalekseev
Елизавета Сергеевна Алимова esalimova
Семен Владимирович Алцыбеев svaltsybeev
Роман Рустемович Аминев rraminev
Антон Андреевич Артемьев ananartemev
Алексей Владимирович Артюшин avartiushin
Аскер Расимович Аскеров asraaskerov
Мария Дмитриевна Ахматгалеева mdakhmatgaleeva
Андрей Вячеславович Бабенко anvibabenko
Дамир Рамилевич Бабиков drbabikov
Вячеслав Дмитриевич Базылев vdbazylev
Екатерина Алексеевна Байбакова eabaibakova
Михаил Андреевич Балашов mabalashov
Амгалан Алдарович Банзаров aabanzarov
Константин Аркадьевич Барайщук kabaraishchuk
Арсений Алексеевич Барсток aabarstok
Андрей Игоревич Басов anigbasov
Алина Андреевна Баташова aabatashova
Вячеслав Геннадьевич Белоусов vgbelousov
Александр Валентинович Богомолов avbogomolov_1
Андрей Олегович Боев aoboev
Андрей Владиславович Борыш avborysh
Георгий Алексеевич Браженко gabrazhenko
Виталий Игоревич Брехов vibrekhov
Илья Игоревич Бурховецкий iiburkhovetskii
Станислав Дмитриевич Вагин sdvagin
Софья Александровна Васильева soalvasileva
Михаил Вячеславович Везелев mvvezelev
Александр Алексеевич Веретнов aaveretnov
Арам Эдикович Вирабян aevirabian
Ксения Павловна Вознесенская kpvoznesenskaia
Николай Романович Волков nirovolkov
Полина Сергеевна Вороницкая psvoronitskaia
Дарья Николаевна Воронцова dnvorontsova
Ярослав Эдуардович Газзаев iegazzaev
Никита - Гарбуз ngarbuz
Кирилл Сергеевич Гибельгаус ksgibelgaus
Тимур Маратович Гизатулин tmgizatulin
Аскар Айратович Гизатуллин aagizatullin
Борис Равашиевич Гилядов brgiliadov
Никита Дмитриевич Глазихин ndglazikhin
Егор Максимович Глинник emglinnik
Всеслава Евгеньевна Говорова vegovorova
Эренцен Саврович Годгаев esgodgaev
Василиса Дмитриевна Голикова vdgolikova
Владислав Витальевич Голуб vvgolub
Владислав Дмитриевич Горбунов vdgorbunov
Артемий Борисович Горячев abgoriachev
Лев Максимович Грезев lmgrezev
Никита Юрьевич Григорьев nigrigorev
Юрий Юрьевич Гришин iigrishin
Ксения Дмитриевна Гудкова kdgudkova
Артур Давидович Давтян addavtian
Абакар Темурланович Дадаев atdadaev
Игорь Евгеньевич Данилов iedanilov
Ева Владимировна Данилова evvldanilova
Садык Илкер - Дегишмез sdegismez
Кирилл Александрович Деговцов kadegovtsov
Алиса Евгеньевна Денисова aedenisova
Степан Ильич Детина sidetina
Александр Денисович Дмитриев aldedmitriev
Татьяна Сергеевна Догадаева tsdogadaeva
Варвара Владимировна Дудко vavldudko
Дарья Васильевна Душейко dvdusheiko
Ирина Сергеевна Дыбнова isdybnova
Анастасия Александровна Елизарова aaelizarova
Иван Дмитриевич Елисеев ivdmeliseev
Всеволод Владимирович Енушкевич vvenushkevich
Олег Игоревич Ермаков oiermakov_1
Алексей Ильич Жохов aizhokhov
Андрей Александрович Жуков aazhukov_15
Дарья Александровна Жулева dazhuleva
Алена Николаевна Забуселова anzabuselova
Арсен Артурович Зайнашев aazainashev
Дарья Владимировна Зайцева dvzaitseva
Николай Александрович Засухин nazasukhin
Михаил Александрович Землянухин mazemlianukhin
Егор Вячеславович Зубарев evzubarev
Артём Владимирович Зуев arvlzuev
Никита Вадимович Зуев nvzuev
Леонид Михайлович Иванилов lmivanilov
Валерий Михайлович Иванов vamiivanov
Степан Алексеевич Иванов stalivanov
Семён Русланович Изотов srizotov
Артём Романович Ильченко arilchenko
Павел Алексеевич Иорданов paiordanov
Михаил Витальевич Кабанов mivikabanov
Даниил Алексеевич Казначеев dakaznacheev
Артём Рафаэлевич Календжян arkalendzhian
Армен Андраникович Карагюлян aakaragiulian
Тимофей Романович Карпов trkarpov
Никита Игоревич Кателкин nikatelkin
Софья Владимировна Квасцова svkvastsova
Артем Валерьевич Кеменов avkemenov
Елена Андреевна Климина eaklimina
Михаил Александрович Клюшкин makliushkin
Савва Владимирович Ковалев savlkovalev
Тимофей Сергеевич Ковалев tskovalev
Петр Михайлович Коновченко pmkonovchenko
Глеб Денисович Корец gdkorets
Илья Олегович Коркин iokorkin
Игнат Романович Коробицын irkorobitsyn
Денис Александрович Королев dkorolev
Владислав Игоревич Коршун vikorshun
Никита Максимович Космач nmkosmach
Александр Олегович Кочетков aokochetkov
Даниил Сергеевич Красавин dskrasavin
Дмитрий Александрович Краснощёков dakrasnoshchekov
Елизавета Юрьевна Кривушкина eikrivushkina
Егор Дмитриевич Круглов edkruglov
Екатерина Петровна Круковская epkrukovskaya
Григорий Петрович Крылов gpkrylov
Дмитрий Романович Кудинов drkudinov_1
Василиса Сергеевна Кудрявцева vskudriavtseva
Заира Салмановна Кулбужева zskulbuzheva
Анастасия Алексеевна Куренкова aakurenkova_5
Илья Константинович Курило ikkurilo
Егор Анатольевич Куров eakurov
Дмитрий Ильич Лавритов dilavritov
Ярослав Александрович Ладовир ialadovir
Андрей Сергеевич Лафуткин aslafutkin
Александр Максимович Левашов amlevashov
Дмитрий Маркович Левинтан dmlevintan
Диана Юрьевна Левитская dilevitskaia
Никита - Левцов nlevtsov
Дмитрий Денисович Лелеко ddleleko
Александр Александрович Лепехов aalepekhov
Софья Игоревна Липчанская silipchanskaia
Александр Юрьевич Лисота ailisota
Пётр Сергеевич Лопаткин pslopatkin
Александр Леонидович Лоскутников alloskutnikov
Ярослав Владимирович Лукьянов ivlukianov
Валерия Раилевна Мазиева vrmazieva
Александр Иванович Мазур aimazur
Илья Денисович Мальков idmalkov
Виктория Андреевна Мальцева vianmaltseva
Нуртилек Жанабидинович Мамашакиров nzmamashakirov
Рустам Парвизович Мамедов rpmamedov
Марат Айратович Мамлеев mamamleev
Асмар Иса Кызы Маммадова aimammadova
Сергей Анатольевич Манахимов samanakhimov
Богдан Максимович Марков bmmarkov
Мирра Максимовна Мартыновских mmmartynovskikh
Татьяна Максимовна Маслова tmmaslova
Егор Александрович Матвеев egalmatveev
Георгий Александрович Матюхин gamatiukhin
Владимир Дмитриевич Мацнев vdmatsnev
Камила Гусейновна Меджидова kgmedzhidova
Элина Дмитриевна Минакова edminakova
Артём Ромуальдович Мирумян armirumian
Иван Кириллович Митюшкин ikmityushkin
Игорь Станиславович Михайлов ismikhailov
Анна Андреевна Мищенко aamishchenko
Михаил Васильевич Моисеев mv.moiseev
Дмитрий Сергеевич Молчанов dsmolchanov
Екатерина Сергеевна Мосейчук esmoseichuk
Самурхан Мурадович Мурадханов smmuradkhanov
Булат Радикович Мухаметдинов brmukhametdinov
Ирина Романовна Мучаева irmuchaeva
Виталий Вячеславович Наумов vivinaumov
Всеволод Васильевич Непорожнев vvneporozhnev
Максим Александрович Нечкин manechkin
Степан Алексеевич Новичихин sanovichikhin
Тимур Рамилевич Нурутдинов trnurutdinov
Надежда Сергеевна Орлова nsorlova_4
Кирилл Андреевич Осинцев kaosintsev
Алёна Романовна Павлюк arpavliuk
Алина Сергеевна Пазынич alsepazynich
Мария Алексеевна Палиенко mapalienko
Елисей Николаевич Панов enpanov
Анжелика Владимировна Папина avpapina
Даниил Антонович Первов dapervov
Нелли Сергеевна Першина nspershina
Дмитрий Юрьевич Петров dmiupetrov
Гурген Аликович Петросян gapetrosian
Мария Владимировна Петрунина mavlpetrunina
Андрей Дмитриевич Пискунов apiskunov
Анастасия Михайловна Пискунова azayakina
Николай Викторович Плясов nvpliasov
Алексей Геннадьевич Полевщиков agpolevschikov
Георгий Александрович Прокофьев gaprokofev
Георгий Юрьевич Пустовой gipustovoi
Никита Евгеньевич Пырлицану nepyrlitsanu
Матвей Николаевич Рабынин mnrabynin
Полина Вячеславовна Райкова pvraikova
Айгиз Камилевич Рахматуллин akrakhmatullin
Алексей Андреевич Ржевкин aarzhevkin
Глеб Игоревич Рогачев girogachev
Василий Александрович Родманич varodmanich
Макар Антонович Романов maanromanov
Кира Сергеевна Румянцева ksrumiantseva
Денис Валерьевич Русанов dvrusanov
Данила Александрович Рябов dariabov
Матвей Михайлович Рязанцев mmriazantsev
Ренат Маратович Садыков remasadykov
Мария Тимуровна Саликова mtsalikova
Эртине Александрович Салчак easalchak
Булгун Игоревна Самаева bisamaeva
Глеб Владимирович Санин gvsanin
Савелий Артёмович Санников saarsannikov
Владимир Евгеньевич Сатаров vesatarov
Николай Олегович Саушкин nosaushkin
Анфиса Алексеевна Сафронова anfalesafronova
Яна Андреевна Сахарова iasakharova
Юлия Евгеньевна Сачкова iesachkova
Андрей Сергеевич Свистунов assvistunov
Егор Дмитриевич Сенчуков edsenchukov
Матвей Вячеславович Сергеев mavisergeev
Иван Александрович Серов ivalserov
Влад Андреевич Сивчиков vasivchikov
Андрей Владимирович Симионов avsimionov
Роман Кириллович Синицын rksinitsyn
Александр Григорьевич Скляр agskliar
Злата Викторовна Слепцова zvsleptsova
Алексей Сергеевич Слетков assletkov
Анастасия Артемовна Смеркалова aasmerkalova
Максим Константинович Смолин mksmolin
Глеб Вячеславович Сорокин gvsorokin
Артём Олегович Соснин aososnin
Ярослав Сергеевич Старостин yasstarostin
Анастасия Игоревна Судакова aisudakova
Анастасия Алексеевна Суслова anaalesuslova
Василий Ильич Сухарников visukharnikov
Илья Денисович Сущенко idsushchenko
Елизавета Олеговна Тихонова eotikhonova
Максим Сергеевич Толмачев mstolmachev
Никита Михайлович Трескин nmtreskin
Илья Владимирович Трофимов ivtrofimov_2
Семён Борисович Удалов sbudalov
Ксения Александровна Урясьева kauriaseva
Ирина Алексеевна Фадеева iafadeeva
Иван Владимирович Федоренко ivfedorenko
Руслан Олегович Фёдоров rofedorov
Светлана Сергеевна Федюкова ssfediukova
Диана Артёмовна Филипович dafilipovich
Марк - Флах mflakh
Мухаммаджон Мукбилович Хасанов mumukhasanov
Павел Сергеевич Хлудин pskhludin
Семён Максимович Холодилов smkholodilov
Максим Вячеславович Хомин mvkhomin
Александра Тимофеевна Целовальникова attselovalnikova
Михаил - Цой mtsoi
Александр Константинович Цуканов aktsukanov
Андрей Александрович Цымбалюк analtsymbaliuk
Мадина Руслановна Чапанова mrchapanova
Фёдор Борисович Чашкин fbchashkin
Виктория Андреевна Челнокова vachelnokova
Иван Денисович Черданцев idcherdantsev
Арсений Дмитриевич Черненков adchernenkov
Алла Андреевна Чернова alanchernova
Руслан Рамазович Чибиров rrchibirov
Александр Романович Чилингаров archilingarov
Денис Андреевич Шадров dashadrov
Максим Фаритович Шарифулин mfsharifulin
Алина Юрьевна Швыркина aishvyrkina
Артём Вадимович Шишкин arvashishkin
Владислав Андреевич Шныренков vashnyrenkov
Тимофей Юрьевич Шукшин tishukshin
Дмитрий Юрьевич Щагин dishchagin
Андрей Александрович Щепотьев aashchepotev
Алика Алексеевна Щерба aashcherba
Давид Эрдняевич Этеев deeteev
Владимир Алексеевич Юдинцев vaiudintsev
Александр Алексеевич Яворский aaiavorskii
Станислав Витальевич Язев sviazev
Карим Маратович Якупов kmiakupov
Анастасия Сергеевна Янке asianke
Тимофей Александрович Яснов taiasnov
Арсений Михайлович Ястребов amiastrebov
Даниил Андреевич Яшин daiashin
Хасыр Викторович Яшкулов kviashkulov
\ No newline at end of file
This diff is collapsed.
package.json 0 → 100644
{
"name": "create-students-repos",
"version": "1.0.0",
"description": "Script for creating students in gitlab",
"main": "gitlab-add-students.js",
"scripts": {
"start": "node index.js"
},
"keywords": [],
"author": "Andrew Piskunov",
"license": "ISC",
"dependencies": {
"@gitbeaker/node": "^35.8.1",
"dotenv": "^16.4.4"
}
}
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '../.env') })
module.exports = {
gitlabToken: process.env.GITLAB_TOKEN,
gitlabHost: process.env.GITLAB_HOST,
};
src/index.js 0 → 100644
const path = require('path');
const fs = require('fs');
const { Gitlab } = require('@gitbeaker/node');
const config = require('./config');
const GROUP_NAME = "biv23x-ps";
const FULL_GROUP_NAME = `${config.gitlabHost}/${GROUP_NAME}/`;
const ACCESS_LEVEL = 30;
const STUDENTS_FILE_NAME = "../data/students.txt";
const studentsFilePath = path.join(__dirname, STUDENTS_FILE_NAME);
const api = new Gitlab({
token: config.gitlabToken,
host: config.gitlabHost,
});
function readStudentsFile() {
if (!fs.existsSync(studentsFilePath)) {
console.error(`File ${studentsFilePath} doesn't exist`);
return [];
}
const data = fs.readFileSync(studentsFilePath, 'utf8');
return data.split('\n').map(line => {
const parts = line.split('\t');
return {
name: `${parts[1]} ${parts[0]}`,
slug: parts[2],
};
});
}
async function getProject(slug) {
const [project] = await api.Projects.search(slug);
return project;
}
async function addProjectToGroup(name, slug) {
const group = await api.Groups.show(GROUP_NAME);
return api.Projects.create({
name: name,
visibility: 'private',
namespaceId: group.id,
path: slug,
});
}
async function getUserBySlug(slug) {
const [user] = await api.Users.search(slug);
return user;
}
async function addUserToProject(userId, projectId) {
const members = await api.ProjectMembers.all(projectId);
const foundUser = members.find(member => member.id === userId);
if (!foundUser) {
await api.ProjectMembers.add(projectId, userId, ACCESS_LEVEL);
console.log("Added user to project member");
return;
}
console.log("User is already member of project");
}
async function main() {
const students = readStudentsFile();
for (const student of students) {
try {
const project = await getProject(student.slug) || await addProjectToGroup(student.name, student.slug);
const user = await getUserBySlug(student.slug);
if (!user) {
console.warn(`Can't find user ${student.slug}`);
continue;
}
console.log(`Adding user ${student.name} to project ${project.web_url}`);
await addUserToProject(user.id, project.id);
} catch(err) {
console.error(err);
}
}
}
main().catch(err => console.error(err));
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment