Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:

function Clone-GitHubRepo {
    <#
    .SYNOPSIS
    Клонирование github репозитория
    .DESCRIPTION
    Функция для клонирования github репозитория в локальный репозиторий Git
    .PARAMETER Path
    System.String - Путь к локальному репозиторию Git
    .PARAMETER URL
    System.String - Адресс github репозитория
    Например: https://github.com/author/reponame
    .INPUTS
    System.String - Путь к локальному репозиторию Git
    .INPUTS
    System.String - Ссылка на github репозиторий
    .NOTES
    Автор:          iNNOKENTIY21
    Зависимость:    Требуется Git for windows
    .LINK
    https://gitforwindows.org/
    #>
 
    [CmdletBinding()]
    param (
        # Путь к локальному репозиторию Git
        [Parameter(Mandatory = $true)]
        [string]
        $Path,
 
        # Ссылка на github репозиторий
        [Parameter(Mandatory = $true)]
        [string]
        $URL
    )
 
    # Проверка пути к локальному репозиторию Git
    if (!(Test-Path -Path $Path -PathType Container)) {
        $host.UI.WriteErrorLine("Не удается найти путь $Path")
        Exit 1
    }
 
    # Создается URI для работы с сылкой
    $uri = try
    {
        [Uri]::new($URL)
    }
    catch
    {
        $host.UI.WriteErrorLine($Error[0].Exception.Message)
    }
 
    # Проверка был ли создан URI
    if (!$uri) {
        $host.UI.WriteErrorLine("Не удалось получить URI из $URL")
        Exit 2
    }
 
    # Проверка URI на валидную ссылку репозитория github
    if (($uri.Host -ne "github.com") -and ($uri.Segments.Count -ne 3)) {
        $host.UI.WriteErrorLine(
            "$($uri.AbsoluteUri) не является ссылкой на github.com репозиторий"
        )
        Exit 3
    }
 
    # Автор репозитория (2 сегмент в ссылке на github репозиторий)
    $author = $uri.Segments[1]
 
    # Название репозитория (3 сегмент в ссылке на github репозиторий)
    $repoName = $uri.Segments[2]
 
    # Генерация пути (локальный Git репозиторй + автор репозитория)
    $authorPath = Join-Path -Path $Path -ChildPath $author
 
    # Проверка существует ли папка автора репозитрия в локальном Git репозитории
    # если нет, создать такую папку
    if (!(Test-Path -Path $authorPath -PathType Container)) {
        try {
            $null = New-Item $authorPath -ItemType Directory -ErrorAction Stop
        }
        catch {
            $host.UI.WriteErrorLine($Error[0].Exception.Message)
        }
    }
 
    # Генерация пути для локального репозитонрия
    # (папка автора в локальном Git репозитории + имя репозитория)
    $repoPath = Join-Path -Path $authorPath -ChildPath $repoName
 
    # Проверка пути локального репозитонрия
    if (Test-Path -Path $repoPath -PathType Container) {
        $host.UI.WriteErrorLine("Путь $repoPath уже существует")
        Set-Location -Path $repoPath
        Exit 4
    }
 
    # Переход в папку автора
    Set-Location -Path $authorPath
 
    # Запуск программы Git для клолнирования
    Git clone --recursive $uri.AbsoluteUri
 
    # Переход в папку репозитория
    Set-Location -Path $repoPath
}
 
# Запуск функции с параметрами:
# (локальный Git репозиторий) (ссылка на github репозиторий из буфера обмена)
Clone-GitHubRepo "c:\sources\github\" (Get-Clipboard)

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 16:49 02-11-2018
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru