// Copyright 2014 The Gogs Authors. All rights reserved. | |||||
// Use of this source code is governed by a MIT-style | |||||
// license that can be found in the LICENSE file. | |||||
package cmd | |||||
import ( | |||||
"log" | |||||
"os" | |||||
"path" | |||||
"github.com/Unknwon/cae/zip" | |||||
"github.com/codegangsta/cli" | |||||
"github.com/gogits/gogs/modules/base" | |||||
) | |||||
var CmdDump = cli.Command{ | |||||
Name: "dump", | |||||
Usage: "Dump Gogs files except database", | |||||
Description: ` | |||||
Dump compresses all related files into zip file except database, | |||||
it can be used for backup and capture Gogs server image to send | |||||
to maintainer`, | |||||
Action: runDump, | |||||
Flags: []cli.Flag{}, | |||||
} | |||||
func runDump(*cli.Context) { | |||||
base.NewConfigContext() | |||||
log.Printf("Dumping local repositories...%s", base.RepoRootPath) | |||||
zip.Verbose = false | |||||
defer os.Remove("gogs-repo.zip") | |||||
if err := zip.PackTo(base.RepoRootPath, "gogs-repo.zip", true); err != nil { | |||||
log.Fatalf("Fail to dump local repositories: %v", err) | |||||
} | |||||
z, err := zip.Create("gogs-dump.zip") | |||||
if err != nil { | |||||
os.Remove("gogs-dump.zip") | |||||
log.Fatalf("Fail to create gogs-dump.zip: %v", err) | |||||
} | |||||
execDir, _ := base.ExecDir() | |||||
z.AddFile("gogs-repo.zip", path.Join(execDir, "gogs-repo.zip")) | |||||
z.AddFile("custom/conf/app.ini", path.Join(execDir, "custom/conf/app.ini")) | |||||
z.AddDir("log", path.Join(execDir, "log")) | |||||
z.Close() | |||||
log.Println("Finish dumping!") | |||||
} |
// Use of this source code is governed by a MIT-style | // Use of this source code is governed by a MIT-style | ||||
// license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||
package main | |||||
package cmd | |||||
import ( | import ( | ||||
"fmt" | "fmt" |
// Use of this source code is governed by a MIT-style | // Use of this source code is governed by a MIT-style | ||||
// license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||
package main | |||||
package cmd | |||||
import ( | import ( | ||||
//"container/list" | //"container/list" | ||||
var CmdServ = cli.Command{ | var CmdServ = cli.Command{ | ||||
Name: "serv", | Name: "serv", | ||||
Usage: "This command just should be called by ssh shell", | |||||
Usage: "This command should only be called by SSH shell", | |||||
Description: ` | Description: ` | ||||
gogs serv provide access auth for repositories`, | |||||
Serv provide access auth for repositories`, | |||||
Action: runServ, | Action: runServ, | ||||
Flags: []cli.Flag{}, | Flags: []cli.Flag{}, | ||||
} | } |
// Use of this source code is governed by a MIT-style | // Use of this source code is governed by a MIT-style | ||||
// license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||
package main | |||||
package cmd | |||||
import ( | import ( | ||||
"os" | "os" | ||||
var CmdUpdate = cli.Command{ | var CmdUpdate = cli.Command{ | ||||
Name: "update", | Name: "update", | ||||
Usage: "This command just should be called by ssh shell", | |||||
Usage: "This command should only be called by SSH shell", | |||||
Description: ` | Description: ` | ||||
gogs update get pushed info and insert into database`, | |||||
Update get pushed info and insert into database`, | |||||
Action: runUpdate, | Action: runUpdate, | ||||
Flags: []cli.Flag{}, | Flags: []cli.Flag{}, | ||||
} | } |
// Use of this source code is governed by a MIT-style | // Use of this source code is governed by a MIT-style | ||||
// license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||
package main | |||||
package cmd | |||||
import ( | import ( | ||||
"fmt" | "fmt" | ||||
var CmdWeb = cli.Command{ | var CmdWeb = cli.Command{ | ||||
Name: "web", | Name: "web", | ||||
Usage: "Gogs web server", | |||||
Usage: "Start Gogs web server", | |||||
Description: ` | Description: ` | ||||
gogs web server is the only thing you need to run, | |||||
Gogs web server is the only thing you need to run, | |||||
and it takes care of all the other things for you`, | and it takes care of all the other things for you`, | ||||
Action: runWeb, | Action: runWeb, | ||||
Flags: []cli.Flag{}, | Flags: []cli.Flag{}, |
"github.com/codegangsta/cli" | "github.com/codegangsta/cli" | ||||
"github.com/gogits/gogs/cmd" | |||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
) | ) | ||||
app.Usage = "Go Git Service" | app.Usage = "Go Git Service" | ||||
app.Version = APP_VER | app.Version = APP_VER | ||||
app.Commands = []cli.Command{ | app.Commands = []cli.Command{ | ||||
CmdWeb, | |||||
CmdServ, | |||||
CmdUpdate, | |||||
// CmdFix, | |||||
cmd.CmdWeb, | |||||
// cmd.CmdFix, | |||||
cmd.CmdDump, | |||||
cmd.CmdServ, | |||||
cmd.CmdUpdate, | |||||
} | } | ||||
app.Flags = append(app.Flags, []cli.Flag{}...) | app.Flags = append(app.Flags, []cli.Flag{}...) | ||||
app.Run(os.Args) | app.Run(os.Args) |
} | } | ||||
func NewConfigContext() { | func NewConfigContext() { | ||||
//var err error | |||||
workDir, err := ExecDir() | workDir, err := ExecDir() | ||||
if err != nil { | if err != nil { | ||||
qlog.Fatalf("Fail to get work directory: %s\n", err) | qlog.Fatalf("Fail to get work directory: %s\n", err) |