mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 09:00:10 +00:00
move all scripts to scripts/
This commit is contained in:
parent
a1a233e74f
commit
403ad58274
@ -17,16 +17,16 @@ before:
|
||||
- cp node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2 data/web/css/
|
||||
- cp -r html data/
|
||||
- cp -r lang data/
|
||||
- python3 config/fixconfig.py -i config/config-base.json -o data/config-base.json
|
||||
- python3 config/generate_ini.py -i config/config-base.json -o data/config-default.ini
|
||||
- python3 mail/generate.py -o data/
|
||||
- python3 version.py {{.Version}} version.go
|
||||
- python3 scripts/enumerate_config.py -i config/config-base.json -o data/config-base.json
|
||||
- python3 scripts/generate_ini.py -i config/config-base.json -o data/config-default.ini
|
||||
- python3 scripts/compile_mjml.py -o data/
|
||||
- python3 scripts/version.py {{.Version}}
|
||||
- npx esbuild --bundle ts/admin.ts --outfile=./data/web/js/admin.js --minify
|
||||
- npx esbuild --bundle ts/form.ts --outfile=./data/web/js/form.js --minify
|
||||
- npx esbuild --bundle ts/setup.ts --outfile=./data/web/js/setup.js --minify
|
||||
- go get -u github.com/swaggo/swag/cmd/swag
|
||||
- swag init -g main.go
|
||||
- python3 embed.py internal
|
||||
- python3 scripts/embed.py internal
|
||||
builds:
|
||||
- dir: ./
|
||||
env:
|
||||
|
12
Makefile
12
Makefile
@ -18,13 +18,13 @@ npm:
|
||||
configuration:
|
||||
$(info Fixing config-base)
|
||||
-mkdir -p data
|
||||
python3 config/fixconfig.py -i config/config-base.json -o data/config-base.json
|
||||
python3 scripts/enumerate_config.py -i config/config-base.json -o data/config-base.json
|
||||
$(info Generating config-default.ini)
|
||||
python3 config/generate_ini.py -i config/config-base.json -o data/config-default.ini
|
||||
python3 scripts/generate_ini.py -i config/config-base.json -o data/config-default.ini
|
||||
|
||||
email:
|
||||
$(info Generating email html)
|
||||
python3 mail/generate.py -o data/
|
||||
python3 scripts/compile_mjml.py -o data/
|
||||
|
||||
typescript:
|
||||
$(info compiling typescript)
|
||||
@ -48,7 +48,7 @@ swagger:
|
||||
swag init -g main.go
|
||||
|
||||
version:
|
||||
python3 version.py auto version.go
|
||||
python3 scripts/version.py auto
|
||||
|
||||
compile:
|
||||
$(info Downloading deps)
|
||||
@ -84,10 +84,10 @@ copy:
|
||||
cp -r lang data/
|
||||
|
||||
embed:
|
||||
python embed.py internal
|
||||
python scripts/embed.py internal
|
||||
|
||||
noembed:
|
||||
python embed.py external
|
||||
python scripts/embed.py external
|
||||
-mkdir -p build
|
||||
$(info copying internal data into build/)
|
||||
cp -r data build/
|
||||
|
@ -821,30 +821,6 @@
|
||||
"value": "",
|
||||
"description": "Location of stored Ombi user template."
|
||||
},
|
||||
"user_template": {
|
||||
"name": "User Template (Deprecated)",
|
||||
"required": false,
|
||||
"requires_restart": true,
|
||||
"type": "text",
|
||||
"value": "",
|
||||
"description": "Deprecated in favor of User Profiles. Location of stored user policy template (json)."
|
||||
},
|
||||
"user_configuration": {
|
||||
"name": "userConfiguration (Deprecated)",
|
||||
"required": false,
|
||||
"requires_restart": true,
|
||||
"type": "text",
|
||||
"value": "",
|
||||
"description": "Deprecated in favor of User Profiles. Location of stored user configuration template (used for setting homescreen layout) (json)"
|
||||
},
|
||||
"user_displayprefs": {
|
||||
"name": "displayPreferences (Deprecated)",
|
||||
"required": false,
|
||||
"requires_restart": true,
|
||||
"type": "text",
|
||||
"value": "",
|
||||
"description": "Deprecated in favor of User Profiles. Location of stored displayPreferences template (also used for homescreen layout) (json)"
|
||||
},
|
||||
"user_profiles": {
|
||||
"name": "User Profiles",
|
||||
"required": false,
|
||||
|
68
embed.py
68
embed.py
@ -1,68 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("embed", metavar="<true/false>|<internal/external>|<yes/no>", type=str)
|
||||
trues = ["true", "internal", "yes", "y"]
|
||||
falses = ["false", "external", "no", "n"]
|
||||
|
||||
EMBED = parser.parse_args().embed
|
||||
|
||||
with open("embed.go", "w") as f:
|
||||
if EMBED in trues:
|
||||
f.write("""package main
|
||||
import (
|
||||
"embed"
|
||||
"io/fs"
|
||||
"log"
|
||||
)
|
||||
|
||||
//go:embed data data/html data/web data/web/css data/web/js
|
||||
var loFS embed.FS
|
||||
|
||||
//go:embed lang/common lang/admin lang/email lang/form lang/setup
|
||||
var laFS embed.FS
|
||||
|
||||
var langFS rewriteFS
|
||||
var localFS rewriteFS
|
||||
|
||||
type rewriteFS struct {
|
||||
fs embed.FS
|
||||
prefix string
|
||||
}
|
||||
|
||||
func (l rewriteFS) Open(name string) (fs.File, error) { return l.fs.Open(l.prefix + name) }
|
||||
func (l rewriteFS) ReadDir(name string) ([]fs.DirEntry, error) { return l.fs.ReadDir(l.prefix + name) }
|
||||
func (l rewriteFS) ReadFile(name string) ([]byte, error) { return l.fs.ReadFile(l.prefix + name) }
|
||||
func FSJoin(elem ...string) string {
|
||||
out := ""
|
||||
for _, v := range elem { out += v + "/" }
|
||||
return out[:len(out)-1]
|
||||
}
|
||||
|
||||
func loadFilesystems() {
|
||||
langFS = rewriteFS{laFS, "lang/"}
|
||||
localFS = rewriteFS{loFS, "data/"}
|
||||
log.Println("Using internal storage")
|
||||
}""")
|
||||
elif EMBED in falses:
|
||||
f.write("""package main
|
||||
import (
|
||||
"io/fs"
|
||||
"os"
|
||||
"log"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
var localFS fs.FS
|
||||
var langFS fs.FS
|
||||
|
||||
func FSJoin(elem ...string) string { return filepath.Join(elem...) }
|
||||
|
||||
func loadFilesystems() {
|
||||
log.Println("Using external storage")
|
||||
executable, _ := os.Executable()
|
||||
localFS = os.DirFS(filepath.Join(filepath.Dir(executable), "data"))
|
||||
langFS = os.DirFS(filepath.Join(filepath.Dir(executable), "data", "lang"))
|
||||
}""")
|
1
embed/README.md
Normal file
1
embed/README.md
Normal file
@ -0,0 +1 @@
|
||||
`scripts/embed.py [internal/external]` will copy the respective file into the main directory. If internal, `//go:embed` is used to embed the `data/` directory in the binary. If external, `os.DirFS` is used to access the `data/` directory, which should be placed next to the executable.
|
20
embed/external.go
Normal file
20
embed/external.go
Normal file
@ -0,0 +1,20 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
var localFS fs.FS
|
||||
var langFS fs.FS
|
||||
|
||||
func FSJoin(elem ...string) string { return filepath.Join(elem...) }
|
||||
|
||||
func loadFilesystems() {
|
||||
log.Println("Using external storage")
|
||||
executable, _ := os.Executable()
|
||||
localFS = os.DirFS(filepath.Join(filepath.Dir(executable), "data"))
|
||||
langFS = os.DirFS(filepath.Join(filepath.Dir(executable), "data", "lang"))
|
||||
}
|
38
embed/internal.go
Normal file
38
embed/internal.go
Normal file
@ -0,0 +1,38 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"io/fs"
|
||||
"log"
|
||||
)
|
||||
|
||||
//go:embed data data/html data/web data/web/css data/web/js
|
||||
var loFS embed.FS
|
||||
|
||||
//go:embed lang/common lang/admin lang/email lang/form lang/setup
|
||||
var laFS embed.FS
|
||||
|
||||
var langFS rewriteFS
|
||||
var localFS rewriteFS
|
||||
|
||||
type rewriteFS struct {
|
||||
fs embed.FS
|
||||
prefix string
|
||||
}
|
||||
|
||||
func (l rewriteFS) Open(name string) (fs.File, error) { return l.fs.Open(l.prefix + name) }
|
||||
func (l rewriteFS) ReadDir(name string) ([]fs.DirEntry, error) { return l.fs.ReadDir(l.prefix + name) }
|
||||
func (l rewriteFS) ReadFile(name string) ([]byte, error) { return l.fs.ReadFile(l.prefix + name) }
|
||||
func FSJoin(elem ...string) string {
|
||||
out := ""
|
||||
for _, v := range elem {
|
||||
out += v + "/"
|
||||
}
|
||||
return out[:len(out)-1]
|
||||
}
|
||||
|
||||
func loadFilesystems() {
|
||||
langFS = rewriteFS{laFS, "lang/"}
|
||||
localFS = rewriteFS{loFS, "data/"}
|
||||
log.Println("Using internal storage")
|
||||
}
|
@ -18,6 +18,7 @@
|
||||
"homepage": "https://github.com/hrfee/jfa-go#readme",
|
||||
"dependencies": {
|
||||
"a17t": "^0.4.0",
|
||||
"esbuild": "^0.8.46",
|
||||
"lodash": "^4.17.19",
|
||||
"mjml": "^4.8.0",
|
||||
"remixicon": "^2.5.0",
|
||||
|
@ -16,7 +16,7 @@ def runcmd(cmd):
|
||||
return proc.communicate()
|
||||
|
||||
|
||||
local_path = Path(__file__).resolve().parent
|
||||
local_path = Path("mail")
|
||||
|
||||
for mjml in [f for f in local_path.iterdir() if f.is_file() and "mjml" in f.suffix]:
|
||||
print(f"Compiling {mjml.name}")
|
22
scripts/embed.py
Executable file
22
scripts/embed.py
Executable file
@ -0,0 +1,22 @@
|
||||
#!/usr/bin/python
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
external = ["false", "external", "no", "n"]
|
||||
|
||||
with open("embed.go", "w") as f:
|
||||
choice = ""
|
||||
try:
|
||||
choice = sys.argv[1]
|
||||
except IndexError:
|
||||
pass
|
||||
folder = Path("embed")
|
||||
if choice in external:
|
||||
embed = False
|
||||
shutil.copy(folder / "external.go", "embed.go")
|
||||
print("Embedding disabled. \"data\" must be placed alongside the executable.")
|
||||
else:
|
||||
shutil.copy(folder / "internal.go", "embed.go")
|
||||
print("Embedding enabled.")
|
||||
|
Loading…
Reference in New Issue
Block a user