ファイルは正しい場所に置く #12

This commit is contained in:
諏訪子 2023-06-11 22:02:45 +09:00
parent c6b78fa0c8
commit 96c4ff2d42
4 changed files with 70 additions and 28 deletions

View File

@ -1,6 +1,18 @@
NAME=gitlin
VERSION=1.0.0
#VERSION=$(cat utils/version.go | grep "var Ver" | awk '{print $4}' | sed "s/\"//g")
# Linux、Solaris、Haiku
PREFIX=/usr
# FreeBSD、OpenBSD
#PREFIX=/usr/local
# NetBSD
#PREFIX=/usr/pkg
# Linux、OpenBSD、Solaris、Haiku
CNFPREFIX=/etc
# FreeBSD
#CNFPREFIX=/usr/local/etc
# NetBSD
#CNFPREFIX=/usr/pkg/etc
CC=CGO_ENABLED=0 go build
# リリース。なし=デバッグ。
RELEASE=-ldflags="-s -w" -buildvcs=false
@ -19,4 +31,16 @@ dist: clean
tar zcfv ${NAME}-${VERSION}.tar.gz ${NAME}-${VERSION}
rm -rf ${NAME}-${VERSION}
.PHONY: all options clean dist
install:
mkdir -p ${DESTDIR}${PREFIX}/bin
cp -f ${NAME} ${DESTDIR}${PREFIX}/bin
chmod 755 ${DESTDIR}${PREFIX}/bin/${NAME}
mkdir -p ${DESTDIR}${CNFPREFIX}/${NAME}
chmod 755 ${DESTDIR}${CNFPREFIX}/${NAME}
uninstall:
rm -f ${DESTDIOR}${PREFIX}/bin/${NAME}\
${DESTDIR}${MANPREFIX}/man1/${NAME}.1\
${DESTDIR}${CNFPREFIX}/${NAME}
.PHONY: all options clean dist install uninstall

View File

@ -4,9 +4,8 @@ import (
"fmt"
"os"
"gitler.moe/suwako/gitlin/utils"
"github.com/spf13/cobra"
_ "github.com/joho/godotenv/autoload"
)
var envCmd = &cobra.Command{
@ -19,6 +18,7 @@ var envCmd = &cobra.Command{
}
func init() {
utils.LoadCnf()
rootCmd.AddCommand(envCmd)
}
@ -41,4 +41,6 @@ func env() {
fmt.Println("ISP/Hosting provider: " + os.Getenv("GITLIN_INSTANCE_PROVIDER"))
// Cloudflare status
fmt.Println("Cloudflare status: " + os.Getenv("GITLIN_INSTANCE_CLOUDFLARE"))
// viewsのルートフォルダ
fmt.Println("viewsのルートフォルダ: " + os.Getenv("GITLIN_VIEWS_ROOT"))
}

View File

@ -3,6 +3,7 @@ package gitlin
import (
"fmt"
"os"
"os/user"
"github.com/spf13/cobra"
)
@ -21,18 +22,22 @@ func init() {
}
type Vars struct {
IPLogging bool
URLLogging bool
UserAgentLogging bool
DiagnosticLogging bool
PrivacyPolicy string
InstanceCountry string
InstanceProvider string
CloudflareStatus string
Proxying string
IPLogging, URLLogging, UserAgentLogging, DiagnosticLogging bool
PrivacyPolicy, InstanceCountry, InstanceProvider, CloudflareStatus, Proxying, ViewsRoot string
}
func setup() {
cur, err := user.Current()
if err != nil {
fmt.Println("現在のユーザーのUIDを見つけられませんでした。", err)
return
}
if cur.Uid != "0" {
fmt.Println("rootとして実行して下さい。 sudo gitlin setup 又は doas gitlin setup")
return
}
fmt.Println("Gitlin setup wizard")
fmt.Println("This wizard will help you setup your Gitlin instance.")
@ -40,7 +45,7 @@ func setup() {
vars := Vars{}
// ask user for information about IP logging
fmt.Print("Do you log IP addresses of users? (y/n) ")
fmt.Print("Do you log IP addresses of users? (y/N) ")
var ipLogging string
fmt.Scanln(&ipLogging)
if ipLogging == "y" {
@ -52,7 +57,7 @@ func setup() {
}
// ask user for information about URL request logging
fmt.Print("Do you log URL requests of users? (y/n) ")
fmt.Print("Do you log URL requests of users? (y/N) ")
var urlLogging string
fmt.Scanln(&urlLogging)
if urlLogging == "y" {
@ -62,7 +67,7 @@ func setup() {
}
// ask user for information about User-Agent logging
fmt.Print("Do you log your users User-Agent? (y/n) ")
fmt.Print("Do you log your users User-Agent? (y/N) ")
var uaLogging string
fmt.Scanln(&uaLogging)
if uaLogging == "y" {
@ -72,7 +77,7 @@ func setup() {
}
// ask user for information about diagnostic information logging
fmt.Print("Do you log diagnostic information? (y/n) ")
fmt.Print("Do you log diagnostic information? (y/N) ")
var diagLogging string
fmt.Scanln(&diagLogging)
if diagLogging == "y" {
@ -82,7 +87,7 @@ func setup() {
}
// ask user about privacy policy
fmt.Print("Do you have a privacy policy? (y/n) ")
fmt.Print("Do you have a privacy policy? (y/N) ")
var privacyPolicy string
fmt.Scanln(&privacyPolicy)
if privacyPolicy == "y" {
@ -116,7 +121,7 @@ func setup() {
}
// ask user about Cloudflare status
fmt.Print("Are you using Cloudflare? (y/n) ")
fmt.Print("Are you using Cloudflare? (y/N) ")
var cloudflare string
fmt.Scanln(&cloudflare)
if cloudflare == "y" {
@ -126,20 +131,27 @@ func setup() {
}
// ask user whether they want proxying enabled
fmt.Print("Do you want proxying enabled? (y/n) ")
fmt.Print("Do you want proxying enabled? (Y/n) ")
var proxying string
fmt.Scanln(&proxying)
if proxying == "y" {
if proxying == "y" || proxying == "" {
vars.Proxying = "true"
} else {
vars.Proxying = "false"
}
// save to .env file
fmt.Println("Saving environment variables to .env file...")
f, err := os.Create(".env")
fmt.Print("viewsのルートフォルダはどちらですか (デフォルト: /var/www/htdocs/gitlin/views )")
var viewdir string
fmt.Scanln(&viewdir)
if viewdir == "" {
vars.ViewsRoot = "/var/www/htdocs/gitlin/views"
}
// save to gitlin.conf file
fmt.Println("Saving environment variables to config file...")
f, err := os.Create("/etc/gitlin/gitlin.conf")
if err != nil {
fmt.Println("Error creating .env file: ", err)
fmt.Println("Error creating config file: ", err)
os.Exit(1)
}
defer f.Close()
@ -156,7 +168,8 @@ func setup() {
f.WriteString("GITLIN_INSTANCE_COUNTRY=" + vars.InstanceCountry + "\n")
f.WriteString("GITLIN_INSTANCE_PROVIDER=" + vars.InstanceProvider + "\n")
f.WriteString("GITLIN_INSTANCE_CLOUDFLARE=" + vars.CloudflareStatus + "\n")
f.WriteString("GITLIN_PROXYING_ENABLED=" + vars.Proxying)
f.WriteString("GITLIN_PROXYING_ENABLED=" + vars.Proxying + "\n")
f.WriteString("GITLIN_VIEWS_ROOT=" + vars.ViewsRoot + "\n")
println("All done! You can now start your Gitlin instance with 'gitlin serve'.")
println("You can review the environment variables with 'gitlin env'.")

View File

@ -18,12 +18,15 @@ import (
// "github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/middleware/recover"
"github.com/gofiber/template/html"
_ "github.com/joho/godotenv/autoload"
)
func Serve(port string) {
engine := html.New("./views", ".html")
utils.LoadCnf()
viewsroot, ok := os.LookupEnv("GITLIN_VIEWS_ROOT")
if !ok {
log.Fatal("viewsのルートフォルダがないようです")
}
engine := html.New(viewsroot, ".html")
engine.AddFunc(
// Add unescape function. This is needed to render HTML from Markdown.