66using GitHub . Unity ;
77using GitHub ;
88using GitHub . Logging ;
9+ using System . Net ;
10+ using System . Text ;
911
1012namespace TestApp
1113{
@@ -39,6 +41,18 @@ static void RunWebServer(NPath path, int port)
3941 server . Stop ( ) ;
4042 }
4143
44+ static TestWebServer . HttpServer RunWebServer ( int port )
45+ {
46+ var path = typeof ( Program ) . Assembly . Location . ToNPath ( ) . Parent . Combine ( "files" ) ;
47+ var server = new TestWebServer . HttpServer ( path , port ) ;
48+ var thread = new Thread ( ( ) =>
49+ {
50+ server . Start ( ) ;
51+ } ) ;
52+ thread . Start ( ) ;
53+ return server ;
54+ }
55+
4256 static int Main ( string [ ] args )
4357 {
4458 LogHelper . LogAdapter = new ConsoleLogAdapter ( ) ;
@@ -61,30 +75,70 @@ static int Main(string[] args)
6175 string url = null ;
6276 string readVersion = null ;
6377 string msg = null ;
78+ string host = null ;
79+ bool runUsage = false ;
6480
81+ var arguments = new List < string > ( args ) ;
82+ if ( arguments . Contains ( "usage" ) )
83+ {
84+ runUsage = true ;
85+ arguments . RemoveRange ( 0 , 2 ) ;
86+ }
6587
6688 p = p
6789 . Add ( "r=" , ( int v ) => retCode = v )
6890 . Add ( "d=|data=" , v => data = v )
6991 . Add ( "e=|error=" , v => error = v )
7092 . Add ( "f=|file=" , v => data = File . ReadAllText ( v ) )
7193 . Add ( "ef=|errorFile=" , v => error = File . ReadAllText ( v ) )
72- . Add ( "s=| sleep=" , ( int v ) => sleepms = v )
94+ . Add ( "sleep=" , ( int v ) => sleepms = v )
7395 . Add ( "i|input" , v => readInputToEof = true )
7496 . Add ( "w|web" , v => runWebServer = true )
75- . Add ( "port=" , ( int v ) => webServerPort = v )
97+ . Add ( "p| port=" , "Port ", ( int v ) => webServerPort = v )
7698 . Add ( "g|generateVersion" , v => generateVersion = true )
7799 . Add ( "v=|version=" , v => version = v )
78- . Add ( "p| gen-package" , "Pass --version --url --path --md5 --rn --msg to generate a package" , v => generatePackage = true )
100+ . Add ( "gen-package" , "Pass --version --url --path --md5 --rn --msg to generate a package" , v => generatePackage = true )
79101 . Add ( "u=|url=" , v => url = v )
80102 . Add ( "path=" , v => path = v . ToNPath ( ) )
81103 . Add ( "rn=" , "Path to file with release notes" , v => releaseNotes = v . ReadAllTextIfFileExists ( ) )
82104 . Add ( "msg=" , "Path to file with message for package" , v => msg = v . ReadAllTextIfFileExists ( ) )
83105 . Add ( "readVersion=" , v => readVersion = v )
84106 . Add ( "o=|outfile=" , v => outfile = v . ToNPath ( ) . MakeAbsolute ( ) )
85- . Add ( "h|help" , v => p . WriteOptionDescriptions ( Console . Out ) ) ;
107+ . Add ( "h=" , "Host" , v => host = v )
108+ . Add ( "help" , v => p . WriteOptionDescriptions ( Console . Out ) ) ;
86109
87- p . Parse ( args ) ;
110+ var extra = p . Parse ( arguments ) ;
111+ if ( runUsage )
112+ {
113+ extra . Remove ( "usage" ) ;
114+ p . Parse ( extra ) ;
115+
116+ path = extra [ extra . Count - 1 ] . ToNPath ( ) ;
117+ var server = RunWebServer ( webServerPort ) ;
118+ var webRequest = ( HttpWebRequest ) WebRequest . Create ( new UriString ( "http://localhost:" + webServerPort + "/api/usage/unity" ) ) ;
119+ webRequest . Method = "POST" ;
120+ using ( var sw = new StreamWriter ( webRequest . GetRequestStream ( ) ) )
121+ {
122+ foreach ( var line in path . ReadAllLines ( ) )
123+ {
124+ sw . WriteLine ( line ) ;
125+ }
126+ }
127+ using ( var webResponse = ( HttpWebResponse ) webRequest . GetResponseWithoutException ( ) )
128+ {
129+ MemoryStream ms = new MemoryStream ( ) ;
130+ var responseLength = webResponse . ContentLength ;
131+ using ( var sr = new StreamWriter ( ms ) )
132+ using ( var responseStream = webResponse . GetResponseStream ( ) )
133+ {
134+ Utils . Copy ( responseStream , ms , responseLength ) ;
135+ }
136+ Console . WriteLine ( Encoding . ASCII . GetString ( ms . ToArray ( ) ) ) ;
137+ }
138+
139+ server . Stop ( ) ;
140+ return 0 ;
141+ }
88142
89143 if ( generatePackage )
90144 {
0 commit comments