Skip to content

Commit

Permalink
v1.1.0 implementation (#2): finished application for release "CSharpF…
Browse files Browse the repository at this point in the history
…inder-v1.1.0"
  • Loading branch information
mauricepreiss committed Dec 11, 2023
1 parent d32969b commit 84e4139
Show file tree
Hide file tree
Showing 7 changed files with 344 additions and 50 deletions.
12 changes: 12 additions & 0 deletions CSharpFinder/CSharpFinder.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,24 @@
<Compile Include="Logger.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Resources\ResourceManager.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="csharpfinder-app-icon.ico" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
167 changes: 120 additions & 47 deletions CSharpFinder/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Threading;

namespace CSharpFinder
{
Expand All @@ -15,6 +16,8 @@ internal class Program
private static readonly Logger logger = new Logger(_logPath);
private static bool consoleResized = false;
private static bool errorOccured = false;
private static bool gotValidAnswer = false;
private static ConsoleKeyInfo info;

static void Main(string[] args)
{
Expand All @@ -35,9 +38,14 @@ static void Main(string[] args)


// Anzeigeeinstellungen
Console.Title = "CSharp Finder";
Console.Title = "CSharp Finder v" + Assembly.GetExecutingAssembly().GetName().Version.ToString();
Console.ForegroundColor = ConsoleColor.DarkRed;

if (Environment.Is64BitProcess)
{
Console.Title += " (64-bit Windows)";
}

try
{
if (!consoleResized)
Expand All @@ -62,21 +70,30 @@ static void Main(string[] args)
// ============================================


Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("> Bitte geben sie den Pfad des Verzeichnisses ein, dass auf C#-Dateien untersucht werden soll: ");
Console.ForegroundColor = ConsoleColor.White;
string dirPath = Console.ReadLine();

// Prüfen ob Pfad gefüllt
if (string.IsNullOrEmpty(dirPath))
string dirPath = "";
do
{
WriteErrorLine("Bitte geben sie einen Pfad an!!");
}
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("> Bitte geben sie den Pfad des Verzeichnisses ein, dass auf C#-Dateien untersucht werden soll: ");
Console.ForegroundColor = ConsoleColor.White;

dirPath = Console.ReadLine();
if (!string.IsNullOrEmpty(dirPath))
{
gotValidAnswer = true;
}
else
{
WriteErrorLine("Bitte geben sie einen Pfad an!!", false);
gotValidAnswer = false;
}
} while (!gotValidAnswer);

// Prüfen ob Zielverzeichnis existiert
if (!Directory.Exists(dirPath))
{
WriteErrorLine("Dieses Verzeichnis existiert nicht. Bitte wählen sie en anderes Verzeichnis aus!!!");
WriteErrorLine("Dieses Verzeichnis existiert nicht. Bitte wählen sie en anderes Verzeichnis aus!");
}

// Dateien auflisten
Expand All @@ -93,7 +110,7 @@ static void Main(string[] args)

// Startmeldung
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("Dateien werden gesucht...");
Console.WriteLine("\n[INFO]: Dateien werden gesucht...");

// Zielverzeichnis für kopierte Dateien
string resultDirPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "result");
Expand Down Expand Up @@ -125,16 +142,57 @@ static void Main(string[] args)


// ============================================
// ============= Dateien prüfen ==============
// ============ Dateien kopieren =============
// ============================================

gotValidAnswer = false;
info = new ConsoleKeyInfo();
bool copyFiles = false;

Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("\n> Möchten Sie diese Dateien kopieren? [Y/N]");

do
{
info = Console.ReadKey();
Console.WriteLine("\b");

switch (info.Key)
{
case (ConsoleKey.Y):
copyFiles = true;
gotValidAnswer = true;
break;
case (ConsoleKey.N):
copyFiles = false;
gotValidAnswer = true;
break;
default:
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Keine gültige Eingabe!");
gotValidAnswer = false;
break;
}
} while (!gotValidAnswer);

if (!copyFiles)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nEs wurde keine Aktion ausgeführt. Das Programm wird automatisch geschlossen...");
Thread.Sleep(2500);
Environment.Exit(0);
}

Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("[INFO]: Dateien werden kopiert...");
Console.WriteLine("\n[INFO]: Dateien werden kopiert...");

// Dateien durchlaufen
foreach (string file in files)
{
try
{
// Prüfen auf C# / .NET Datei
if (IsCSharpAssembly(file))
{
// Kompletten Pfad bekommen, Datei in Liste hinzufügen
Expand Down Expand Up @@ -191,16 +249,17 @@ static void Main(string[] args)
// ============================================


bool gotValidAnswer = false;
ConsoleKeyInfo info = new ConsoleKeyInfo();
gotValidAnswer = false;
info = new ConsoleKeyInfo();

Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("Möchten Sie das Kopierverzeichnis öffnen? [Y/N]");
Console.WriteLine("\n> Möchten Sie das Kopierverzeichnis öffnen? [Y/N]");

do
{
info = Console.ReadKey();
Console.WriteLine("\b");

switch (info.Key)
{
Expand Down Expand Up @@ -231,13 +290,15 @@ static void Main(string[] args)
{
gotValidAnswer = false;
info = new ConsoleKeyInfo();

Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("Möchten Sie die Log-Datei öffnen? [Y/N]");
Console.WriteLine("\n> Möchten Sie die Log-Datei öffnen? [Y/N]");

do
{
info = Console.ReadKey();
Console.WriteLine("\b");

switch (info.Key)
{
Expand All @@ -264,11 +325,12 @@ static void Main(string[] args)
info = new ConsoleKeyInfo();
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("Möchten Sie versuchen, die kopierten Dateien so klein wie möglich zu komprimieren? (Beta) [Y/N]");
Console.WriteLine("\n> Möchten Sie versuchen, die kopierten Dateien so klein wie möglich zu komprimieren? (Beta) [Y/N]");

do
{
info = Console.ReadKey();
Console.WriteLine("\b");

switch (info.Key)
{
Expand All @@ -290,34 +352,39 @@ static void Main(string[] args)
}
} while (!gotValidAnswer);

// Komprimierte Dateien anzeigen?
gotValidAnswer = false;
info = new ConsoleKeyInfo();
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("Möchten Sie das Verzeichnis der komprimierten Dateien öffnen? [Y/N]");

do
// Prüfen ob Dateien komprimiert wurden?
if (compressFiles)
{
info = Console.ReadKey();
// Komprimierte Dateien anzeigen?
gotValidAnswer = false;
info = new ConsoleKeyInfo();
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("\n> Möchten Sie das Verzeichnis der komprimierten Dateien öffnen? [Y/N]");

switch (info.Key)
do
{
case (ConsoleKey.Y):
Process.Start(Path.Combine(resultDirPath, "compressed"));
gotValidAnswer = true;
break;
case (ConsoleKey.N):
gotValidAnswer = true;
break;
default:
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Keine gültige Eingabe!");
gotValidAnswer = false;
break;
}
} while (!gotValidAnswer);
info = Console.ReadKey();
Console.WriteLine("\b");

switch (info.Key)
{
case (ConsoleKey.Y):
Process.Start(Path.Combine(resultDirPath, "compressed"));
gotValidAnswer = true;
break;
case (ConsoleKey.N):
gotValidAnswer = true;
break;
default:
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Keine gültige Eingabe!");
gotValidAnswer = false;
break;
}
} while (!gotValidAnswer);
}

Environment.Exit(0);
}
Expand Down Expand Up @@ -352,7 +419,7 @@ private static void CompressFiles(string filePath)
using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
{
originalFileStream.CopyTo(compressionStream);
Console.WriteLine("Datei komprimiert/kopiert zu: " + compressedFile);
Console.WriteLine("Datei komprimiert/kopiert zu: " + compressedFile.Replace(filePath, "..."));
}
}
}
Expand All @@ -361,12 +428,18 @@ private static void CompressFiles(string filePath)
Console.WriteLine("[INFO]: Dateien kopiert. Nutzen sie 7Zip oder andere Tools, um die Dateien wieder zu dekomprimieren.");
}

private static void WriteErrorLine(string message)
private static void WriteErrorLine(string message, bool restart = true)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(message);
Console.WriteLine("[ERROR]: " + message);
Console.ReadKey();
Main(new string[0]);

// Prüfen auf geforderten Restart
if (restart)
{
Console.Clear();
Main(new string[0]);
}
}

private static bool IsCSharpAssembly(string assemblyLocation)
Expand Down
6 changes: 3 additions & 3 deletions CSharpFinder/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Maurice Preiß Development")]
[assembly: AssemblyProduct("CSharpFinder")]
[assembly: AssemblyCopyright("Copyright © Maurice Preiß Development 2023")]
[assembly: AssemblyCopyright("Copyright 2023 © Maurice Preiß Development")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: ComVisible(false)]

[assembly: Guid("3ef5c29e-f522-4ac1-b64b-65f95cdab068")]

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
63 changes: 63 additions & 0 deletions CSharpFinder/Properties/Resources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 84e4139

Please sign in to comment.