88
99namespace SplitFANUCProgramBackup
1010{
11- static class Program
11+ public static class Program
1212 {
1313 private static string ThisExecutableName => AppDomain . CurrentDomain . FriendlyName ;
1414 private static Version ? AssemblyVersion => Assembly . GetExecutingAssembly ( ) . GetName ( ) . Version ;
@@ -26,14 +26,15 @@ private static string BuildDate
2626 {
2727 buildDateTime = new DateTime ( 2000 , 1 , 1 ) . AddDays ( version . Build ) . AddSeconds ( version . Revision * 2 ) ;
2828 }
29-
29+
3030 return buildDateTime . ToString ( "o" ) ;
3131 }
3232 }
3333
3434 private const string cncProgramFileExtension = ".CNC" ;
3535 private const string defaultCNCprogramName = "Unknown" ;
3636 private const char programDelimiter = '%' ;
37+ private static readonly char [ ] subFolderTrim = { ' ' , '/' } ;
3738 private const int minimumProgramSize = 7 ;
3839
3940 /// <summary>
@@ -47,7 +48,12 @@ private static string BuildDate
4748 /// </summary>
4849 private const string directoryFlag = @"(&F=)" ;
4950
50- static async Task < int > Main ( string [ ] args )
51+ /// <summary>
52+ /// Command line entry point
53+ /// </summary>
54+ /// <param name="args">Requires only one argument: full path to the backup file.</param>
55+ /// <returns>Zero for success</returns>
56+ public static async Task < int > Main ( string [ ] args )
5157 {
5258 DisplayHeader ( ) ;
5359
@@ -131,7 +137,7 @@ private static string GetProgramNameFromHeader(string cncProgramText)
131137 /// </summary>
132138 /// <param name="fileName">Full path to "ALL-PROG.TXT"</param>
133139 /// <returns>Each CNC program as a string, and any associated subdirectory</returns>
134- static IEnumerable < ( string SubFolder , string ProgramText ) > GetCNCProgams ( string fileName , string outputFolder )
140+ private static IEnumerable < ( string SubFolder , string ProgramText ) > GetCNCProgams ( string fileName , string outputFolder )
135141 {
136142 StringBuilder content = new ( ) ;
137143 string subFolder = "" ;
@@ -150,7 +156,7 @@ private static string GetProgramNameFromHeader(string cncProgramText)
150156 }
151157
152158 // Strip out the directory flag and slashes to get just the folder name.
153- subFolder = Regex . Replace ( line , directoryFlag , string . Empty ) . Trim ( '/' ) ;
159+ subFolder = Regex . Replace ( line , directoryFlag , string . Empty ) . Trim ( subFolderTrim ) ;
154160 Directory . CreateDirectory ( Path . Combine ( outputFolder , subFolder ) ) ;
155161
156162 // Don't append notation to next program
@@ -175,7 +181,7 @@ private static string GetProgramNameFromHeader(string cncProgramText)
175181 yield return ( subFolder , CncProgramText ( content ) ) ;
176182 }
177183
178- static string CncProgramText ( StringBuilder content )
184+ private static string CncProgramText ( StringBuilder content )
179185 {
180186 // Prevent IndexOutOfBounds exceptions if final program is empty
181187 if ( content . Length > minimumProgramSize )
@@ -202,7 +208,7 @@ private static void NotFoundError(string fileName)
202208 Console . WriteLine ( "File not found: " + fileName ) ;
203209 }
204210
205- static void DisplayHelp ( )
211+ private static void DisplayHelp ( )
206212 {
207213 Console . WriteLine ( @"
208214At least one argument required. Enter only the path of the file you would like to split.
0 commit comments