feat: add extra command

This commit is contained in:
Allyedge
2022-06-06 10:43:23 +02:00
parent e9560e8874
commit 9cead56a35
11 changed files with 154 additions and 35 deletions

View File

@@ -7,6 +7,7 @@
Our CLI allows you to setup and manage Discord bot projects without writing a single line of code!
😁 **User Friendly** <br>
🔥 **Fast** <br>
💦 **Simple** <br>
🌱 **Efficient** <br>
💪 **Powerful** <br>

15
cmd/cli/extra.go Normal file
View File

@@ -0,0 +1,15 @@
package cli
import (
"github.com/sern-handler/cli/pkg/extra"
"github.com/spf13/cobra"
)
var extraCmd = &cobra.Command{
Use: "extra",
Short: "Add extra tools to your Sern project.",
Long: `Add extra tools to your Sern project to help you with the setup and development.`,
Run: func(cmd *cobra.Command, args []string) {
extra.Execute()
},
}

View File

@@ -12,7 +12,7 @@ var rootCmd = &cobra.Command{
Short: "A powerful CLI tool for Sern.",
Version: "0.1.1",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Sern CLI")
cmd.Help()
},
}
@@ -21,6 +21,7 @@ func Execute() {
rootCmd.Flags().BoolP("version", "v", false, "The version of the Sern CLI.")
rootCmd.SetVersionTemplate("Sern CLI - Version {{.Version}}\n")
rootCmd.AddCommand(initCmd)
rootCmd.AddCommand(extraCmd)
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)

32
package-lock.json generated
View File

@@ -1,32 +0,0 @@
{
"name": "@sern/cli",
"version": "0.1.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@sern/cli",
"version": "0.1.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@gzuidhof/go-npm": "^0.1.13"
}
},
"node_modules/@gzuidhof/go-npm": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/@gzuidhof/go-npm/-/go-npm-0.1.13.tgz",
"integrity": "sha512-45nOc+/Elll2f1xrFQU7rrpcpl1AIPgi3x04sGizbUUdtyreM8v2QFcpr5gACfYxt9P9wXPShIMXjve1C406Rg==",
"bin": {
"go-npm": "bin/index.js"
}
}
},
"dependencies": {
"@gzuidhof/go-npm": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/@gzuidhof/go-npm/-/go-npm-0.1.13.tgz",
"integrity": "sha512-45nOc+/Elll2f1xrFQU7rrpcpl1AIPgi3x04sGizbUUdtyreM8v2QFcpr5gACfYxt9P9wXPShIMXjve1C406Rg=="
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@sern/cli",
"version": "0.1.2",
"version": "0.1.1",
"description": "Our CLI allows you to setup and manage Discord bot projects without writing a single line of code!",
"scripts": {
"postinstall": "go-npm install",

34
pkg/extra/docker.go Normal file
View File

@@ -0,0 +1,34 @@
package extra
import (
"os"
"github.com/gookit/color"
"github.com/sern-handler/cli/pkg/util"
)
func addDockerfile() error {
var dockerfile string
_, err := os.Stat("tsconfig.json")
if err != nil {
dockerfile = "Dockerfile.js"
} else {
dockerfile = "Dockerfile.ts"
}
color.Info.Prompt("Adding Dockerfile...")
err = util.CopyFile("templates/extra/"+dockerfile, "Dockerfile")
if err != nil {
color.Error.Prompt("Couldn't add the Dockerfile, exiting.")
return err
}
color.Info.Prompt("Successfully added the Dockerfile.")
return nil
}

33
pkg/extra/extra.go Normal file
View File

@@ -0,0 +1,33 @@
package extra
import (
"os"
"github.com/AlecAivazis/survey/v2"
"github.com/gookit/color"
)
func Execute() {
answers := struct {
Extra string
}{}
err := survey.Ask(questions, &answers)
if err != nil {
color.Error.Prompt("Adding extras failed, exiting.")
os.Exit(1)
}
switch answers.Extra {
case "Dockerfile":
err = addDockerfile()
if err != nil {
color.Error.Prompt("Adding the Dockerfile failed, exiting.")
os.Exit(1)
}
}
}

13
pkg/extra/questions.go Normal file
View File

@@ -0,0 +1,13 @@
package extra
import "github.com/AlecAivazis/survey/v2"
var questions = []*survey.Question{
{
Name: "extra",
Prompt: &survey.Select{
Message: "What extra do you want to add?",
Options: []string{"Dockerfile"},
},
},
}

View File

@@ -1,6 +1,10 @@
package util
import "os/exec"
import (
"io"
"os"
"os/exec"
)
type PackageManagers struct {
NPM bool
@@ -27,3 +31,29 @@ func CheckPackageManagers() PackageManagers {
return packageManagers
}
func CopyFile(src, dst string) error {
in, err := os.Open(src)
if err != nil {
return err
}
defer in.Close()
out, err := os.Create(dst)
if err != nil {
return err
}
defer out.Close()
_, err = io.Copy(out, in)
if err != nil {
return err
}
return out.Close()
}

View File

@@ -0,0 +1,11 @@
FROM node:latest
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN node src/index.js

View File

@@ -0,0 +1,13 @@
FROM node:latest
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN tsc --build
RUN node dist/index.js