@@ -13,26 +13,31 @@ import (
1313)
1414
1515const (
16- CertFilename = "cert.pem"
17- KeyFilename = "key.pem"
16+ certFilename = "cert.pem"
17+ keyFilename = "key.pem"
1818)
1919
20+ var configDir string
21+
2022var rootCmd = & cobra.Command {
2123 Use : "dirhttps" ,
2224 Short : "Serving contents of current directory by HTTPS." ,
2325 Args : cobra .NoArgs ,
2426 Version : fmt .Sprintf ("%s -- %s" , version .Version , version .Commit ),
2527 Run : func (cmd * cobra.Command , args []string ) {
26- home , err := homedir .Dir ()
28+
29+ certFile , err := cmd .Flags ().GetString ("cert" )
2730
2831 if err != nil {
29- log .Fatalf ("Error determining home directory : %s" , err )
32+ log .Fatalf ("Error parsing cert flag : %s" , err )
3033 }
3134
32- configDir := fmt .Sprintf ("%s/.config/dirhttps" , home )
35+ keyFile , err := cmd .Flags ().GetString ("key" )
36+
37+ if err != nil {
38+ log .Fatalf ("Error parsing key flag: %s" , err )
39+ }
3340
34- certFile := filepath .Join (configDir , CertFilename )
35- keyFile := filepath .Join (configDir , KeyFilename )
3641 certAvailable := true
3742
3843 if _ , err := os .Stat (certFile ); err != nil {
@@ -46,10 +51,9 @@ var rootCmd = &cobra.Command{
4651 if ! certAvailable {
4752 log .Printf ("Necessary certificate and/or key file not found." )
4853 log .Fatalf (
49- "Place a certificate \" %s\" and a key file \" %s\" to %s" ,
50- CertFilename ,
51- KeyFilename ,
52- configDir ,
54+ "Store a certificate to \" %s\" and a key file to \" %s\" or provide the --cert and --key flags" ,
55+ certFilename ,
56+ keyFilename ,
5357 )
5458 }
5559
@@ -62,7 +66,7 @@ var rootCmd = &cobra.Command{
6266 addr , err := cmd .Flags ().GetString ("listen" )
6367
6468 if err != nil {
65- log .Fatalf ("Error parsing listen flage : %s" , err )
69+ log .Fatalf ("Error parsing listen flag : %s" , err )
6670 }
6771
6872 log .Printf ("Listening for HTTPS connections on %s" , addr )
@@ -87,6 +91,7 @@ var rootCmd = &cobra.Command{
8791 },
8892}
8993
94+ // Execute runs root command
9095func Execute () {
9196 if err := rootCmd .Execute (); err != nil {
9297 fmt .Println (err )
@@ -95,7 +100,20 @@ func Execute() {
95100}
96101
97102func init (){
103+ home , err := homedir .Dir ()
104+
105+ if err != nil {
106+ log .Fatalf ("Error determining home directory: %s" , err )
107+ }
108+
109+ configDir := fmt .Sprintf ("%s/.config/dirhttps" , home )
110+
111+ certFile := filepath .Join (configDir , certFilename )
112+ keyFile := filepath .Join (configDir , keyFilename )
113+
98114 rootCmd .Flags ().StringP ("listen" , "l" , ":8443" , "Listen address" )
115+ rootCmd .Flags ().StringP ("cert" , "c" , certFile , "Certificate file" )
116+ rootCmd .Flags ().StringP ("key" , "k" , keyFile , "Key file" )
99117 rootCmd .Flags ().Bool ("no-cors" , false , "Disable CORS handling" )
100118 rootCmd .Flags ().Bool ("cache" , false , "Enable client side caching" )
101119}
0 commit comments