mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-09-20 23:54:17 +00:00
Accept an output argument in -get-blob, -get-manifest, -get-archive.
This commit is contained in:
+30
-15
@@ -81,6 +81,19 @@ func webRootArg(arg string) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fileOutputArg() (writer io.WriteCloser) {
|
||||||
|
var err error
|
||||||
|
if flag.NArg() == 0 {
|
||||||
|
writer = os.Stdout
|
||||||
|
} else {
|
||||||
|
writer, err = os.Create(flag.Arg(0))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func Main() {
|
func Main() {
|
||||||
printConfigEnvVars := flag.Bool("print-config-env-vars", false,
|
printConfigEnvVars := flag.Bool("print-config-env-vars", false,
|
||||||
"print every recognized configuration environment variable and exit")
|
"print every recognized configuration environment variable and exit")
|
||||||
@@ -91,15 +104,15 @@ func Main() {
|
|||||||
noConfig := flag.Bool("no-config", false,
|
noConfig := flag.Bool("no-config", false,
|
||||||
"run without configuration file (configure via environment variables)")
|
"run without configuration file (configure via environment variables)")
|
||||||
runMigration := flag.String("run-migration", "",
|
runMigration := flag.String("run-migration", "",
|
||||||
"run a specific store migration (available: \"create-domain-markers\")")
|
"run a store `migration` (one of: create-domain-markers)")
|
||||||
getBlob := flag.String("get-blob", "",
|
getBlob := flag.String("get-blob", "",
|
||||||
"write contents of `blob-ref` ('sha256-xxxxxxx...xxx') to stdout")
|
"write contents of `blob` ('sha256-xxxxxxx...xxx')")
|
||||||
getManifest := flag.String("get-manifest", "",
|
getManifest := flag.String("get-manifest", "",
|
||||||
"write manifest for `site-name` (either 'domain.tld' or 'domain.tld/dir') to stdout as ProtoJSON")
|
"write manifest for `site` (either 'domain.tld' or 'domain.tld/dir') as ProtoJSON")
|
||||||
getArchive := flag.String("get-archive", "",
|
getArchive := flag.String("get-archive", "",
|
||||||
"write archive for `site-name` (either 'domain.tld' or 'domain.tld/dir') to stdout in tar format")
|
"write archive for `site` (either 'domain.tld' or 'domain.tld/dir') in tar format")
|
||||||
updateSite := flag.String("update-site", "",
|
updateSite := flag.String("update-site", "",
|
||||||
"update site for `site-name` (either 'domain.tld' or 'domain.tld/dir') from archive or repository URL")
|
"update `site` (either 'domain.tld' or 'domain.tld/dir') from archive or repository URL")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
var cliOperations int
|
var cliOperations int
|
||||||
@@ -183,8 +196,7 @@ func Main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
io.Copy(fileOutputArg(), reader)
|
||||||
io.Copy(os.Stdout, reader)
|
|
||||||
|
|
||||||
case *getManifest != "":
|
case *getManifest != "":
|
||||||
if err := ConfigureBackend(&config.Storage); err != nil {
|
if err := ConfigureBackend(&config.Storage); err != nil {
|
||||||
@@ -196,7 +208,7 @@ func Main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
fmt.Println(ManifestDebugJSON(manifest))
|
fmt.Fprintln(fileOutputArg(), ManifestDebugJSON(manifest))
|
||||||
|
|
||||||
case *getArchive != "":
|
case *getArchive != "":
|
||||||
if err := ConfigureBackend(&config.Storage); err != nil {
|
if err := ConfigureBackend(&config.Storage); err != nil {
|
||||||
@@ -209,21 +221,20 @@ func Main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
CollectTar(context.Background(), os.Stdout, manifest, manifestMtime)
|
CollectTar(context.Background(), fileOutputArg(), manifest, manifestMtime)
|
||||||
|
|
||||||
case *updateSite != "":
|
case *updateSite != "":
|
||||||
if err := ConfigureBackend(&config.Storage); err != nil {
|
if err := ConfigureBackend(&config.Storage); err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceURL, _ := url.Parse(flag.Arg(0))
|
if flag.NArg() != 1 {
|
||||||
if sourceURL == nil || *sourceURL == (url.URL{}) {
|
log.Fatalln("update source must be provided as the argument")
|
||||||
log.Fatalln("update source must be provided as an argument")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
webRoot := *updateSite
|
sourceURL, err := url.Parse(flag.Arg(0))
|
||||||
if !strings.Contains(webRoot, "/") {
|
if err != nil {
|
||||||
webRoot += "/.index"
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var result UpdateResult
|
var result UpdateResult
|
||||||
@@ -232,6 +243,7 @@ func Main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
var contentType string
|
var contentType string
|
||||||
switch {
|
switch {
|
||||||
@@ -247,12 +259,15 @@ func Main() {
|
|||||||
log.Fatalf("cannot determine content type from filename %q\n", sourceURL)
|
log.Fatalf("cannot determine content type from filename %q\n", sourceURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
webRoot := webRootArg(*updateSite)
|
||||||
result = UpdateFromArchive(context.Background(), webRoot, contentType, file)
|
result = UpdateFromArchive(context.Background(), webRoot, contentType, file)
|
||||||
} else {
|
} else {
|
||||||
branch := "pages"
|
branch := "pages"
|
||||||
if sourceURL.Fragment != "" {
|
if sourceURL.Fragment != "" {
|
||||||
branch, sourceURL.Fragment = sourceURL.Fragment, ""
|
branch, sourceURL.Fragment = sourceURL.Fragment, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
webRoot := webRootArg(*updateSite)
|
||||||
result = UpdateFromRepository(context.Background(), webRoot, sourceURL.String(), branch)
|
result = UpdateFromRepository(context.Background(), webRoot, sourceURL.String(), branch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user