Merge remote-tracking branch 'apache/master' into feature/graphql-client
diff --git a/cmd/main.go b/cmd/main.go
new file mode 100644
index 0000000..08e105d
--- /dev/null
+++ b/cmd/main.go
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.
+ *
+ */
+
+package main
+
+import (
+ "os"
+
+ "github.com/sirupsen/logrus"
+ "github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/logger"
+)
+
+var log *logrus.Logger
+
+func init() {
+ log = logger.Log
+}
+
+func main() {
+ app := cli.NewApp()
+ app.Flags = []cli.Flag{
+ cli.StringFlag{
+ Name: "config, c",
+ Usage: "path of settings.yml config. Use the file in the same folder as default.",
+ },
+ }
+ app.Commands = []cli.Command{serviceCmd}
+
+ err := app.Run(os.Args)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
diff --git a/cmd/service.go b/cmd/service.go
new file mode 100644
index 0000000..8513965
--- /dev/null
+++ b/cmd/service.go
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.
+ *
+ */
+
+package main
+
+import (
+ "github.com/apache/skywalking-cli/swctl/service"
+ "github.com/urfave/cli"
+)
+
+var serviceCmd = cli.Command{
+ Name: "service",
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "list",
+ Usage: "list all available services.",
+ },
+ },
+ Action: func(c *cli.Context) {
+ ctl := service.NewService(c)
+
+ err := ctl.Exec()
+ if err != nil {
+ log.Fatal(err)
+ }
+ },
+}
diff --git a/swctl/service/list.go b/swctl/service/list.go
new file mode 100644
index 0000000..431032f
--- /dev/null
+++ b/swctl/service/list.go
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.
+ *
+ */
+
+package service
+
+func (s *service) showList() error {
+ return nil
+}
diff --git a/swctl/service/service.go b/swctl/service/service.go
new file mode 100644
index 0000000..bb2986a
--- /dev/null
+++ b/swctl/service/service.go
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.
+ *
+ */
+
+package service
+
+import (
+ "github.com/urfave/cli"
+)
+
+type service struct {
+ flag *cli.Context
+ list bool
+}
+
+func NewService(flag *cli.Context) *service {
+ return &service{
+ flag: flag,
+ list: flag.Bool("list"),
+ }
+}
+
+func (s *service) Exec() (err error) {
+ if s.list {
+ err = s.showList()
+ }
+ return
+}