mirror of
https://github.com/rclone/rclone.git
synced 2024-11-23 00:43:49 +01:00
rc: add core/version and put definitions next to implementations
This commit is contained in:
parent
dddfbec92a
commit
1916410316
@ -6,19 +6,12 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
|
"github.com/ncw/rclone/fs"
|
||||||
|
"github.com/ncw/rclone/fs/version"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Add(Call{
|
|
||||||
Path: "rc/noop",
|
|
||||||
Fn: rcNoop,
|
|
||||||
Title: "Echo the input to the output parameters",
|
|
||||||
Help: `
|
|
||||||
This echoes the input parameters to the output parameters for testing
|
|
||||||
purposes. It can be used to check that rclone is still alive and to
|
|
||||||
check that parameter passing is working properly.`,
|
|
||||||
})
|
|
||||||
Add(Call{
|
Add(Call{
|
||||||
Path: "rc/noopauth",
|
Path: "rc/noopauth",
|
||||||
AuthRequired: true,
|
AuthRequired: true,
|
||||||
@ -29,6 +22,23 @@ This echoes the input parameters to the output parameters for testing
|
|||||||
purposes. It can be used to check that rclone is still alive and to
|
purposes. It can be used to check that rclone is still alive and to
|
||||||
check that parameter passing is working properly.`,
|
check that parameter passing is working properly.`,
|
||||||
})
|
})
|
||||||
|
Add(Call{
|
||||||
|
Path: "rc/noop",
|
||||||
|
Fn: rcNoop,
|
||||||
|
Title: "Echo the input to the output parameters",
|
||||||
|
Help: `
|
||||||
|
This echoes the input parameters to the output parameters for testing
|
||||||
|
purposes. It can be used to check that rclone is still alive and to
|
||||||
|
check that parameter passing is working properly.`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Echo the input to the ouput parameters
|
||||||
|
func rcNoop(in Params) (out Params, err error) {
|
||||||
|
return in, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
Add(Call{
|
Add(Call{
|
||||||
Path: "rc/error",
|
Path: "rc/error",
|
||||||
Fn: rcError,
|
Fn: rcError,
|
||||||
@ -37,6 +47,14 @@ check that parameter passing is working properly.`,
|
|||||||
This returns an error with the input as part of its error string.
|
This returns an error with the input as part of its error string.
|
||||||
Useful for testing error handling.`,
|
Useful for testing error handling.`,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return an error regardless
|
||||||
|
func rcError(in Params) (out Params, err error) {
|
||||||
|
return nil, errors.Errorf("arbitrary error on input %+v", in)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
Add(Call{
|
Add(Call{
|
||||||
Path: "rc/list",
|
Path: "rc/list",
|
||||||
Fn: rcList,
|
Fn: rcList,
|
||||||
@ -45,6 +63,16 @@ Useful for testing error handling.`,
|
|||||||
This lists all the registered remote control commands as a JSON map in
|
This lists all the registered remote control commands as a JSON map in
|
||||||
the commands response.`,
|
the commands response.`,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// List the registered commands
|
||||||
|
func rcList(in Params) (out Params, err error) {
|
||||||
|
out = make(Params)
|
||||||
|
out["commands"] = Calls.List()
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
Add(Call{
|
Add(Call{
|
||||||
Path: "core/pid",
|
Path: "core/pid",
|
||||||
Fn: rcPid,
|
Fn: rcPid,
|
||||||
@ -53,6 +81,16 @@ the commands response.`,
|
|||||||
This returns PID of current process.
|
This returns PID of current process.
|
||||||
Useful for stopping rclone process.`,
|
Useful for stopping rclone process.`,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return PID of current process
|
||||||
|
func rcPid(in Params) (out Params, err error) {
|
||||||
|
out = make(Params)
|
||||||
|
out["pid"] = os.Getpid()
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
Add(Call{
|
Add(Call{
|
||||||
Path: "core/memstats",
|
Path: "core/memstats",
|
||||||
Fn: rcMemStats,
|
Fn: rcMemStats,
|
||||||
@ -69,40 +107,6 @@ The most interesting values for most people are:
|
|||||||
* It is virtual memory so may include unused memory
|
* It is virtual memory so may include unused memory
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
Add(Call{
|
|
||||||
Path: "core/gc",
|
|
||||||
Fn: rcGc,
|
|
||||||
Title: "Runs a garbage collection.",
|
|
||||||
Help: `
|
|
||||||
This tells the go runtime to do a garbage collection run. It isn't
|
|
||||||
necessary to call this normally, but it can be useful for debugging
|
|
||||||
memory problems.
|
|
||||||
`,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Echo the input to the ouput parameters
|
|
||||||
func rcNoop(in Params) (out Params, err error) {
|
|
||||||
return in, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return an error regardless
|
|
||||||
func rcError(in Params) (out Params, err error) {
|
|
||||||
return nil, errors.Errorf("arbitrary error on input %+v", in)
|
|
||||||
}
|
|
||||||
|
|
||||||
// List the registered commands
|
|
||||||
func rcList(in Params) (out Params, err error) {
|
|
||||||
out = make(Params)
|
|
||||||
out["commands"] = Calls.List()
|
|
||||||
return out, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return PID of current process
|
|
||||||
func rcPid(in Params) (out Params, err error) {
|
|
||||||
out = make(Params)
|
|
||||||
out["pid"] = os.Getpid()
|
|
||||||
return out, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the memory statistics
|
// Return the memory statistics
|
||||||
@ -133,8 +137,57 @@ func rcMemStats(in Params) (out Params, err error) {
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Add(Call{
|
||||||
|
Path: "core/gc",
|
||||||
|
Fn: rcGc,
|
||||||
|
Title: "Runs a garbage collection.",
|
||||||
|
Help: `
|
||||||
|
This tells the go runtime to do a garbage collection run. It isn't
|
||||||
|
necessary to call this normally, but it can be useful for debugging
|
||||||
|
memory problems.
|
||||||
|
`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// Do a garbage collection run
|
// Do a garbage collection run
|
||||||
func rcGc(in Params) (out Params, err error) {
|
func rcGc(in Params) (out Params, err error) {
|
||||||
runtime.GC()
|
runtime.GC()
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Add(Call{
|
||||||
|
Path: "core/version",
|
||||||
|
Fn: rcVersion,
|
||||||
|
Title: "Shows the current version of rclone and the go runtime.",
|
||||||
|
Help: `
|
||||||
|
This shows the current version of go and the go runtime
|
||||||
|
- version - rclone version, eg "v1.44"
|
||||||
|
- decomposed - version number as [major, minor, patch, subpatch]
|
||||||
|
- note patch and subpatch will be 999 for a git compiled version
|
||||||
|
- isGit - boolean - true if this was compiled from the git version
|
||||||
|
- os - OS in use as according to Go
|
||||||
|
- arch - cpu architecture in use according to Go
|
||||||
|
- goVersion - version of Go runtime in use
|
||||||
|
|
||||||
|
`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return version info
|
||||||
|
func rcVersion(in Params) (out Params, err error) {
|
||||||
|
decomposed, err := version.New(fs.Version)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
out = Params{
|
||||||
|
"version": fs.Version,
|
||||||
|
"decomposed": decomposed,
|
||||||
|
"isGit": decomposed.IsGit(),
|
||||||
|
"os": runtime.GOOS,
|
||||||
|
"arch": runtime.GOARCH,
|
||||||
|
"goVersion": runtime.Version(),
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
package rc
|
package rc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ncw/rclone/fs"
|
||||||
|
"github.com/ncw/rclone/fs/version"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
@ -74,3 +77,19 @@ func TestCoreGC(t *testing.T) {
|
|||||||
require.Nil(t, out)
|
require.Nil(t, out)
|
||||||
assert.Equal(t, Params(nil), out)
|
assert.Equal(t, Params(nil), out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCoreVersion(t *testing.T) {
|
||||||
|
call := Calls.Get("core/version")
|
||||||
|
assert.NotNil(t, call)
|
||||||
|
in := Params{}
|
||||||
|
out, err := call.Fn(in)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, out)
|
||||||
|
assert.Equal(t, fs.Version, out["version"])
|
||||||
|
assert.Equal(t, runtime.GOOS, out["os"])
|
||||||
|
assert.Equal(t, runtime.GOARCH, out["arch"])
|
||||||
|
assert.Equal(t, runtime.Version(), out["goVersion"])
|
||||||
|
_ = out["isGit"].(bool)
|
||||||
|
v := out["decomposed"].(version.Version)
|
||||||
|
assert.True(t, len(v) >= 2)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user