github.com/getgauge/gauge@v1.6.9/cmd/daemon.go (about) 1 /*---------------------------------------------------------------- 2 * Copyright (c) ThoughtWorks, Inc. 3 * Licensed under the Apache License, Version 2.0 4 * See LICENSE in the project root for license information. 5 *----------------------------------------------------------------*/ 6 7 package cmd 8 9 import ( 10 "os" 11 12 "github.com/getgauge/gauge/api" 13 "github.com/getgauge/gauge/api/infoGatherer" 14 "github.com/getgauge/gauge/api/lang" 15 "github.com/getgauge/gauge/config" 16 "github.com/getgauge/gauge/logger" 17 "github.com/getgauge/gauge/util" 18 "github.com/spf13/cobra" 19 ) 20 21 const ( 22 isDaemon = "IS_DAEMON" 23 ) 24 25 var ( 26 daemonCmd = &cobra.Command{ 27 Use: "daemon [flags] <port> [args]", 28 Short: "Run as a daemon", 29 Long: `Run as a daemon.`, 30 Example: " gauge daemon 1234", 31 Run: func(cmd *cobra.Command, args []string) { 32 err := os.Setenv(isDaemon, "true") 33 if err != nil { 34 exit(err, "Unable to set Daemon=true") 35 } 36 if err := config.SetProjectRoot(args); err != nil { 37 exit(err, cmd.UsageString()) 38 } 39 loadEnvAndReinitLogger(cmd) 40 if lsp { 41 lang.Start(&infoGatherer.SpecInfoGatherer{SpecDirs: getSpecsDir(args)}, logLevel) 42 return 43 } 44 port := "" 45 specs := util.GetSpecDirs() 46 if len(args) > 0 { 47 port = args[0] 48 specs = getSpecsDir(args[1:]) 49 } 50 api.RunInBackground(port, specs) 51 }, 52 PersistentPostRun: func(cmd *cobra.Command, args []string) { /* noop */ }, 53 DisableAutoGenTag: true, 54 } 55 lsp bool 56 ) 57 58 func init() { 59 GaugeCmd.AddCommand(daemonCmd) 60 daemonCmd.Flags().BoolVarP(&lsp, "lsp", "", false, "Start language server") 61 err := daemonCmd.Flags().MarkHidden("lsp") 62 if err != nil { 63 logger.Fatalf(true, "Unable to hide `--lsp` flag: %s", err.Error()) 64 } 65 }