From 9280224acb2bd671ed5b2461705863fa74eac7dd Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Fri, 23 Oct 2020 15:56:49 -0600 Subject: [PATCH] add init to initialize ./scripts/ with examples --- assets/assets.go | 4 ---- assets/examples/assets.go | 4 ++++ assets/examples/assets_dev.go | 8 ++++++++ assets/public/assets.go | 4 ++++ assets/{ => public}/assets_dev.go | 4 ++-- go.mod | 3 +-- go.sum | 17 +++++++++++------ main.go | 30 +++++++++++++++++++++++++++--- vendor/modules.txt | 6 +++--- 9 files changed, 60 insertions(+), 20 deletions(-) delete mode 100644 assets/assets.go create mode 100644 assets/examples/assets.go create mode 100644 assets/examples/assets_dev.go create mode 100644 assets/public/assets.go rename assets/{ => public}/assets_dev.go (59%) diff --git a/assets/assets.go b/assets/assets.go deleted file mode 100644 index eb2c267..0000000 --- a/assets/assets.go +++ /dev/null @@ -1,4 +0,0 @@ -// +build !dev -//go:generate go run -mod vendor github.com/shurcooL/vfsgen/cmd/vfsgendev -source="git.rootprojects.org/root/gitdeploy/assets".Assets - -package assets diff --git a/assets/examples/assets.go b/assets/examples/assets.go new file mode 100644 index 0000000..416a117 --- /dev/null +++ b/assets/examples/assets.go @@ -0,0 +1,4 @@ +// +build !dev +//go:generate go run -mod vendor github.com/shurcooL/vfsgen/cmd/vfsgendev -source="git.rootprojects.org/root/gitdeploy/assets/examples".Assets + +package examples diff --git a/assets/examples/assets_dev.go b/assets/examples/assets_dev.go new file mode 100644 index 0000000..e042dc3 --- /dev/null +++ b/assets/examples/assets_dev.go @@ -0,0 +1,8 @@ +// +build dev + +package examples + +import "net/http" + +// Assets is the public file system which should be served by http +var Assets http.FileSystem = http.Dir("../../examples") diff --git a/assets/public/assets.go b/assets/public/assets.go new file mode 100644 index 0000000..474b6b5 --- /dev/null +++ b/assets/public/assets.go @@ -0,0 +1,4 @@ +// +build !dev +//go:generate go run -mod vendor github.com/shurcooL/vfsgen/cmd/vfsgendev -source="git.rootprojects.org/root/gitdeploy/assets/public".Assets + +package public diff --git a/assets/assets_dev.go b/assets/public/assets_dev.go similarity index 59% rename from assets/assets_dev.go rename to assets/public/assets_dev.go index bb152d1..6e6253d 100644 --- a/assets/assets_dev.go +++ b/assets/public/assets_dev.go @@ -1,8 +1,8 @@ // +build dev -package assets +package public import "net/http" // Assets is the public file system which should be served by http -var Assets http.FileSystem = http.Dir("../public") +var Assets http.FileSystem = http.Dir("../../public") diff --git a/go.mod b/go.mod index afe37db..0c421ee 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,9 @@ go 1.15 require ( git.rootprojects.org/root/go-gitver/v2 v2.0.2 + git.rootprojects.org/root/vfscopy v1.0.0 github.com/go-chi/chi v4.1.2+incompatible github.com/google/go-github/v32 v32.1.0 github.com/joho/godotenv v1.3.0 - github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 - golang.org/x/tools v0.0.0-20200925191224-5d1fdd8fa346 // indirect ) diff --git a/go.sum b/go.sum index 8300b2f..3685b37 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ git.rootprojects.org/root/go-gitver/v2 v2.0.2 h1:T+Je13wrY1jz4OPJF98HnuCNp6n2Xe2uK6/NNF6a4+0= git.rootprojects.org/root/go-gitver/v2 v2.0.2/go.mod h1:ur82M/jZcvr1WWihyVtNEgDBqIjo22o56wcVHeVJFh8= +git.rootprojects.org/root/vfscopy v1.0.0 h1:djPpb/+4wf5DG2ZKyq6ih67JdLNGZxoIlDZddAil/LI= +git.rootprojects.org/root/vfscopy v1.0.0/go.mod h1:fYHopt0phBfgOfuOJbLnseemp9tsPL+/kwnxtLJxlnY= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -22,19 +24,22 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200925191224-5d1fdd8fa346 h1:hzJjkvxUIF3bSt+v8N5tBQNx/605vszZJ+3XsIamzZo= -golang.org/x/tools v0.0.0-20200925191224-5d1fdd8fa346/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6 h1:rbvTkL9AkFts1cgI78+gG6Yu1pwaqX6hjSJAatB78E4= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/main.go b/main.go index 9c8208f..14ec3b0 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,9 @@ import ( "strings" "time" - "git.rootprojects.org/root/gitdeploy/assets" + "git.rootprojects.org/root/vfscopy" + "git.rootprojects.org/root/gitdeploy/assets/public" + "git.rootprojects.org/root/gitdeploy/assets/examples" "git.rootprojects.org/root/gitdeploy/internal/options" "git.rootprojects.org/root/gitdeploy/internal/webhooks" @@ -122,7 +124,29 @@ func main() { return case "init": _ = initFlags.Parse(args[2:]) - fmt.Fprintf(os.Stderr, "%s init: not implemented\n", name) + vfs := vfscopy.NewVFS(examples.Assets) + _, err := os.Open("scripts") + if nil == err { + fmt.Fprintf(os.Stderr, "./scripts already exists\n") + os.Exit(1) + return + } + fmt.Println("Copying ...") + if err := vfscopy.CopyAll(vfs, ".", "./scripts", vfscopy.Options { + Skip: func (path string) (bool, error) { + f, _ := vfs.Open(path) + fi, _ := f.Stat() + if !fi.IsDir() { + fmt.Println(" scripts/" + path) + } + return false, nil + }, + }); nil != err { + fmt.Fprintf(os.Stderr, "error initializing ./scripts directory\n") + os.Exit(1) + return + } + fmt.Println("Done.") os.Exit(0) return case "run": @@ -210,7 +234,7 @@ func serve() { r.Use(middleware.Recoverer) var staticHandler http.HandlerFunc - pub := http.FileServer(assets.Assets) + pub := http.FileServer(public.Assets) if len(runOpts.ServePath) > 0 { // try the user-provided directory first, then fallback to the built-in diff --git a/vendor/modules.txt b/vendor/modules.txt index e8836a3..c805ca0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -2,6 +2,9 @@ ## explicit git.rootprojects.org/root/go-gitver/v2 git.rootprojects.org/root/go-gitver/v2/gitver +# git.rootprojects.org/root/vfscopy v1.0.0 +## explicit +git.rootprojects.org/root/vfscopy # github.com/go-chi/chi v4.1.2+incompatible ## explicit github.com/go-chi/chi @@ -16,7 +19,6 @@ github.com/google/go-querystring/query github.com/joho/godotenv github.com/joho/godotenv/autoload # github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 -## explicit github.com/shurcooL/httpfs/vfsutil # github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 ## explicit @@ -30,5 +32,3 @@ golang.org/x/crypto/openpgp/elgamal golang.org/x/crypto/openpgp/errors golang.org/x/crypto/openpgp/packet golang.org/x/crypto/openpgp/s2k -# golang.org/x/tools v0.0.0-20200925191224-5d1fdd8fa346 -## explicit