Skip to content

Commit ff8f38f

Browse files
committed
v3.0
1 parent 4defd08 commit ff8f38f

File tree

2 files changed

+75
-51
lines changed

2 files changed

+75
-51
lines changed

bin/create_structure.py

Lines changed: 64 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,54 @@
33
# Imports
44
import os
55
from datetime import *
6+
from github import Github
7+
import pygit2
8+
from getpass import getpass
69

710
__author__ = "davidecastellani@castellanidavide.it", "chiara@sabaini.com"
8-
__version__ = "02.01 2020-03-24"
11+
__version__ = "03.01 2020-08-15"
912

10-
class create_structure_02_01:
13+
class create_structure_03_01:
1114
def __init__ (self):
1215
"""Main function
1316
"""
14-
questions = [ "Inserisci nome progetto (es. create_structur): ", #0
15-
"Inserisci estensione file principale (es. py): "] #1
17+
questions = [ "Inserisci nome progetto (es. create_structur): ", #0
18+
"Inserisci estensione file principale (es. py): ", #1
19+
"Inserisci una descrizione del progetto: ", #2
20+
"Il progetto è con Boscaini (<nome della classe>-<numero consegna>), Bellini (b) o qualcunaltro(lasciare vuoto)? ", #3
21+
"Questo progetto è con la Chiara?(Y/N): ", #4
22+
"Questo progetto è privato?(Y/N): ", #5
23+
"Inserisci il tuo username di GitHub: ", #6
24+
"Inserisci la tua password su GitHub: " #7
25+
]
1626
results = []
17-
for current_quest in questions:
18-
results.append(input(current_quest))
27+
28+
for i, current_quest in enumerate(questions):
29+
if i == len(questions) - 1:
30+
results.append(getpass(prompt=current_quest))
31+
else:
32+
results.append(input(current_quest))
1933

20-
main_folder_name = create_structure_02_01.create_folder_structure(results)
21-
print(f"Folders built in {main_folder_name}")
34+
print()
35+
36+
folder_name = f"./{results[0].lower()}_01_01" if (results[3] == "b") else (f"./{results[0]}" if(results[3] == "") else f"./{results[3]}-{results[0]}")
37+
create_structure_03_01.create_folder(folder_name)
38+
print(f"Folder built")
39+
40+
repo = create_structure_03_01.create_repo(results)
41+
print(f"Repo built")
2242

23-
create_structure_02_01.create_source(main_folder_name, results)
43+
create_structure_03_01.create_source(repo, results)
2444
print(f"Source file built")
2545

26-
create_structure_02_01.create_README(main_folder_name, results)
46+
create_structure_03_01.create_README(repo, results)
2747
print(f"README.md built")
2848

29-
create_structure_02_01.create_log(main_folder_name)
49+
create_structure_03_01.create_log(repo)
3050
print(f"trace.log built")
3151

32-
33-
def create_folder_structure(results):
34-
"""Creates del directories structure
35-
"""
36-
# Create main folder
37-
main_folder_name = "./" + results[0].lower() + "_01_01"
38-
create_structure_02_01.create_folder(main_folder_name)
39-
40-
# Create bin folder
41-
bin_folder_name = main_folder_name + "/bin"
42-
create_structure_02_01.create_folder(bin_folder_name)
43-
44-
# Create doc folder
45-
doc_folder_name = main_folder_name + "/doc"
46-
create_structure_02_01.create_folder(doc_folder_name)
47-
48-
# Create log folder
49-
doc_folder_name = main_folder_name + "/log"
50-
create_structure_02_01.create_folder(doc_folder_name)
51-
52-
return main_folder_name
52+
create_structure_03_01.download_repo(repo, folder_name)
53+
print(f"repo downloaded")
5354

5455
def create_folder(directory):
5556
"""Creates a folder
@@ -60,11 +61,21 @@ def create_folder(directory):
6061
except OSError:
6162
print ('Error: Creating directory. ' + directory)
6263

63-
def create_source(main_folder_name, results):
64+
def create_repo(results):
65+
"""Create the repo in CastellaniDavide repository
66+
"""
67+
if results[4] == "Y":
68+
repo = Github(results[6], results[7]).get_organization("CastellaniDavide").create_repo(results[0], description=results[2], private=results[5] == "Y", has_issues=False, has_wiki=False, has_downloads=True, has_projects=False, team_id=4008430)
69+
else:
70+
repo = Github(results[6], results[7]).get_organization("CastellaniDavide").create_repo(results[0], description=results[2], private=results[5] == "Y", has_issues=False, has_wiki=False, has_downloads=True, has_projects=False)
71+
72+
return repo
73+
74+
def create_source(repo, results):
6475
"""Writes the standards line of code based on the extension
6576
"""
6677
time = datetime.now()
67-
file_name_and_path = f"{main_folder_name}/bin/{results[0]}.{results[1]}"
78+
6879
if(results[1] == "py"):
6980
text = f'"""{results[0]}\n"""\n\n__author__ = "davidecastellani@castellanidavide.it", "chiara@sabaini.com"\n__version__ = "01.01 {str(time.day)}-{str(time.month)}-{str(time.day)}"\n\n' # first part
7081
text += f'class {results[0]}:\n\tdef __init__ (self):\n\nif __name__ == "__main__":\n\t{results[0]}()'
@@ -87,18 +98,19 @@ def create_source(main_folder_name, results):
8798
else:
8899
text = f"# {results[0]}"
89100

90-
f = open(file_name_and_path, "w+")
91-
f.write(text)
92-
f.close()
101+
if(results[4] == "N"):
102+
text = text.replace(" & Sabaini Chiara", "").replace(', "chiara@sabaini.com"', "")
103+
104+
repo.create_file(f"bin/{results[0]}.{results[1]}", f"Created {results[0]}.{results[1]}", text)
93105

94-
def create_README(main_folder_name, results):
106+
def create_README(repo, results):
95107
"""Creates the README.md
96108
"""
97109
time = datetime.now()
98-
file_name_and_path = main_folder_name + "/doc/README.md"
110+
99111
init = f"# {results[0]}\n"
100112
tags = f"\n## Tags\n #tag1, #tag2\n"
101-
desc = f"\n## Description\n"
113+
desc = f"\n## Description\n{results[2]}\n"
102114
req = f"\n## Required\n - \n"
103115
dir_structure = f"\n### Directories structure\n - bin\n\t - {results[0]}.{results[1]}\n - doc\n\t - README.md\n - log\n\t - trace.log\n"
104116
exe_examples = f"\n### Execution examples\n - {results[0]}.{results[1]}\n\t - \n"
@@ -107,19 +119,24 @@ def create_README(main_folder_name, results):
107119
finish = f"\nMade by Castellani Davide & Sabaini Chiara\nIf you have any problem please contact us:\n- davidecastellani@castellanidavide.it\n- chiara@sabaini.com"
108120
sep = f"\n---"
109121
text = init + tags + desc + req + sep + dir_structure + sep + exe_examples + sep + changelog + sep + version + sep + finish
110-
with open(file_name_and_path, "w+") as f:
111-
f.write(text)
112122

113-
def create_log(main_folder_name):
123+
if(results[4] == "N"):
124+
text = text.replace(" & Sabaini Chiara", "").replace("\n- chiara@sabaini.com", "")
125+
126+
repo.create_file("docs/README.md", f"Created README.md", text)
127+
128+
def create_log(repo):
114129
"""Creates the trace.log
115130
"""
116-
file_name_and_path = main_folder_name + "/log/trace.log"
117-
with open(file_name_and_path, "w+"):
118-
pass
131+
repo.create_file("log/trace.log", f"Created trace.log", "")
119132

133+
def download_repo(repo, folder_name):
134+
"""Downloads the repo into folder_name
135+
"""
136+
pygit2.clone_repository(repo.git_url, folder_name)
120137

121138
if __name__ == "__main__":
122139
try:
123-
create_structure_02_01()
140+
create_structure_03_01()
124141
except:
125142
print("There is an error, try again.")

docs/README.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
# create_structure
2-
[![GitHub license](https://img.shields.io/badge/licence-GNU-green?style=flat)](https://github.com/CastellaniDavide/cpp-create_structure/blob/master/LICENSE) ![Author](https://img.shields.io/badge/author-Castellani%20Davide-green?style=flat) ![Version](https://img.shields.io/badge/version-v2.0-blue?style=flat) ![Language Python](https://img.shields.io/badge/language-Python-yellowgreen?style=flat) ![sys.platform supported](https://img.shields.io/badge/OS%20platform%20supported-Linux,%20Windows%20&%20Mac%20OS-blue?style=flat) [![On GitHub](https://img.shields.io/badge/on%20GitHub-True-green?style=flat&logo=github)](https://github.com/CastellaniDavide/create_structure)
2+
[![GitHub license](https://img.shields.io/badge/licence-GNU-green?style=flat)](https://github.com/CastellaniDavide/cpp-create_structure/blob/master/LICENSE) ![Author](https://img.shields.io/badge/author-Castellani%20Davide-green?style=flat) ![Version](https://img.shields.io/badge/version-v3.0-blue?style=flat) ![Language Python](https://img.shields.io/badge/language-Python-yellowgreen?style=flat) ![sys.platform supported](https://img.shields.io/badge/OS%20platform%20supported-Linux,%20Windows%20&%20Mac%20OS-blue?style=flat) [![On GitHub](https://img.shields.io/badge/on%20GitHub-True-green?style=flat&logo=github)](https://github.com/CastellaniDavide/create_structure)
33

44
# Description
55
This is the magic "robottino" by Castellani Davide & Sabaini Chiara
66

77
## Required
88
- python3
9+
- PyGithub (pip3 install PyGithub)
10+
- pygit2 (pip3 install pygit2)
11+
- Internet connection
12+
- GitHub account
913

1014
## Directories structure
1115
- .github
@@ -24,11 +28,14 @@ This is the magic "robottino" by Castellani Davide & Sabaini Chiara
2428
- python3 create_structure.py
2529

2630
# Changelog
27-
- [02.01_2020-3-24](#2.0_2020-3-24)
28-
- [01.01_2020-3-24](#1.0_2020-3-24)
31+
- [3.0_2020-8-15](#3.0_2020-8-15)
32+
- [2.0_2020-3-24](#2.0_2020-3-24)
33+
- [1.0_2020-3-24](#1.0_2020-3-24)
2934

3035

31-
36+
### 3.0_2020-8-15
37+
- #### Changes
38+
- add GitHub support with a lot of options (eg. repo private or public)
3239
### 2.0_2020-3-24
3340
#### Changes
3441
- adjusted some bugs

0 commit comments

Comments
 (0)