mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
NEW FEATURE: Set JS variables from command line (#913)
* Add ability to specify variables that are passed to js * Use SplitN to respect a = in value part * Add JSON parsing for cli variables * Remove JSON parsing for cli variables * Add a function to set CLI defaults * Update static.go
This commit is contained in:
committed by
GitHub
parent
e51688c22d
commit
512aa7d4b3
@@ -938,3 +938,12 @@ function require_glob() {
|
||||
}
|
||||
return files
|
||||
}
|
||||
|
||||
// Set default values for CLI variables
|
||||
function CLI_DEFAULTS(defaults) {
|
||||
for (var key in defaults) {
|
||||
if (typeof this[key] === "undefined") {
|
||||
this[key] = defaults[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ import (
|
||||
var currentDirectory string
|
||||
|
||||
// ExecuteJavascript accepts a javascript string and runs it, returning the resulting dnsConfig.
|
||||
func ExecuteJavascript(file string, devMode bool) (*models.DNSConfig, error) {
|
||||
func ExecuteJavascript(file string, devMode bool, variables map[string]string) (*models.DNSConfig, error) {
|
||||
script, err := ioutil.ReadFile(file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -40,6 +40,11 @@ func ExecuteJavascript(file string, devMode bool) (*models.DNSConfig, error) {
|
||||
vm.Set("REV", reverse)
|
||||
vm.Set("glob", listFiles) // used for require_glob()
|
||||
|
||||
// add cli variables to otto
|
||||
for key, value := range variables {
|
||||
vm.Set(key, value)
|
||||
}
|
||||
|
||||
helperJs := GetHelpers(devMode)
|
||||
// run helper script to prime vm and initialize variables
|
||||
if _, err := vm.Run(helperJs); err != nil {
|
||||
|
||||
@@ -212,8 +212,8 @@ var _escData = map[string]*_escFile{
|
||||
"/helpers.js": {
|
||||
name: "helpers.js",
|
||||
local: "pkg/js/helpers.js",
|
||||
size: 27737,
|
||||
modtime: 0,
|
||||
size: 27948,
|
||||
modtime: 1603735487,
|
||||
compressed: `
|
||||
H4sIAAAAAAAC/+x9aXcbN7Lod/2Kis67adJuU4tjzz3UcN5wtGR0Rtsh6VzP1dPjhdggCbuJ7gHQoplY
|
||||
+e3vYG2gF0rWmSRfnj8kbKBQKBQKtQAFKCo4Bi4YmYnoaGdnbw/O57DJCsAJESCWhMOcpDhWZauCC2AF
|
||||
@@ -335,7 +335,8 @@ EHNvmM2WBf1sjPHhu3flA7Gj1mtNdviIsYYhw+tBibQc/cie+7MeT8kMd0gsYT3Q8BxgZIfo0j7XDOU5
|
||||
ZoqYRZrdd7rqp/d3PCDNkDJZc5JiHZQOeemHOx50CIUfs67kETGvWWdUsCwFRDdrtInVC86ynUlod3eJ
|
||||
beolR5SIzZvZEs8+m0jxKhO4bwkj3Nz5oyr+ZTJMLWiSzdRxIE5giVM1FpcpO85UQjdRocNG0pStKTDC
|
||||
P/f8XFaliaamF7fJY1IpDu9gALuf+O6ROdecYaleFCWEztIiwdD7xC173KPl8hMGinadzNChRZrGJWb/
|
||||
uX/vJFHjaTlKNLR2FFBLOraq23nc+X8BAAD//9enlT5ZbAAA
|
||||
uX/vJFHjaTlKNLR2FFBLOraqs6KMhdsRNmyX/R1fnEsiifR7uWdWL86n7jFsm7lru3fi+hmrC8zV+sqb
|
||||
sdKu337Gmzu1ebnrTk12q3rVA3Q41XdNzT3u/L8AAAD///wzemcsbQAA
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user