tools

package
v3.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 2, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const CdrFileName = "clipboard-data-receiver"
View Source
const CdrFileNameForMac = "clipboard-data-receiver"

Variables

View Source
var CDR = func(services InstallerUseServices) Tool {

	// WSL 上で実行されているかを判定し、
	// WSL 上で実行されているなら `.exe` をダウンロード
	var cdrFileName string
	var tmpl *template.Template
	var err error
	if util.IsWsl() {
		cdrFileName = cdrFileNameForWindows
		tmpl, err = template.New("ducp").Parse(downloadURLCdrPatternForWindows)
	} else if runtime.GOOS == "darwin" {
		cdrFileName = CdrFileNameForMac
		tmpl, err = template.New("ducp").Parse(downloadURLCdrPatternForMac)
	} else {
		cdrFileName = CdrFileName
		tmpl, err = template.New("ducp").Parse(downloadURLCdrPattern)
	}
	if err != nil {
		panic(err)
	}

	return Tool{
		FileName: cdrFileName,
		CalculateDownloadURL: func(_ string) (string, error) {
			latestTagName, err := services.GetLatestReleaseFromGitHub("mikoto2000", "clipboard-data-receiver")
			if err != nil {
				return "", err
			}

			tmplParams := map[string]string{"TagName": latestTagName}
			var downloadURL strings.Builder
			err = tmpl.Execute(&downloadURL, tmplParams)
			if err != nil {
				return "", err
			}
			return downloadURL.String(), nil
		},
		installFunc: func(downloadFunc func(downloadURL string, destPath string) error, downloadURL string, filePath string, containerArch string) (string, error) {
			return simpleInstall(downloadFunc, downloadURL, filePath)
		},
		DownloadFunc: download,
	}
}

clipboard-data-receiver のツール情報

View Source
var DEVCONTAINER = func(services InstallerUseServices) Tool {

	return Tool{
		FileName: devcontainerFileName,
		CalculateDownloadURL: func(_ string) (string, error) {
			latestTagName, err := services.GetLatestReleaseFromGitHub("mikoto2000", "devcontainers-cli")
			if err != nil {
				return "", err
			}

			pattern := "pattern"
			tmpl, err := template.New(pattern).Parse(downloadURLDevcontainersCliPattern)
			if err != nil {
				return "", err
			}

			tmplParams := map[string]string{"TagName": latestTagName}
			var downloadURL strings.Builder
			err = tmpl.Execute(&downloadURL, tmplParams)
			if err != nil {
				return "", err
			}
			return downloadURL.String(), nil
		},
		installFunc: func(downloadFunc func(downloadURL string, destPath string) error, downloadURL string, filePath string, containerArch string) (string, error) {
			return simpleInstall(downloadFunc, downloadURL, filePath)
		},
		DownloadFunc: download,
	}
}

devcontainer/cli のツール情報

View Source
var NVIM = func(service InstallerUseServices) Tool {
	return Tool{
		FileName: "nvim",
		CalculateDownloadURL: func(containerArch string) (string, error) {
			if containerArch == "amd64" || containerArch == "x86_64" {
				latestTagName, err := util.GetLatestReleaseFromGitHub("neovim", "neovim")
				if err != nil {
					return "", err
				}

				pattern := "pattern"
				tmpl, err := template.New(pattern).Parse(nvimAppImageDownloadURLPattern)
				if err != nil {
					return "", err
				}

				tmplParams := map[string]string{"TagName": latestTagName}
				var downloadURL strings.Builder
				err = tmpl.Execute(&downloadURL, tmplParams)
				if err != nil {
					return "", err
				}
				return downloadURL.String(), nil
			} else if containerArch == "arm64" || containerArch == "aarch64" {
				latestTagName, err := util.GetLatestReleaseFromGitHub("mikoto2000", "vim-static")
				if err != nil {
					return "", err
				}

				pattern := "pattern"
				tmpl, err := template.New(pattern).Parse(nvimArmStaticDownloadURLPattern)
				if err != nil {
					return "", err
				}

				tmplParams := map[string]string{"TagName": latestTagName}
				var downloadURL strings.Builder
				err = tmpl.Execute(&downloadURL, tmplParams)
				if err != nil {
					return "", err
				}
				return downloadURL.String(), nil
			} else {
				return "", errors.New("Unknown Architecture")
			}
		},
		installFunc: func(downloadFunc func(downloadURL string, destPath string) error, downloadURL string, filePath string, containerArch string) (string, error) {
			return simpleInstall(downloadFunc, downloadURL, filePath)
		},
		DownloadFunc: download,
	}
}

NeoVim のツール情報

View Source
var PortForwarderContainer = func(services InstallerUseServices) Tool {

	return Tool{
		FileName: "port-forwarder-container",
		CalculateDownloadURL: func(containerArch string) (string, error) {
			latestTagName, err := services.GetLatestReleaseFromGitHub("mikoto2000", "port-forwarder")
			if err != nil {
				return "", err
			}

			pattern := "pattern"
			var tmpl *template.Template
			if containerArch == "amd64" {
				tmpl, err = template.New(pattern).Parse(downloadURLPortForwarderContainerAmd64Pattern)
			} else if containerArch == "aarch64" {
				tmpl, err = template.New(pattern).Parse(downloadURLPortForwarderContainerArm64Pattern)
			} else {
				return "", errors.New("port-forwarder-container download error: Unknown arch")
			}
			if err != nil {
				return "", err
			}

			tmplParams := map[string]string{"TagName": latestTagName}
			var downloadURL strings.Builder
			err = tmpl.Execute(&downloadURL, tmplParams)
			if err != nil {
				panic(err)
			}
			return downloadURL.String(), nil
		},
		installFunc: func(downloadFunc func(downloadURL string, destPath string) error, downloadURL string, filePath string, containerArch string) (string, error) {
			return simpleInstall(downloadFunc, downloadURL, filePath)
		},
		DownloadFunc: download,
	}
}

コンテナ上で起動する port-forwarder のツール情報

View Source
var VIM = func(service InstallerUseServices) Tool {
	return Tool{
		FileName: "vim",
		CalculateDownloadURL: func(containerArch string) (string, error) {
			if containerArch == "amd64" || containerArch == "x86_64" {
				if runtime.GOOS != "darwin" {
					latestTagName, err := service.GetLatestReleaseFromGitHub("vim", "vim-appimage")
					if err != nil {
						return "", err
					}

					pattern := "pattern"
					tmpl, err := template.New(pattern).Parse(vimAppImageDownloadURLPattern)
					if err != nil {
						return "", err
					}

					tmplParams := map[string]string{"TagName": latestTagName}
					var downloadURL strings.Builder
					err = tmpl.Execute(&downloadURL, tmplParams)
					if err != nil {
						return "", err
					}
					return downloadURL.String(), nil
				} else {
					latestTagName, err := service.GetLatestReleaseFromGitHub("vim", "vim-appimage")
					if err != nil {
						return "", err
					}

					pattern := "pattern"
					tmpl, err := template.New(pattern).Parse(vimX64StaticDownloadURLPattern)
					if err != nil {
						return "", err
					}

					tmplParams := map[string]string{"TagName": latestTagName}
					var downloadURL strings.Builder
					err = tmpl.Execute(&downloadURL, tmplParams)
					if err != nil {
						return "", err
					}
					return downloadURL.String(), nil
				}
			} else if containerArch == "arm64" || containerArch == "aarch64" {
				latestTagName, err := service.GetLatestReleaseFromGitHub("mikoto2000", "vim-static")
				if err != nil {
					return "", err
				}

				pattern := "pattern"
				tmpl, err := template.New(pattern).Parse(vimArmStaticDownloadURLPattern)
				if err != nil {
					return "", err
				}

				tmplParams := map[string]string{"TagName": latestTagName}
				var downloadURL strings.Builder
				err = tmpl.Execute(&downloadURL, tmplParams)
				if err != nil {
					return "", err
				}
				return downloadURL.String(), nil
			} else {
				return "", errors.New("Unknown Architecture")
			}
		},
		installFunc: func(downloadFunc func(downloadURL string, destPath string) error, downloadURL string, filePath string, containerArch string) (string, error) {
			return simpleInstall(downloadFunc, downloadURL, filePath)
		},
		DownloadFunc: download,
	}
}

Vim のツール情報

Functions

func CreateSendToTCP

func CreateSendToTCP(configDir string, port int, noCdr bool, nvim bool) (string, error)

func GetProcessInfo

func GetProcessInfo(cdrOutput string) (int, string, int, error)

func InstallDevcontainerTools

func InstallDevcontainerTools(installDir string) (string, error)

devcontainer サブコマンド用のツールインストール

func InstallDownTools

func InstallDownTools(installDir string) (string, error)

Down サブコマンド用のツールインストール

func InstallRunTools

func InstallRunTools(installDir string, nvim bool) (string, error)

run サブコマンド用のツールインストール

func InstallStartTools

func InstallStartTools(services InstallerUseServices, installDir string) (string, string, error)

start サブコマンド用のツールインストール 戻り値は、 devcontainerPath, cdrPath, error

func InstallStopTools

func InstallStopTools(installDir string) (string, error)

Stop サブコマンド用のツールインストール

func InstallTemplatesTools

func InstallTemplatesTools(installDir string) (string, error)

Templates サブコマンド用のツールインストール

func InstallVim added in v3.3.0

func InstallVim(installDir string, nvim bool, containerArch string) (string, error)

func KillCdr

func KillCdr(pid int) error

func RunCdr

func RunCdr(cdrPath string, configFileDir string) (int, int, error)

clipboard-data-receiver を起動 pid ファイル、 port ファイルを configFileDir へ保存する。

func SelfUpdate

func SelfUpdate(services InstallerUseServices) error

SelfUpdate downloads the latest release of devcontainer.vim from GitHub and replaces the current binary

Types

type CdrOutput

type CdrOutput struct {
	Pid     int    `json:"pid"`
	Address string `json:"address"`
	Port    int    `json:"port"`
}

`clipboard-data-receiver` コマンドの標準出力スキーマ

Example:

{
  "pid": 1234,
  "address": "0.0.0.0",
  "port": 5678
}

func UnmarshalCdrOutput

func UnmarshalCdrOutput(data []byte) (CdrOutput, error)

type DefaultInstallerUseServices added in v3.4.3

type DefaultInstallerUseServices struct{}

func (DefaultInstallerUseServices) Download added in v3.4.3

func (s DefaultInstallerUseServices) Download(downloadURL string, destPath string) error

func (DefaultInstallerUseServices) GetLatestReleaseFromGitHub added in v3.4.3

func (s DefaultInstallerUseServices) GetLatestReleaseFromGitHub(owner string, repository string) (string, error)

type InstallerUseServices added in v3.4.3

type InstallerUseServices interface {
	GetLatestReleaseFromGitHub(owner string, repository string) (string, error)
	Download(downloadURL string, destPath string) error
}

type ProgressWriter

type ProgressWriter struct {
	Total   int64
	Current int64
}

進捗表示用構造体

func (*ProgressWriter) Write

func (p *ProgressWriter) Write(data []byte) (int, error)

type Tool

type Tool struct {
	FileName             string
	CalculateDownloadURL func(containerArch string) (string, error)

	DownloadFunc func(downloadURL string, destPath string) error
	// contains filtered or unexported fields
}

ツール情報

func (Tool) Install

func (t Tool) Install(installDir string, containerArch string, override bool) (string, error)

ツールのインストールを実行

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL