-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoutput.txt
180 lines (155 loc) · 6.19 KB
/
output.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
//folder: FtoT
//file: ArrayList.cs
//fib bundle --output bundFile.txt
internal class ArrayList<T>
{
}//file: Program.cs
using System.Collections;
using System.CommandLine;
using System.Diagnostics.SymbolStore;
using System.Collections;
//סוגי משתנים שהפעולה יכולה לקבל
var bundleOption = new Option<DirectoryInfo>("--input", "Folder path and name");
var bundleOption1 = new Option<string>("--language", "list of language");
var bundleOption2 = new Option<FileInfo>("--output", "File path and name");
var bundleOption3 = new Option<bool>("--note", "source");
var bundleOption4 = new Option<bool>("--sort", "type order");
var bundleOption5 = new Option<string>("--author", "author");
var bundleOption6 = new Option<bool>("--delEmpty","delate empty lines from the sourse file");
var bundleCommand = new Command("bundle", "Bundle code filed to a single file");
//הוספת המשתנים לפעולה
bundleCommand.AddOption(bundleOption);
bundleCommand.AddOption(bundleOption1);
bundleCommand.AddOption(bundleOption2);
bundleCommand.AddOption(bundleOption3);
bundleCommand.AddOption(bundleOption4);
bundleCommand.AddOption(bundleOption5);
bundleCommand.AddOption(bundleOption6);
//הגדרת מערך סיומות קבצים
string[] extension = { "css", "html", "js", "py", "java", "cs", "sql", "cs" };
//הגדרת מחרוזת לתוכה נכניס את תוכן הקובץ ובסוף הפעולה נכתוב אותה בקובץ היעודי
string s = "";
//פונקציה שמוחקת שורות ריקות מקובץ המקור
void delEmptyLine(string file)
{
var lines = File.ReadAllLines(file).Where(arg => !string.IsNullOrWhiteSpace(arg));
File.WriteAllLines(file, lines);
}
//פונקציה שמטפלת בתקייה
void folder(string pathIn,string pathOut,bool sort,bool delEmpty)
{
//מערך של כלל הקבצים בתקייה
string[] files=Directory.GetFiles(pathIn);
//מערך המכיל את כל הקבצים עם הסיומות המתאימות
List<string> goodFiles = new List<string>();
foreach(string file in files)
{
string ex = file.Substring(file.IndexOf('.') + 1);
for (int i = 0; i < extension.Length; i++)
if (ex.CompareTo(extension[i]) == 0)//אם סיומת הקובץ קיימת במערך הסיומות
{
goodFiles.Add(file);
break;
}
}
if (sort)
goodFiles.Sort(((q, p) => q.Substring(q.LastIndexOf('.') + 1).CompareTo(p.Substring(p.LastIndexOf('.') + 1))));
else
goodFiles.Sort();
if (goodFiles.Count() != 0)//אם בתקייה המקומית יש קבצים שצריך להעתיק
{
string name = pathIn.Substring(pathIn.LastIndexOf('\\') + 1);
//כותרת של שם התיקיה
s += "//folder: "+name+"\n";
foreach (string file in goodFiles)
{
if(delEmpty)
delEmptyLine(file);
s += "//file: " + file.Substring(file.LastIndexOf('\\') + 1) + "\n";
s += File.ReadAllText(file);
}
}
//עובר על תקיות מקומיות שיש במיקום הנוכחי
string[] folders = Directory.GetDirectories(pathIn);
for (int i = 0; i < folders.Length; i++)
folder(folders[i], pathOut,sort, delEmpty);
}
//הפעולה
bundleCommand.SetHandler((input,language,output, note,sort, author,delEmpty) =>
{
if (author != null)
{
s += "©: " + author + ".\n";
}
if (note==true)
{
s += "source: " + output.FullName + "\n";
}
if (language!=null && language != "all")//שינוי מערך סיומות קבצים
{
extension = language.Split(' ');
}
try
{
folder(input.FullName, output.FullName,sort, delEmpty);
File.WriteAllText(output.FullName, s);
Console.WriteLine("file was created");
}
catch (DirectoryNotFoundException e)
{
Console.WriteLine("error: file path is invalid");
}
catch
{
Console.WriteLine("failed");
}
}, bundleOption,bundleOption1, bundleOption2, bundleOption3,bundleOption4,bundleOption5,bundleOption6);
var rootCommand = new RootCommand("Root command for File Bundler CLI");
rootCommand.AddCommand(bundleCommand);
//========================================================================
var rspCommand = new Command("rsp","use a rsp file");
rspCommand.SetHandler(() =>
{
Console.WriteLine("hello");
string file = "", s;
try
{
Console.WriteLine("input the file's directory");
s=Console.ReadLine();
file +="--input "+s;
Console.WriteLine("input the directory for the new file and its name");
s= Console.ReadLine();
file+=" --output "+s;
Console.WriteLine("input a list of the file types you want to add (spaces between each) or input all for adding all the files");
s=Console.ReadLine();
file+=" --language "+s;
Console.WriteLine("if you want to show the files original direction input 1 else input 0");
s= Console.ReadLine();
if (s=="0")
file+=" --note false";
else if (s=="1")
file+=" --note true";
Console.WriteLine("if you want the files to be copied ordered acoording to thier types input 1 otherwise input 0");
s=Console.ReadLine();
if (s=="0")
file+=" --sort false";
else if (s=="1")
file+=" --sort true";
Console.WriteLine("if you want the aouthors name added to the file input his name, otherwise input 1");
s=Console.ReadLine();
if (s!="0" && s!=null)
file+=" --author "+s;
Console.WriteLine("if you want to delete the empty lines from input 1, otherwise input 0");
s= Console.ReadLine();
if (s=="0")
file+=" --delEmpty false";
else if (s=="1")
file+=" --delEmpty true";
//יצירת קובץ התגובה במיקום הנוכחי
File.WriteAllText("file.rsp", file);
Console.WriteLine("for creating your wanted file in the next cmd line input 'FtoT bundle @file.rsp' ");
}
catch { Console.WriteLine("failed"); }
});
rootCommand.AddCommand(rspCommand);
rootCommand.InvokeAsync(args);