33# Imports
44import os
55from 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 \t def __init__ (self):\n \n if __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"\n Made by Castellani Davide & Sabaini Chiara\n If 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
121138if __name__ == "__main__" :
122139 try :
123- create_structure_02_01 ()
140+ create_structure_03_01 ()
124141 except :
125142 print ("There is an error, try again." )
0 commit comments