Lindenii Project Forge
Commit info | |
---|---|
ID | 5dc1cbdb7f7aa9aad7592595147a36bf7db09187 |
Author | Runxi Yu<me@runxiyu.org> |
Author date | Mon, 17 Feb 2025 11:54:14 +0800 |
Committer | Runxi Yu<me@runxiyu.org> |
Committer date | Mon, 17 Feb 2025 11:54:14 +0800 |
Actions | Get patch |
git_hooks_deploy.go: Deploy hooks to filesystem
package main import ( "errors" "io" "os" "path/filepath" ) func deploy_hooks_to_filesystem() (err error) { err = func() error { src_fd, err := resources_fs.Open("git_hooks_client/git_hooks_client") if err != nil { return err } defer src_fd.Close() dst_fd, err := os.OpenFile(filepath.Join(config.Hooks.Execs, "git_hooks_client"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o755) if err != nil { return err } defer dst_fd.Close() _, err = io.Copy(dst_fd, src_fd) if err != nil { return err } return nil }() if err != nil { return err } err = os.Chmod(filepath.Join(config.Hooks.Execs, "git_hooks_client"), 0755) if err != nil { return err } for _, hook_name := range []string{ "pre-receive", } { err = os.Symlink(filepath.Join(config.Hooks.Execs, "git_hooks_client"), filepath.Join(config.Hooks.Execs, hook_name)) if err != nil && !errors.Is(err, os.ErrExist) { return err } } return nil }
package main import ( "flag" "net" "net/http" "go.lindenii.runxiyu.org/lindenii-common/clog" ) func main() { config_path := flag.String( "config", "/etc/lindenii/forge.scfg", "path to configuration file", ) flag.Parse() err := load_config(*config_path) if err != nil { clog.Fatal(1, "Loading configuration: "+err.Error()) }
err = deploy_hooks_to_filesystem() if err != nil { clog.Fatal(1, "Deploying hooks to filesystem: "+err.Error()) }
err = load_templates() if err != nil { clog.Fatal(1, "Loading templates: "+err.Error()) } ssh_listener, err := net.Listen(config.SSH.Net, config.SSH.Addr) if err != nil { clog.Fatal(1, "Listening SSH: "+err.Error()) } err = serve_ssh(ssh_listener) if err != nil { clog.Fatal(1, "Serving SSH: "+err.Error()) } clog.Info("Listening SSH on " + config.SSH.Net + " " + config.SSH.Addr) listener, err := net.Listen(config.HTTP.Net, config.HTTP.Addr) if err != nil { clog.Fatal(1, "Listening HTTP: "+err.Error()) } clog.Info("Listening HTTP on " + config.HTTP.Net + " " + config.HTTP.Addr) err = http.Serve(listener, &http_router_t{}) if err != nil { clog.Fatal(1, "Serving HTTP: "+err.Error()) } }