Я пытаюсь автоматизировать запрос клона git, сжать результат и перезаписать старую копию, чтобы все выполнялось одним действием - PullRequest
0 голосов
/ 10 мая 2019

Мне нравится учиться новым способам делать вещи полуавтоматически, поэтому, если у меня есть что-то, что я делаю часто, я пытаюсь автоматизировать это одним щелчком мыши. Я, однако, довольно неопытен в этом. Я предпочитаю показать, почему сценарий работает, а не просто писать его для меня.

Мой текущий проект такой:

Я пытаюсь найти простой способ одним щелчком мыши обновить каталог zip. в частности, мод для фермерского симулятора 19, который я сейчас скачиваю в виде почтового индекса с github, который обновляется каждые пару дней.

я думаю, что мне нужно выполнить следующие шаги: 1. Получить новый выпуск (думаю, у меня есть этот рабочий) 2. Новый почтовый релиз (вроде работает, но не совсем правильно) 3. перезаписать существующий zip новым (если я могу исправить свой текущий метод выполнения step2, он делает это автоматически) 4. (необязательно) запуск игры после сохранения всех файлов

Я работал над этим пару дней между поиском вопросов других людей и пробами и ошибками в битах кода.

1: Я обнаружил, что могу загрузить его автоматически с помощью cmd.exe, используя следующее:

git clone https://github.com/Courseplay/courseplay.git C:\Users\*****\Documents\courseplay

Из того, что я прочитал, я не уверен, хочу ли я этого. является результатом этой команды то же самое, что я получил бы из 'download .zip'

2, 3: Я узнал, что могу затем сжать и перезаписать существующий файл с помощью powershell:

Compress-Archive -Force -Path "C:\Users\*****\Documents\courseplay" -DestinationPath "C:\Users\*****\Documents\My Games\FarmingSimulator2019\mods\courseplay.zip"

Однако это работает не так, как я надеялся / ожидал, поскольку он добавляет папку в zip-архив, а не просто архивирует ее содержимое ...

, чтобы уточнить, что я ищу:

Courseplay.zip - некоторые файлы

Я получаю

Courseplay.zip --Courseplay ---- некоторые файлы

Кроме того, я не смог объединить их в один предмет. Я не могу использовать команду git из powershell, и я не могу создать или взаимодействовать с файлами в заархивированной папке из cmd. Я попытался использовать powershell для перехода к cmd несколькими способами, которые я видел в Запуск команды CMD в PowerShell

cmd.exe "git clone https://github.com/Courseplay/courseplay.git c:\Users\*****\Documents\courseplay"

Какие выходы

ourseplay не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

cmd.exe /c "git clone https://github.com/Courseplay/courseplay.git c:\Users\*****\Documents\courseplay"

Какие выходы

«git» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

"git clone https://github.com/Courseplay/courseplay.git c:\Users\*****\Documents\courseplay
" | cmd.exe

Какие выходы

Microsoft Windows [Version 10.0.17134.706]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\*****\Documents>git clone https://github.com/Courseplay/courseplay.git c:\Users\*****\Documents\courseplay
Cloning into 'c:\Users\*****\Documents\courseplay'...
fatal: unable to access 'https://github.com/Courseplay/courseplay.git/': Could not resolve host: github.com

Итак, мои основные проблемы: Как заархивировать содержимое папки, в которой мой текущий метод создает архив с исходной папкой в ​​качестве подпапки

и

В настоящее время я должен использовать два разных инструмента для этого. Есть ли способ, которым я могу написать это, чтобы сделать все вышеперечисленное одним щелчком мыши.

Я пока не задумывался о том, чтобы запустить игру как часть сценария, поскольку я все еще пытаюсь заставить остальную часть работать, и это было запоздалой мыслью. Я знаю в cmd

start steam://rungameid/787860 запустит его.

Мне было бы хорошо с cmd, powershell или какой-либо другой формой сценариев, которая способна выполнить все вышеперечисленное.

Кроме того, необходимо указать, что нужно ждать между шагами. (по умолчанию он ожидает завершения загрузки с git clone, прежде чем перейти к следующему шагу, или ему нужно сказать, чтобы он дождался окончания загрузки)

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Github предоставляет простой API для загрузки ZIP-архива.См. Этот ответ.

curl -LOk https://github.com/Courseplay/courseplay/archive/master.zip

ElpieKay

Эта информация, кажется, была введена в cmd (я думаю) из статьи, которую вы опубликовали, но она дала мне тот кусочек, который мне был нужен.В отличие от моей попытки клонирования, он также работал по каналу cmd.exe из powershell, что позволяет поместить весь сценарий в один файл.

Я также решил настроить соединение папок через mklink, чтобы иметь возможность синхронизировать мои папки сохранений и модов на всех компьютерах, которые я использую через onedrive.

Мой окончательный код выглядит следующим образом.

cd C:\Users\username\OneDrive
"curl -LOk https://github.com/Courseplay/courseplay/archive/master.zip" | cmd.exe
Expand-Archive C:\Users\username\OneDrive\master.zip
Compress-Archive C:\Users\username\OneDrive\master\courseplay-master\* C:\Users\username\OneDrive\FarmingSimulator2019\mods\courseplay.zip -force
Remove-Item –path C:\Users\username\OneDrive\master.zip –recurse -force
Remove-Item –path C:\Users\username\OneDrive\master –recurse -force
start steam://rungameid/787860

, который, как я пытался сделать, дает мне один элемент рабочего стола для обновления курса, разархивирования загруженного файла, повторного архивирования нужной подпапки, переименования ее и перезаписи существующего почтового индекса.более того, теперь он также удаляет загруженный zip-файл и извлеченную папку для очистки после себя и запускает игру.Спасибо @ElpieKay за предоставленную часть, которая мне нужна, чтобы закончить ее.

0 голосов
/ 10 мая 2019

Github предоставляет простой API для загрузки ZIP-архива. См. этот ответ .

curl -LOk https://github.com/Courseplay/courseplay/archive/master.zip

Чтобы использовать curl в cmd, см. этот ответ .

Другие услуги хостинга также могут иметь аналогичные методы. Как правило, для создания zip-архива ревизии, например, master, из удаленного репозитория, вы можете запустить

git archive --remote=<repository_url> master -o foo.zip

Некоторые услуги хостинга могут отклонять git archive.

...