1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-12-22 17:10:10 +00:00

move all scripts to scripts/

This commit is contained in:
Harvey Tindall 2021-02-17 14:32:03 +00:00
parent a1a233e74f
commit 403ad58274
Signed by: hrfee
GPG Key ID: BBC65952848FB1A2
13 changed files with 94 additions and 104 deletions

View File

@ -17,16 +17,16 @@ before:
- cp node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2 data/web/css/ - cp node_modules/remixicon/fonts/remixicon.css node_modules/remixicon/fonts/remixicon.woff2 data/web/css/
- cp -r html data/ - cp -r html data/
- cp -r lang data/ - cp -r lang 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
- 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
- python3 mail/generate.py -o data/ - python3 scripts/compile_mjml.py -o data/
- python3 version.py {{.Version}} version.go - python3 scripts/version.py {{.Version}}
- npx esbuild --bundle ts/admin.ts --outfile=./data/web/js/admin.js --minify - 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/form.ts --outfile=./data/web/js/form.js --minify
- npx esbuild --bundle ts/setup.ts --outfile=./data/web/js/setup.js --minify - npx esbuild --bundle ts/setup.ts --outfile=./data/web/js/setup.js --minify
- go get -u github.com/swaggo/swag/cmd/swag - go get -u github.com/swaggo/swag/cmd/swag
- swag init -g main.go - swag init -g main.go
- python3 embed.py internal - python3 scripts/embed.py internal
builds: builds:
- dir: ./ - dir: ./
env: env:

View File

@ -18,13 +18,13 @@ npm:
configuration: configuration:
$(info Fixing config-base) $(info Fixing config-base)
-mkdir -p data -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) $(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: email:
$(info Generating email html) $(info Generating email html)
python3 mail/generate.py -o data/ python3 scripts/compile_mjml.py -o data/
typescript: typescript:
$(info compiling typescript) $(info compiling typescript)
@ -48,7 +48,7 @@ swagger:
swag init -g main.go swag init -g main.go
version: version:
python3 version.py auto version.go python3 scripts/version.py auto
compile: compile:
$(info Downloading deps) $(info Downloading deps)
@ -84,10 +84,10 @@ copy:
cp -r lang data/ cp -r lang data/
embed: embed:
python embed.py internal python scripts/embed.py internal
noembed: noembed:
python embed.py external python scripts/embed.py external
-mkdir -p build -mkdir -p build
$(info copying internal data into build/) $(info copying internal data into build/)
cp -r data build/ cp -r data build/

View File

@ -821,30 +821,6 @@
"value": "", "value": "",
"description": "Location of stored Ombi user template." "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": { "user_profiles": {
"name": "User Profiles", "name": "User Profiles",
"required": false, "required": false,

View File

@ -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
View 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
View 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
View 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")
}

View File

@ -18,6 +18,7 @@
"homepage": "https://github.com/hrfee/jfa-go#readme", "homepage": "https://github.com/hrfee/jfa-go#readme",
"dependencies": { "dependencies": {
"a17t": "^0.4.0", "a17t": "^0.4.0",
"esbuild": "^0.8.46",
"lodash": "^4.17.19", "lodash": "^4.17.19",
"mjml": "^4.8.0", "mjml": "^4.8.0",
"remixicon": "^2.5.0", "remixicon": "^2.5.0",

View File

@ -16,7 +16,7 @@ def runcmd(cmd):
return proc.communicate() 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]: for mjml in [f for f in local_path.iterdir() if f.is_file() and "mjml" in f.suffix]:
print(f"Compiling {mjml.name}") print(f"Compiling {mjml.name}")

22
scripts/embed.py Executable file
View 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.")