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:
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 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:
|
||||||
|
12
Makefile
12
Makefile
@ -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/
|
||||||
|
@ -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,
|
||||||
|
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",
|
"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",
|
||||||
|
@ -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
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