This commit is contained in:
Thorsten Sommer 2018-09-13 15:30:32 +02:00
commit 3d7e638cc6
10 changed files with 117 additions and 0 deletions

10
Main.go Normal file
View File

@ -0,0 +1,10 @@
package main
import (
"fileserver/cli"
)
// The entry point of the application.
func main() {
cli.Init()
}

1
Variables.go Normal file
View File

@ -0,0 +1 @@
package main

31
cli/CmdStart.go Normal file
View File

@ -0,0 +1,31 @@
package cli
import (
"fileserver/version"
"log"
"net/http"
"github.com/spf13/cobra"
)
func cmdStart() (cmd *cobra.Command) {
cmd = &cobra.Command{
Use: "start",
Short: "Starts the Simple File Server with the given configuration.",
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
// Run the server
log.Printf("Simple File Server v%s", version.VERSION)
log.Printf("Compiled with Go %s", version.GetGoversion())
log.Printf("Configuration: root directory='%s', bind to='%s", configData.RootDirectory, configData.BindHostAndPort)
log.Println("Start the file server now...")
http.Handle("/", http.FileServer(http.Dir(configData.RootDirectory)))
http.ListenAndServe(configData.BindHostAndPort, nil)
},
}
cmd.Flags().StringVarP(&configData.RootDirectory, "rootDirectory", "d", ".", "The root directory. All files in this directory and its sub-directories get published.")
cmd.Flags().StringVarP(&configData.BindHostAndPort, "bindHostPort", "b", "0.0.0.0:8080", "The address or hostname and port where to bind the file server.")
return
}

22
cli/CmdVersion.go Normal file
View File

@ -0,0 +1,22 @@
package cli
import (
"fileserver/version"
"fmt"
"github.com/spf13/cobra"
)
func cmdVersion() (cmd *cobra.Command) {
cmd = &cobra.Command{
Use: "version",
Short: "Prints the current version",
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
fmt.Printf("Simple File Server v%s\n", version.VERSION)
fmt.Printf("Compiled with Go %s", version.GetGoversion())
},
}
return
}

7
cli/Init.go Normal file
View File

@ -0,0 +1,7 @@
package cli
func Init() {
rootCLI.AddCommand(cmdStart())
rootCLI.AddCommand(cmdVersion())
rootCLI.Execute()
}

12
cli/Variables.go Normal file
View File

@ -0,0 +1,12 @@
package cli
import (
"fileserver/Configuration"
"github.com/spf13/cobra"
)
var (
rootCLI = &cobra.Command{Use: "SimpleFileServer"}
configData = &configuration.Container{}
)

7
configuration/Scheme.go Normal file
View File

@ -0,0 +1,7 @@
package configuration
// The data container for the configuration.
type Container struct {
BindHostAndPort string
RootDirectory string
}

7
go.mod Normal file
View File

@ -0,0 +1,7 @@
module fileserver
require (
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/spf13/cobra v0.0.3
github.com/spf13/pflag v1.0.2 // indirect
)

6
go.sum Normal file
View File

@ -0,0 +1,6 @@
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/pflag v1.0.2 h1:Fy0orTDgHdbnzHcsOgfCN4LtHf0ec3wwtiwJqwvf3Gc=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=

14
version/Version.go Normal file
View File

@ -0,0 +1,14 @@
package version
import (
"runtime"
"strings"
)
const VERSION = "1.0.0"
func GetGoversion() (ver string) {
ver = runtime.Version()
ver = strings.Replace(ver, "go", "", 1)
return
}