mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
homework 4.2: add question 3
This commit is contained in:
39
src/homework/04-script/4.2/q3.py
Executable file
39
src/homework/04-script/4.2/q3.py
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
repo_path = sys.argv[1]
|
||||||
|
|
||||||
|
if repo_path == '':
|
||||||
|
print('необходимо указать путь до локального репозитория')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# запускаем под-процесс в рабочей директории (cwd)
|
||||||
|
top_level_command = subprocess.Popen(
|
||||||
|
['git rev-parse --show-toplevel'],
|
||||||
|
cwd=repo_path,
|
||||||
|
shell=True,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE
|
||||||
|
)
|
||||||
|
|
||||||
|
# ожидаем выполнение под-процесса
|
||||||
|
top_level_command.wait()
|
||||||
|
if top_level_command.returncode != 0:
|
||||||
|
print('директория {} не является git-репозиторием'.format(repo_path))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# на выходе у read() идёт последовательность байт, которые необходимо декодировать в строку
|
||||||
|
top_level_path = top_level_command.stdout.read().decode("utf-8").rstrip()
|
||||||
|
|
||||||
|
bash_command = ['cd ' + top_level_path, "git status"]
|
||||||
|
|
||||||
|
result_os = os.popen(' && '.join(bash_command)).read()
|
||||||
|
|
||||||
|
for result in result_os.split('\n'):
|
||||||
|
if result.find('modified') != -1:
|
||||||
|
prepare_result = result.replace('\tmodified: ', '')
|
||||||
|
full_path = top_level_path + '/' + prepare_result
|
||||||
|
print(full_path)
|
||||||
@@ -75,13 +75,56 @@ _note_: при запуске скрипта изменил путь до реп
|
|||||||
1. Доработать скрипт выше так, чтобы он мог проверять не только локальный репозиторий в текущей директории, а также умел воспринимать путь к репозиторию, который мы передаём как входной параметр. Мы точно знаем, что начальство коварное и будет проверять работу этого скрипта в директориях, которые не являются локальными репозиториями.
|
1. Доработать скрипт выше так, чтобы он мог проверять не только локальный репозиторий в текущей директории, а также умел воспринимать путь к репозиторию, который мы передаём как входной параметр. Мы точно знаем, что начальство коварное и будет проверять работу этого скрипта в директориях, которые не являются локальными репозиториями.
|
||||||
|
|
||||||
#### Ваш скрипт:
|
#### Ваш скрипт:
|
||||||
|
|
||||||
|
[script](./q3.py)
|
||||||
|
|
||||||
```python
|
```python
|
||||||
???
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
repo_path = sys.argv[1]
|
||||||
|
|
||||||
|
if repo_path == '':
|
||||||
|
print('необходимо указать путь до локального репозитория')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# запускаем под-процесс в рабочей директории (cwd)
|
||||||
|
top_level_command = subprocess.Popen(
|
||||||
|
['git rev-parse --show-toplevel'],
|
||||||
|
cwd=repo_path,
|
||||||
|
shell=True,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE
|
||||||
|
)
|
||||||
|
|
||||||
|
# ожидаем выполнение под-процесса
|
||||||
|
top_level_command.wait()
|
||||||
|
if top_level_command.returncode != 0:
|
||||||
|
print('директория {} не является git-репозиторием'.format(repo_path))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# на выходе у read() идёт последовательность байт, которые необходимо декодировать в строку
|
||||||
|
top_level_path = top_level_command.stdout.read().decode("utf-8").rstrip()
|
||||||
|
|
||||||
|
bash_command = ['cd ' + top_level_path, "git status"]
|
||||||
|
|
||||||
|
result_os = os.popen(' && '.join(bash_command)).read()
|
||||||
|
|
||||||
|
for result in result_os.split('\n'):
|
||||||
|
if result.find('modified') != -1:
|
||||||
|
prepare_result = result.replace('\tmodified: ', '')
|
||||||
|
full_path = top_level_path + '/' + prepare_result
|
||||||
|
print(full_path)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Вывод скрипта при запуске при тестировании:
|
#### Вывод скрипта при запуске при тестировании:
|
||||||
```
|
```
|
||||||
???
|
./q3.py ~/code/learning/netology
|
||||||
|
/home/dannc/code/learning/netology/src/homework/04-script/4.2/q3.py
|
||||||
```
|
```
|
||||||
|
|
||||||
### Обязательная задача 4
|
### Обязательная задача 4
|
||||||
|
|||||||
Reference in New Issue
Block a user