tools/rulechecker: bye bye

pull/854/head
Fabian Reinartz 10 years ago
parent 525070419b
commit 6e61fd3e96

@ -26,7 +26,7 @@ advice: $(GOCC)
binary: build
build: tools $(GOPATH)
build: dependencies $(GOPATH)
$(GO) build -o prometheus $(BUILDFLAGS) github.com/prometheus/prometheus/cmd/prometheus
$(GO) build -o promtool $(BUILDFLAGS) github.com/prometheus/prometheus/cmd/promtool
@ -36,7 +36,7 @@ docker: build
tarball: $(ARCHIVE)
$(ARCHIVE): build
tar -czf $(ARCHIVE) prometheus promtool tools/rule_checker/rule_checker consoles console_libraries
tar -czf $(ARCHIVE) prometheus promtool consoles console_libraries
release: REMOTE ?= $(error "can't upload, REMOTE not set")
release: REMOTE_DIR ?= $(error "can't upload, REMOTE_DIR not set")
@ -50,12 +50,11 @@ tag:
$(BUILD_PATH)/cache/$(GOPKG):
$(CURL) -o $@ -L $(GOURL)/$(GOPKG)
benchmark: dependencies tools
benchmark: dependencies
$(GO) test $(GO_TEST_FLAGS) -test.run='NONE' -test.bench='.*' -test.benchmem ./... | tee benchmark.txt
clean:
$(MAKE) -C $(BUILD_PATH) clean
$(MAKE) -C tools clean
rm -rf $(TEST_ARTIFACTS)
-rm $(ARCHIVE)
-find . -type f -name '*~' -exec rm '{}' ';'
@ -85,13 +84,10 @@ race_condition_run: race_condition_binary
search_index:
godoc -index -write_index -index_files='search_index'
test: dependencies tools
test: dependencies
$(GO) test $(GO_TEST_FLAGS) ./...
tools: dependencies
$(MAKE) -C tools
web: dependencies
$(MAKE) -C web
.PHONY: advice binary build clean dependencies documentation format race_condition_binary race_condition_run release run search_index tag tarball test tools
.PHONY: advice binary build clean dependencies documentation format race_condition_binary race_condition_run release run search_index tag tarball test

@ -1,26 +0,0 @@
# Copyright 2013 The Prometheus Authors
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
all: rule_checker
SUFFIXES:
include ../Makefile.INCLUDE
rule_checker:
$(MAKE) -C rule_checker
clean:
$(MAKE) -C rule_checker clean
.PHONY: clean rule_checker

@ -1 +0,0 @@
rule_checker

@ -1,28 +0,0 @@
# Copyright 2013 The Prometheus Authors
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
MAKE_ARTIFACTS = rule_checker
all: rule_checker
SUFFIXES:
include ../../Makefile.INCLUDE
rule_checker: $(shell find . -iname '*.go')
$(GO) build -o rule_checker .
clean:
rm -rf $(MAKE_ARTIFACTS)
.PHONY: clean

@ -1,106 +0,0 @@
// Copyright 2013 The Prometheus Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Rule-Checker allows checking the validity of a Prometheus rule file. It
// prints an error if the specified rule file is invalid, while it prints a
// string representation of the parsed rules otherwise.
package main
import (
"flag"
"fmt"
"io"
"io/ioutil"
"os"
"github.com/prometheus/prometheus/promql"
)
var (
flagset = flag.NewFlagSet(os.Args[0], flag.ExitOnError)
ruleFile = flagset.String("rule-file", "", "The path to the rule file to check. (Deprecated)")
)
// checkRules reads rules from in. Sucessfully read rules
// are printed to out.
func checkRules(filename string, in io.Reader, out io.Writer) error {
content, err := ioutil.ReadAll(in)
if err != nil {
return err
}
rules, err := promql.ParseStmts(string(content))
if err != nil {
return err
}
fmt.Fprintf(os.Stderr, "%s: successfully loaded %d rules:\n", filename, len(rules))
for _, rule := range rules {
fmt.Fprint(out, rule.String())
fmt.Fprint(out, "\n")
}
return nil
}
func usage() {
fmt.Fprintf(os.Stderr, "usage: rule_checker [path ...]\n")
flagset.PrintDefaults()
os.Exit(2)
}
func main() {
flagset.Usage = usage
flagset.Parse(os.Args[1:])
if flagset.NArg() == 0 && *ruleFile == "" {
if err := checkRules("<stdin>", os.Stdin, os.Stdout); err != nil {
fmt.Fprintf(os.Stderr, "error checking standard input: %s\n", err)
os.Exit(1)
}
os.Exit(0)
}
paths := flagset.Args()
if *ruleFile != "" {
paths = []string{*ruleFile}
fmt.Fprint(os.Stderr, "warning: usage of -rule-file is deprecated.\n")
}
failed := false
for _, path := range paths {
switch dir, err := os.Stat(path); {
case err != nil:
fmt.Fprintf(os.Stderr, "%s: error checking path: %s\n", path, err)
os.Exit(2)
case dir.IsDir():
fmt.Fprintf(os.Stderr, "%s: error checking path: directories not allowed\n", path)
os.Exit(2)
default:
f, err := os.Open(path)
if err != nil {
fmt.Fprintf(os.Stderr, "%s: error opening file: %s\n", path, err)
failed = true
} else if err := checkRules(path, f, os.Stdout); err != nil {
fmt.Fprintf(os.Stderr, "%s: error checking rules: %s\n", path, err)
failed = true
}
f.Close()
}
}
if failed {
os.Exit(1)
}
}
Loading…
Cancel
Save