Проблемът

Преди няколко дни имах „малък проблем“ с акаунта си в Github… Ще обясня много бързо, за да разбера как откривам Shell Script.

Моят акаунт в Github беше малко стар (не толкова стар), беше създаден, когато бях мениджър на проекти и нямаше кодове. През 2018 г., когато започнах да изучавам езици за програмиране, се върнах към употребата, сега, за да създавам своите хранилища и кодове.

Така че миналата седмица реших да форматирам компютъра си, с увереността, че всички неща, които направих, са напълно безопасни в моя Github. Но след като рестартирах компютъра си, опитвайки се да осъществя достъп до моя Github, започна серия от 💩:

  1. Беше необходимо да вмъкна двуфакторно удостоверяване (О, нееее! Не си спомнях, че съм активирал тази 2FA)
  2. Мобилният телефон, който използвах по това време (2012), не е същият, който използвам днес и... разбира се, нямам 2FA на моя Github тук.
  3. Е, има кодове за възстановяване и къде е той? Да… не знам, вероятно съм запазил в машината, която работех на последната си работа… загубих!
  4. Свързах се с поддръжката и отговорът: „Съжаляваме, не можем да направим нищо. Невъзможно е да анулирате 2FA на вашия акаунт, това са нашите правила за сигурност.“

Добре... акаунтът ми в Github беше блокиран. За щастие имах само публични хранилища — урок за вас, начинаещ като разработчик като мен и имах някои частни хранилища, винаги проверявайте дали всичко е безопасно.

Решение:Да създам нов акаунт в Github и да клонирам всички хранилища от моя стар акаунт в този нов.

Така че се обаждам на приятелите си в Twitter:

Благодарение на Дева Мария на интернет и общностите за програмиране, „Celso Fernandes“ ми представи Shell Script и не се наложи да клонирам всички хранилища ръчно.

Но какво е Shell Script?

Shell Script е инструмент за автоматизиране на инструкции, който изпълнява последователност от команди.

Това е обвивката, която интерпретира командния ред, въведен от потребителя на терминала, и извиква желаните програми.

Тъй като това са характеристиките на езика за програмиране, shell е много мощен инструмент за разработване на бързи скриптове и скриптове за автоматизиране на ежедневни задачи.

Запознах се с блога на Аурелио, той наистина е добър с Shell Script, написа книга за тази технология — на португалски (и имам тази книга у дома — благодарение на съпруга ми, че купи тази книга преди няколко години… rsrsrs), е възможно да разреши много съмнения по тази тема в неговия уебсайт.

Създаване на хранилище с помощта на терминал

Нека започнем автоматично да създаваме хранилища.

С помощта на терминал е възможно да се създаде хранилище, като се използва Github API:

curl -u 'username' https://api.github.com/user/repos -d '{"name":"repository name"}'

Където 'username' е вашето потребителско име в Github, а в полето"repository name" трябва да включите името на хранилището, което ще бъде създадено. Последователно е необходимо да попълните паролата си за Github и новото ви хранилище е готово.

Но как мога да направя, ако трябва да създам 100 хранилища? Тук започва Sell Script:

Всички файлове в това следващо обяснение са създадени в една и съща директория. Е, нека създадем файл с име .secrets.sh, който ще запази нашия потребител и парола за Github.

#!/bin/bash
export GITHUB_PASSWORD='AdventureTime'
export GITHUB_USERNAME='Finn'

Тук създаваме нов файл .sh с име create_repo.sh с командата за създаване на ново хранилище, импортиране на потребител и парола.

#!/bin/bash curl
curl -u "$GITHUB_USERNAME:$GITHUB_PASSWORD" https://api.github.com/user/repos -d "{\"name\":\"${1}\"}"

И за да създадете много хранилища и да използвате друг файл.sh с името наcreate_repos.sh:

#!/bin/bash
for repo in repo1 repo2 repo2
do
 ./create_repo.sh $repo
done

Създадени файлове, стартирайте в терминала тези два командни реда:

$ source ~/.secrets.sh 
$ ./create_repos.sh

Клониране на хранилища от същия акаунт

В моя случай трябваше да клонирам всички хранилища от стария си акаунт в новия.

След като създам новите хранилища (избирам същото име за новия си акаунт), добавям нов файл clone_repos.sh, за да клонирам хранилищата на стария си акаунт.

#!/bin/bash
APP_ROOT=`pwd`
for repo in repoA repoB repoC repoD repoE repoF
do
 cd ~/src    
 git clone https://github.com/PrincessBubblegum/${repo}.git    
 cd ~/src/${repo}    
 git remote rm origin    
 git remote add origin [email protected]:Finn/${repo}.git
 git push --set-upstream origin master
done
cd $APP_ROOT

В тази част от кода for repo in repoA repoB... е необходимо да вмъкнете едно и също име на хранилищата, които клонирате, в този пример по-горе, името на хранилищата ще бъде клонирано от акаунта „PrincessBubblegum“.

Създайте файл, сега стартирайте в терминала:

$ ./clone_repos.sh

И вашият Github ще бъде с всички клонирани хранилища, използвайки само един ред код.

Поуки

Някои уроци, които научих в този процес:

  1. Трябва да разбирате вашите работни инструменти: компютърът, файловете, вашият Github. Беше добре за мен да знам, че имам двуфакторно удостоверяване в акаунта си в Github, което никога преди не съм си представял. И съществуват публични и частни ключове и запазването на кодовете за възстановяване на безопасно място е много важно.
  2. Ако вършите някаква повтаряща се работа в компютъра, например: създавате много хранилища ръчно или използвате много Crtl C + Ctrl V, спрете и направете проучване, защото със сигурност някой е създал начин за автоматизиране на този процес.
  3. Não subestime sua capacidade, mesmo sendo iniciante em programação. Pesquise, leia, pergunte para desenvolvedores experientes, participe de comunidades, é assim que se constrói conhecimento.

А вие, които сте чели до тук, използвате ли Shell Script за автоматизиране на нещо? Как обикновено автоматизирате задачите си? Споделете с нас тук. :Д

Você pode ler este artigo em Português aqui!