homework 4.2: add question 3

This commit is contained in:
2022-04-08 10:46:48 +07:00
parent 2981f9cab8
commit 4ab000a022
2 changed files with 84 additions and 2 deletions

View 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)

View File

@@ -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