Skip to content

Commit

Permalink
dev,ci: Add mage target to generate auto-completion scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
Aggelos Kolaitis committed Jul 25, 2020
1 parent f753f85 commit d8405c9
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/release-snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ jobs:
key: ${{ runner.os }}-tools-${{ hashFiles('tools/**') }}
- name: Make Mage
run: make tools/bin/mage
- name: Auto-completion scripts
run: tools/bin/mage cli:autocomplete
- name: Install JS SDK dependencies
run: tools/bin/mage jsSDK:deps
- name: Build JS SDK
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ jobs:
go mod download
- name: Make Mage
run: make tools/bin/mage
- name: Auto-completion scripts
run: tools/bin/mage cli:autocomplete
- name: Install JS SDK dependencies
run: tools/bin/mage jsSDK:deps
- name: Build JS SDK
Expand Down
Empty file added config/completion/bash/.gitkeep
Empty file.
Empty file added config/completion/fish/.gitkeep
Empty file.
Empty file added config/completion/zsh/.gitkeep
Empty file.
71 changes: 71 additions & 0 deletions tools/mage/cli.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Copyright © 2020 The Things Network Foundation, The Things Industries B.V.
//
// 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.

package ttnmage

import (
"fmt"
"os"
"path"

"github.com/magefile/mage/mg"
)

// Cli namespace.
type Cli mg.Namespace

// Autocomplete generates scripts for auto-completion.
func (Cli) Autocomplete() error {
for _, cfg := range []struct {
which string
shell string
filename string
executable string
}{
{
"ttn-lw-cli", "bash", "ttn-lw-cli-snap", "ttn-lw-stack.ttn-lw-cli",
},
{
"ttn-lw-cli", "bash", "ttn-lw-cli", "ttn-lw-cli",
},
{
"ttn-lw-cli", "fish", "ttn-lw-cli.fish", "ttn-lw-cli",
},
{
"ttn-lw-cli", "zsh", "_ttn-lw-cli", "ttn-lw-cli",
},
{
"ttn-lw-stack", "bash", "ttn-lw-stack", "ttn-lw-stack",
},
{
"ttn-lw-stack", "fish", "ttn-lw-stack.fish", "ttn-lw-stack",
},
{
"ttn-lw-stack", "zsh", "_ttn-lw-stack", "ttn-lw-stack",
},
} {
f, err := os.Create(path.Join("config", "completion", cfg.shell, cfg.filename))
if err != nil {
return err
}
if err = execGo(
f, os.Stderr,
"run", fmt.Sprintf("./cmd/%s", cfg.which), "complete",
"--shell", cfg.shell,
"--executable", cfg.executable); err != nil {
return err
}
}
return nil
}

0 comments on commit d8405c9

Please sign in to comment.