llgo.next: support build, run, cmptest

This commit is contained in:
xushiwei
2025-05-04 15:18:49 +08:00
parent 2203be945a
commit 355721c47a
7 changed files with 170 additions and 12 deletions

View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) 2025 The GoPlus Authors (goplus.org). All rights reserved.
*
* 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.
*/
import (
self "github.com/goplus/llgo/cmd/internal/build"
)
short "Compile packages and dependencies"
flagOff
run args => {
self.Cmd.Run self.Cmd, args
}

View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) 2025 The GoPlus Authors (goplus.org). All rights reserved.
*
* 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.
*/
import (
self "github.com/goplus/llgo/cmd/internal/run"
)
short "Compile and run with llgo, compare result (stdout/stderr/exitcode) with go or llgo.expect; generate llgo.expect file if -gen is specified"
flagOff
run args => {
self.CmpTestCmd.Run self.CmpTestCmd, args
}

View File

@@ -5,6 +5,8 @@ package main
import (
"fmt"
"github.com/goplus/cobra/xcmd"
build1 "github.com/goplus/llgo/cmd/internal/build"
run1 "github.com/goplus/llgo/cmd/internal/run"
"github.com/goplus/llgo/internal/env"
"github.com/qiniu/x/stringutil"
"runtime"
@@ -12,6 +14,18 @@ import (
const _ = true
type build struct {
xcmd.Command
*App
}
type cmptest struct {
xcmd.Command
*App
}
type run struct {
xcmd.Command
*App
}
type version struct {
xcmd.Command
*App
@@ -21,17 +35,68 @@ type App struct {
}
func (this *App) Main() {
_gop_obj0 := &version{App: this}
xcmd.Gopt_App_Main(this, _gop_obj0)
_gop_obj0 := &build{App: this}
_gop_obj1 := &cmptest{App: this}
_gop_obj2 := &run{App: this}
_gop_obj3 := &version{App: this}
xcmd.Gopt_App_Main(this, _gop_obj0, _gop_obj1, _gop_obj2, _gop_obj3)
}
//line cmd/llgo/version_cmd.gox:7
//line cmd/llgo.next/build_cmd.gox:20
func (this *build) Main(_gop_arg0 string) {
this.Command.Main(_gop_arg0)
//line cmd/llgo.next/build_cmd.gox:20:1
this.Short("Compile packages and dependencies")
//line cmd/llgo.next/build_cmd.gox:22:1
this.FlagOff()
//line cmd/llgo.next/build_cmd.gox:24:1
this.Run__1(func(args []string) {
//line cmd/llgo.next/build_cmd.gox:25:1
build1.Cmd.Run(build1.Cmd, args)
})
}
func (this *build) Classfname() string {
return "build"
}
//line cmd/llgo.next/cmptest_cmd.gox:20
func (this *cmptest) Main(_gop_arg0 string) {
this.Command.Main(_gop_arg0)
//line cmd/llgo.next/cmptest_cmd.gox:20:1
this.Short("Compile and run with llgo, compare result (stdout/stderr/exitcode) with go or llgo.expect; generate llgo.expect file if -gen is specified")
//line cmd/llgo.next/cmptest_cmd.gox:22:1
this.FlagOff()
//line cmd/llgo.next/cmptest_cmd.gox:24:1
this.Run__1(func(args []string) {
//line cmd/llgo.next/cmptest_cmd.gox:25:1
run1.CmpTestCmd.Run(run1.CmpTestCmd, args)
})
}
func (this *cmptest) Classfname() string {
return "cmptest"
}
//line cmd/llgo.next/run_cmd.gox:20
func (this *run) Main(_gop_arg0 string) {
this.Command.Main(_gop_arg0)
//line cmd/llgo.next/run_cmd.gox:20:1
this.Short("Compile and run Go program")
//line cmd/llgo.next/run_cmd.gox:22:1
this.FlagOff()
//line cmd/llgo.next/run_cmd.gox:24:1
this.Run__1(func(args []string) {
//line cmd/llgo.next/run_cmd.gox:25:1
run1.Cmd.Run(run1.Cmd, args)
})
}
func (this *run) Classfname() string {
return "run"
}
//line cmd/llgo.next/version_cmd.gox:22
func (this *version) Main(_gop_arg0 string) {
this.Command.Main(_gop_arg0)
//line cmd/llgo/version_cmd.gox:7:1
this.Short("print LLGo version")
//line cmd/llgo/version_cmd.gox:9:1
//line cmd/llgo.next/version_cmd.gox:22:1
this.Short("Print LLGo version")
//line cmd/llgo.next/version_cmd.gox:24:1
this.Run__0(func() {
//line cmd/llgo/version_cmd.gox:10:1
//line cmd/llgo.next/version_cmd.gox:25:1
fmt.Println(stringutil.Concat("llgo ", env.Version(), " ", runtime.GOOS, "/", runtime.GOARCH))
})
}
@@ -39,6 +104,6 @@ func (this *version) Classfname() string {
return "version"
}
func main() {
//line cmd/llgo/version_cmd.gox:9:1
//line cmd/llgo.next/version_cmd.gox:24:1
new(App).Main()
}

26
cmd/llgo.next/run_cmd.gox Normal file
View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) 2025 The GoPlus Authors (goplus.org). All rights reserved.
*
* 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.
*/
import (
self "github.com/goplus/llgo/cmd/internal/run"
)
short "Compile and run Go program"
flagOff
run args => {
self.Cmd.Run self.Cmd, args
}

View File

@@ -1,10 +1,25 @@
/*
* Copyright (c) 2025 The GoPlus Authors (goplus.org). All rights reserved.
*
* 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.
*/
import (
"runtime"
"github.com/goplus/llgo/internal/env"
)
short "print LLGo version"
short "Print LLGo version"
run => {
echo "llgo ${env.version} ${runtime.GOOS}/${runtime.GOARCH}"