Skip to content

Commit 6ba427e

Browse files
committed
Implement docs command
1 parent ff630ad commit 6ba427e

File tree

4 files changed

+114
-0
lines changed

4 files changed

+114
-0
lines changed

external/external.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package external
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"os/exec"
7+
"os/user"
8+
"runtime"
9+
"strings"
10+
)
11+
12+
func IsInstalled(programName string) bool {
13+
_, err := exec.LookPath(programName)
14+
return err == nil
15+
}
16+
17+
func Execute(programName string, args ...string) error {
18+
cmd := exec.Command(programName, args...)
19+
cmd.Stdin = os.Stdin
20+
cmd.Stdout = os.Stdout
21+
cmd.Stderr = os.Stderr
22+
return cmd.Run()
23+
}
24+
25+
func ExecuteHidden(programName string, args ...string) (string, error) {
26+
cmd := exec.Command(programName, args...)
27+
cmd.Stdin = os.Stdin
28+
cmd.Stdout = os.Stdout
29+
cmd.Stderr = os.Stderr
30+
out, err := cmd.CombinedOutput()
31+
return string(out), err
32+
}
33+
34+
func GetUsername() string {
35+
name, err := ExecuteHidden("git", "config", "user.name")
36+
if err == nil {
37+
return strings.TrimSpace(name)
38+
}
39+
40+
user, err := user.Current()
41+
if err == nil {
42+
return strings.TrimSpace(user.Username)
43+
}
44+
45+
fmt.Println("Make sure to replace <your-name> with your actual name.")
46+
return "<your-name>"
47+
}
48+
49+
func OpenBrowser(url string) error {
50+
switch runtime.GOOS {
51+
case "linux":
52+
return exec.Command("xdg-open", url).Start()
53+
case "windows":
54+
return exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()
55+
case "darwin":
56+
return exec.Command("open", url).Start()
57+
default:
58+
return fmt.Errorf("unsupported platform")
59+
}
60+
}

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module github.com/code-game-project/codegame-cli
2+
3+
go 1.18
4+
5+
require github.com/ogier/pflag v0.0.1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750=
2+
github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g=

main.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"strings"
7+
8+
"github.com/code-game-project/codegame-cli/external"
9+
"github.com/ogier/pflag"
10+
)
11+
12+
func main() {
13+
pflag.Usage = func() {
14+
fmt.Fprintf(os.Stderr, "Usage: %s <command> [...]\n", os.Args[0])
15+
fmt.Fprintln(os.Stderr, "\nDescription:")
16+
fmt.Fprintln(os.Stderr, "\nThe official CodeGame CLI.")
17+
fmt.Fprintln(os.Stderr, "\nCommands:")
18+
fmt.Fprintln(os.Stderr, "\tnew \tCreate a new project.")
19+
fmt.Fprintln(os.Stderr, "\tupdate \tUpdate the CodeGame libraries in the current project.")
20+
fmt.Fprintln(os.Stderr, "\tdocs \tOpen the CodeGame documentation in a web browser.")
21+
fmt.Fprintln(os.Stderr, "\nAbout: https://github.com/code-game-project")
22+
fmt.Fprintln(os.Stderr, "Copyright (c) 2022 CodeGame Contributors (https://github.com/orgs/code-game-project/people)")
23+
pflag.PrintDefaults()
24+
}
25+
pflag.Parse()
26+
27+
if pflag.NArg() == 0 {
28+
pflag.Usage()
29+
os.Exit(1)
30+
}
31+
32+
command := strings.ToLower(pflag.Arg(0))
33+
34+
var err error
35+
switch command {
36+
case "docs":
37+
err = external.OpenBrowser("https://github.com/code-game-project/docs/blob/main/README.md")
38+
default:
39+
fmt.Println("Unknown command:", strings.ToLower(pflag.Arg(0)))
40+
pflag.Usage()
41+
os.Exit(1)
42+
}
43+
if err != nil {
44+
fmt.Fprintln(os.Stderr, err)
45+
os.Exit(1)
46+
}
47+
}

0 commit comments

Comments
 (0)