Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- ``tt instances`` command to print a list of enabled applications.
- SSL options for ``tt connect`` command.
- An ability to pass arguments to a connect command.
- ``tt binaries`` command. It shows a list of installed binaries and their versions.

### Changed

Expand Down
1 change: 1 addition & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -462,3 +462,4 @@ Common description. For a detailed description, use ``tt help command`` .
* ``cfg dump`` - print tt environment configuration.
* ``pack`` - pack an environment into a tarball/RPM/Deb.
* ``instances`` - show enabled applications.
* ``binaries`` - show a list of installed binaries and their versions.
28 changes: 28 additions & 0 deletions cli/cmd/binaries.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package cmd

import (
"github.com/spf13/cobra"
"github.com/tarantool/tt/cli/cmdcontext"
"github.com/tarantool/tt/cli/list"
"github.com/tarantool/tt/cli/modules"
)

// NewBinariesCmd creates binaries command.
func NewBinariesCmd() *cobra.Command {
var binariesCmd = &cobra.Command{
Use: "binaries",
Short: "Show a list of installed binaries and their versions.",
Run: func(cmd *cobra.Command, args []string) {
err := modules.RunCmd(&cmdCtx, cmd.CommandPath(), &modulesInfo,
internalBinariesModule, args)
handleCmdErr(cmd, err)
},
}

return binariesCmd
}

// internalBinariesModule is a default binaries module.
func internalBinariesModule(cmdCtx *cmdcontext.CmdCtx, args []string) error {
return list.ListBinaries(cmdCtx, cliOpts)
}
4 changes: 2 additions & 2 deletions cli/cmd/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/tarantool/tt/cli/cmdcontext"
"github.com/tarantool/tt/cli/install"
"github.com/tarantool/tt/cli/modules"
"github.com/tarantool/tt/cli/search"
"github.com/tarantool/tt/cli/version"
)

var (
Expand Down Expand Up @@ -40,7 +40,7 @@ func NewInstallCmd() *cobra.Command {

# Install Tarantool 2.10.5 with limit number of simultaneous jobs for make.

$ MAKEFLAGS="-j2" tt install tarantool` + search.VersionCliSeparator + "2.10.5",
$ MAKEFLAGS="-j2" tt install tarantool` + version.CliSeparator + "2.10.5",
ValidArgs: []string{"tt", "tarantool", "tarantool-ee"},
}
installCmd.Flags().BoolVarP(&force, "force", "f", false,
Expand Down
1 change: 1 addition & 0 deletions cli/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ func NewCmdRoot() *cobra.Command {
NewDaemonCmd(),
NewCfgCmd(),
NewInstancesCmd(),
NewBinariesCmd(),
)
if err := injectCmds(rootCmd); err != nil {
panic(err.Error())
Expand Down
6 changes: 3 additions & 3 deletions cli/cmd/uninstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"github.com/spf13/cobra"
"github.com/tarantool/tt/cli/cmdcontext"
"github.com/tarantool/tt/cli/modules"
"github.com/tarantool/tt/cli/search"
"github.com/tarantool/tt/cli/uninstall"
"github.com/tarantool/tt/cli/version"
)

// NewUninstallCmd creates uninstall command.
Expand Down Expand Up @@ -44,8 +44,8 @@ func NewUninstallCmd() *cobra.Command {

// InternalUninstallModule is a default uninstall module.
func InternalUninstallModule(cmdCtx *cmdcontext.CmdCtx, args []string) error {
if !strings.Contains(args[0], search.VersionCliSeparator) {
return fmt.Errorf("incorrect usage.\n e.g program%sversion", search.VersionCliSeparator)
if !strings.Contains(args[0], version.CliSeparator) {
return fmt.Errorf("incorrect usage.\n e.g program%sversion", version.CliSeparator)
}
err := uninstall.UninstallProgram(args[0], cliOpts.App.BinDir,
cliOpts.App.IncludeDir+"/include", cmdCtx)
Expand Down
69 changes: 35 additions & 34 deletions cli/install/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -380,14 +380,14 @@ func copyBuildedTT(binDir, path, version string, installCtx InstallCtx,
}

// installTt installs selected version of tt.
func installTt(version string, binDir string, installCtx InstallCtx, distfiles string) error {
func installTt(versionStr string, binDir string, installCtx InstallCtx, distfiles string) error {
versions, err := getTTVersions(installCtx.Local, distfiles)
if err != nil {
return err
}

// Get latest version if it was not specified.
_, ttVersion, _ := strings.Cut(version, search.VersionCliSeparator)
_, ttVersion, _ := strings.Cut(versionStr, version.CliSeparator)
if ttVersion == "" {
log.Infof("Getting latest tt version..")
if len(versions) == 0 {
Expand Down Expand Up @@ -435,12 +435,12 @@ func installTt(version string, binDir string, installCtx InstallCtx, distfiles s
}
}

version = "tt" + search.VersionFsSeparator + ttVersion
versionStr = "tt" + version.FsSeparator + ttVersion
// Check if that version is already installed.
log.Infof("Checking existing...")
if checkExisting(version, binDir) && !installCtx.Reinstall {
log.Infof("%s version of tt already exists, updating symlink...", version)
err := util.CreateSymlink(version, filepath.Join(binDir, "tt"), true)
if checkExisting(versionStr, binDir) && !installCtx.Reinstall {
log.Infof("%s version of tt already exists, updating symlink...", versionStr)
err := util.CreateSymlink(versionStr, filepath.Join(binDir, "tt"), true)
log.Infof("Done")
return err
}
Expand Down Expand Up @@ -488,14 +488,14 @@ func installTt(version string, binDir string, installCtx InstallCtx, distfiles s

// Copy binary.
log.Infof("Copying executable...")
err = copyBuildedTT(binDir, path, version, installCtx, logFile)
err = copyBuildedTT(binDir, path, versionStr, installCtx, logFile)
if err != nil {
printLog(logFile.Name())
return err
}

// Set symlink.
err = util.CreateSymlink(version, filepath.Join(binDir, "tt"), true)
err = util.CreateSymlink(versionStr, filepath.Join(binDir, "tt"), true)
if err != nil {
printLog(logFile.Name())
return err
Expand Down Expand Up @@ -531,7 +531,7 @@ func patchTarantool(srcPath string, tarVersion string,
return nil
}

ver, err := version.GetVersionDetails(tarVersion)
ver, err := version.Parse(tarVersion)
if err != nil {
return err
}
Expand Down Expand Up @@ -581,7 +581,7 @@ func buildTarantool(srcPath string, tarVersion string,
// This feature is not supported by a backported static build.
btFlag := "ON"
if tarVersion != "master" {
version, err := version.GetVersionDetails(tarVersion)
version, err := version.Parse(tarVersion)
if err != nil {
return err
}
Expand Down Expand Up @@ -713,7 +713,7 @@ func installTarantoolInDocker(tntVersion, binDir, incDir string, installCtx Inst
tntInstallCommandLine = append(tntInstallCommandLine, "-V")
}
tntInstallCommandLine = append(tntInstallCommandLine, "install",
"tarantool"+search.VersionCliSeparator+tntVersion, "-f")
"tarantool"+version.CliSeparator+tntVersion, "-f")
if installCtx.Reinstall {
tntInstallCommandLine = append(tntInstallCommandLine, "--reinstall")
}
Expand Down Expand Up @@ -742,7 +742,7 @@ func installTarantoolInDocker(tntVersion, binDir, incDir string, installCtx Inst
}

// installTarantool installs selected version of tarantool.
func installTarantool(version string, binDir string, incDir string,
func installTarantool(versionStr string, binDir string, incDir string,
installCtx InstallCtx, distfiles string) error {
// Check bin and header dirs.
if binDir == "" {
Expand All @@ -758,7 +758,7 @@ func installTarantool(version string, binDir string, incDir string,
}

// Get latest version if it was not specified.
_, tarVersion, _ := strings.Cut(version, search.VersionCliSeparator)
_, tarVersion, _ := strings.Cut(versionStr, version.CliSeparator)
if tarVersion == "" {
log.Infof("Getting latest tarantool version..")
if len(versions) == 0 {
Expand All @@ -783,11 +783,11 @@ func installTarantool(version string, binDir string, incDir string,
}
}

version = "tarantool" + search.VersionFsSeparator + tarVersion
versionStr = "tarantool" + version.FsSeparator + tarVersion
// Check if program is already installed.
if !installCtx.Reinstall {
log.Infof("Checking existing...")
versionExists, err := checkExistingTarantool(version,
versionExists, err := checkExistingTarantool(versionStr,
binDir, incDir, installCtx)
if err != nil || versionExists {
return err
Expand Down Expand Up @@ -854,15 +854,15 @@ func installTarantool(version string, binDir string, incDir string,
}
// Copy binary and headers.
if installCtx.Reinstall {
if checkExisting(version, binDir) {
if checkExisting(versionStr, binDir) {
log.Infof("%s version of tarantool already exists, removing files...",
version)
err = os.RemoveAll(filepath.Join(binDir, version))
versionStr)
err = os.RemoveAll(filepath.Join(binDir, versionStr))
if err != nil {
printLog(logFile.Name())
return err
}
err = os.RemoveAll(filepath.Join(incDir, version))
err = os.RemoveAll(filepath.Join(incDir, versionStr))
}
}
if err != nil {
Expand All @@ -872,20 +872,20 @@ func installTarantool(version string, binDir string, incDir string,
buildPath := filepath.Join(path, "/static-build/build")
binPath := filepath.Join(buildPath, "/tarantool-prefix/bin/tarantool")
incPath := filepath.Join(buildPath, "/tarantool-prefix/include/tarantool") + "/"
err = copyBuildedTarantool(binPath, incPath, binDir, incDir, version, installCtx,
err = copyBuildedTarantool(binPath, incPath, binDir, incDir, versionStr, installCtx,
logFile)
if err != nil {
printLog(logFile.Name())
return err
}
// Set symlinks.
log.Infof("Changing symlinks...")
err = util.CreateSymlink(version, filepath.Join(binDir, "tarantool"), true)
err = util.CreateSymlink(versionStr, filepath.Join(binDir, "tarantool"), true)
if err != nil {
printLog(logFile.Name())
return err
}
err = util.CreateSymlink(version, filepath.Join(incDir, "tarantool"), true)
err = util.CreateSymlink(versionStr, filepath.Join(incDir, "tarantool"), true)
if err != nil {
printLog(logFile.Name())
return err
Expand All @@ -898,7 +898,7 @@ func installTarantool(version string, binDir string, incDir string,
}

// installTarantoolEE installs selected version of tarantool-ee.
func installTarantoolEE(version string, binDir string, includeDir string, installCtx InstallCtx,
func installTarantoolEE(versionStr string, binDir string, includeDir string, installCtx InstallCtx,
distfiles string, cliOpts *config.CliOpts) error {
var err error

Expand All @@ -916,7 +916,8 @@ func installTarantoolEE(version string, binDir string, includeDir string, instal
}
}

_, tarVersion, _ := strings.Cut(version, search.VersionCliSeparator)
// Get latest version if it was not specified.
_, tarVersion, _ := strings.Cut(versionStr, version.CliSeparator)
if tarVersion == "" {
log.Infof("Getting latest tarantool-ee version..")
}
Expand Down Expand Up @@ -955,10 +956,10 @@ func installTarantoolEE(version string, binDir string, includeDir string, instal
bundleName := ver.Version.Tarball
bundleSource := ver.Prefix

version = "tarantool-ee" + search.VersionFsSeparator + tarVersion
versionStr = "tarantool-ee" + version.FsSeparator + tarVersion
if !installCtx.Reinstall {
log.Infof("Checking existing...")
versionExists, err := checkExistingTarantool(version,
versionExists, err := checkExistingTarantool(versionStr,
binDir, includeDir, installCtx)
if err != nil || versionExists {
return err
Expand Down Expand Up @@ -1010,15 +1011,15 @@ func installTarantoolEE(version string, binDir string, includeDir string, instal

// Copy binary and headers.
if installCtx.Reinstall {
if checkExisting(version, binDir) {
if checkExisting(versionStr, binDir) {
log.Infof("%s version of tarantool-ee already exists, removing files...",
version)
err = os.RemoveAll(filepath.Join(binDir, version))
versionStr)
err = os.RemoveAll(filepath.Join(binDir, versionStr))
if err != nil {
printLog(logFile.Name())
return err
}
err = os.RemoveAll(filepath.Join(includeDir, version))
err = os.RemoveAll(filepath.Join(includeDir, versionStr))
}
}
if err != nil {
Expand All @@ -1027,7 +1028,7 @@ func installTarantoolEE(version string, binDir string, includeDir string, instal
}
binPath := filepath.Join(path, "/tarantool-enterprise/tarantool")
incPath := filepath.Join(path, "/tarantool-enterprise/include/tarantool") + "/"
err = copyBuildedTarantool(binPath, incPath, binDir, includeDir, version, installCtx,
err = copyBuildedTarantool(binPath, incPath, binDir, includeDir, versionStr, installCtx,
logFile)
if err != nil {
printLog(logFile.Name())
Expand All @@ -1036,11 +1037,11 @@ func installTarantoolEE(version string, binDir string, includeDir string, instal

// Set symlinks.
log.Infof("Changing symlinks...")
err = util.CreateSymlink(version, filepath.Join(binDir, "tarantool"), true)
err = util.CreateSymlink(versionStr, filepath.Join(binDir, "tarantool"), true)
if err != nil {
return err
}
err = util.CreateSymlink(version, filepath.Join(includeDir, "tarantool"), true)
err = util.CreateSymlink(versionStr, filepath.Join(includeDir, "tarantool"), true)
if err != nil {
printLog(logFile.Name())
return err
Expand Down Expand Up @@ -1080,7 +1081,7 @@ func FillCtx(cmdCtx *cmdcontext.CmdCtx, installCtx *InstallCtx, args []string) e
}

re := regexp.MustCompile(
"^(?P<prog>tt|tarantool|tarantool-ee)(?:" + search.VersionCliSeparator + ".*)?$",
"^(?P<prog>tt|tarantool|tarantool-ee)(?:" + version.CliSeparator + ".*)?$",
)
matches := util.FindNamedMatches(re, args[0])
if len(matches) == 0 {
Expand Down
Loading