diff --git a/magefile.go b/magefile.go index 3fa675e6..94dcbc30 100644 --- a/magefile.go +++ b/magefile.go @@ -1,72 +1,26 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you 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. - // +build mage package main import ( - "context" "fmt" "time" "github.com/magefile/mage/mg" - "github.com/magefile/mage/sh" devtools "github.com/elastic/beats/dev-tools/mage" + "github.com/elastic/beats/dev-tools/mage/target/build" + "github.com/elastic/beats/dev-tools/mage/target/common" + "github.com/elastic/beats/dev-tools/mage/target/pkg" + "github.com/elastic/beats/dev-tools/mage/target/unittest" + "github.com/elastic/beats/dev-tools/mage/target/update" ) func init() { devtools.SetBuildVariableSources(devtools.DefaultBeatBuildVariableSources) - devtools.BeatVendor = "Icinga" - devtools.BeatURL = "https://icinga.com/docs/icingabeat" - devtools.BeatDescription = "Icingabeat ships Icinga 2 events and states to Elasticsearch or Logstash." -} - -// Build builds the Beat binary. -func Build() error { - return devtools.Build(devtools.DefaultBuildArgs()) -} - -// GolangCrossBuild build the Beat binary inside of the golang-builder. -// Do not use directly, use crossBuild instead. -func GolangCrossBuild() error { - return devtools.GolangCrossBuild(devtools.DefaultGolangCrossBuildArgs()) -} - -// BuildGoDaemon builds the go-daemon binary (use crossBuildGoDaemon). -func BuildGoDaemon() error { - return devtools.BuildGoDaemon() -} - -// CrossBuild cross-builds the beat for all target platforms. -func CrossBuild() error { - return devtools.CrossBuild() -} - -// CrossBuildGoDaemon cross-builds the go-daemon binary using Docker. -func CrossBuildGoDaemon() error { - return devtools.CrossBuildGoDaemon() -} - -// Clean cleans all generated files and build artifacts. -func Clean() error { - return devtools.Clean() + devtools.BeatDescription = "One sentence description of the Beat." + devtools.BeatVendor = "{full_name}" } // Package packages the Beat for distribution. @@ -78,41 +32,59 @@ func Package() { devtools.UseCommunityBeatPackaging() - mg.Deps(Update) - mg.Deps(CrossBuild, CrossBuildGoDaemon) - mg.SerialDeps(devtools.Package, TestPackages) -} - -// TestPackages tests the generated packages (i.e. file modes, owners, groups). -func TestPackages() error { - return devtools.TestPackages() -} - -// Update updates the generated files (aka make update). -func Update() error { - return sh.Run("make", "update") -} - -// Fields generates a fields.yml for the Beat. -func Fields() error { - return devtools.GenerateFieldsYAML() -} - -// GoTestUnit executes the Go unit tests. -// Use TEST_COVERAGE=true to enable code coverage profiling. -// Use RACE_DETECTOR=true to enable the race detector. -func GoTestUnit(ctx context.Context) error { - return devtools.GoTest(ctx, devtools.DefaultGoTestUnitArgs()) -} - -// GoTestIntegration executes the Go integration tests. -// Use TEST_COVERAGE=true to enable code coverage profiling. -// Use RACE_DETECTOR=true to enable the race detector. -func GoTestIntegration(ctx context.Context) error { - return devtools.GoTest(ctx, devtools.DefaultGoTestIntegrationArgs()) + mg.Deps(update.Update) + mg.Deps(build.CrossBuild, build.CrossBuildGoDaemon) + mg.SerialDeps(devtools.Package, pkg.PackageTest) } // Config generates both the short/reference/docker configs. func Config() error { return devtools.Config(devtools.AllConfigTypes, devtools.ConfigFileParams{}, ".") } + +//Fields generates a fields.yml for the Beat. +func Fields() error { + return devtools.GenerateFieldsYAML() +} + +// Clean cleans all generated files and build artifacts. +func Clean() error { + return devtools.Clean() +} + +// Check formats code, updates generated content, check for common errors, and +// checks for any modified files. +func Check() { + common.Check() +} + +// Fmt formats source code (.go and .py) and adds license headers. +func Fmt() { + common.Fmt() +} + +// Test runs all available tests +func Test() { + mg.Deps(unittest.GoUnitTest) +} + +// Build builds the Beat binary. +func Build() error { + return build.Build() +} + +// CrossBuild cross-builds the beat for all target platforms. +func CrossBuild() error { + return build.CrossBuild() +} + +// BuildGoDaemon builds the go-daemon binary (use crossBuildGoDaemon). +func BuildGoDaemon() error { + return build.BuildGoDaemon() +} + +// GolangCrossBuild build the Beat binary inside of the golang-builder. +// Do not use directly, use crossBuild instead. +func GolangCrossBuild() error { + return build.GolangCrossBuild() +} \ No newline at end of file