1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

Vet and Lint the entire system (#296)

* govet and golint corrections
This commit is contained in:
Tom Limoncelli
2018-01-09 12:53:16 -05:00
committed by GitHub
parent 1a91a7f536
commit b7c251190f
64 changed files with 540 additions and 433 deletions

View File

@@ -209,7 +209,7 @@ var TLSA = recordBuilder('TLSA', {
['usage', _.isNumber],
['selector', _.isNumber],
['matchingtype', _.isNumber],
['target', _.isString], //recordBuilder needs a "target" argument
['target', _.isString], // recordBuilder needs a "target" argument
],
transform: function(record, args, modifiers) {
record.name = args.name;
@@ -474,7 +474,7 @@ function addRecord(d, type, name, target, mods) {
if (_.isFunction(m)) {
m(rec);
} else if (_.isObject(m)) {
//convert transforms to strings
// convert transforms to strings
if (m.transform && _.isArray(m.transform)) {
m.transform = format_tt(m.transform);
}
@@ -493,7 +493,7 @@ function addRecord(d, type, name, target, mods) {
return rec;
}
//ip conversion functions from http://stackoverflow.com/a/8105740/121660
// ip conversion functions from http://stackoverflow.com/a/8105740/121660
// via http://javascript.about.com/library/blipconvert.htm
function IP(dot) {
var d = dot.split('.');

View File

@@ -9,12 +9,12 @@ import (
"github.com/StackExchange/dnscontrol/pkg/transform"
"github.com/robertkrimen/otto"
//load underscore js into vm by default
// load underscore js into vm by default
_ "github.com/robertkrimen/otto/underscore"
_ "github.com/robertkrimen/otto/underscore" // required by otto
)
//ExecuteJavascript accepts a javascript string and runs it, returning the resulting dnsConfig.
// ExecuteJavascript accepts a javascript string and runs it, returning the resulting dnsConfig.
func ExecuteJavascript(script string, devMode bool) (*models.DNSConfig, error) {
vm := otto.New()
@@ -48,6 +48,7 @@ func ExecuteJavascript(script string, devMode bool) (*models.DNSConfig, error) {
return conf, nil
}
// GetHelpers returns the filename of helpers.js, or the esc'ed version.
func GetHelpers(devMode bool) string {
return _escFSMustString(devMode, "/helpers.js")
}

View File

@@ -27,7 +27,7 @@ func TestParsedFiles(t *testing.T) {
t.Fatal(err)
}
for _, f := range files {
//run all js files that start with a number. Skip others.
// run all js files that start with a number. Skip others.
if filepath.Ext(f.Name()) != ".js" || !unicode.IsNumber(rune(f.Name()[0])) {
continue
}

View File

@@ -192,89 +192,89 @@ var _escData = map[string]*_escFile{
"/helpers.js": {
local: "pkg/js/helpers.js",
size: 17431,
size: 17434,
modtime: 0,
compressed: `
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
`,
},