118 lines
4.7 KiB
Lua
118 lines
4.7 KiB
Lua
local w = require('tables').wrap
|
|
local path = require('path')
|
|
|
|
local packages = function (token)
|
|
return w(clink.find_dirs(clink.get_env('chocolateyinstall')..'/lib/*'))
|
|
:filter(function(dir)
|
|
return path.is_real_dir(dir) and clink.is_match(token, dir)
|
|
end)
|
|
:map(function (dir)
|
|
local package_name = dir:match("^(%w%.*)%.")
|
|
return package_name or dir
|
|
end)
|
|
end
|
|
|
|
local parser = clink.arg.new_parser
|
|
|
|
local clist_parser = parser(
|
|
"-a", "--all", "--allversions", "--all-versions",
|
|
"-i", "--includeprograms", "--include-programs",
|
|
"-l", "--lo", "--localonly", "--local-only",
|
|
"-s", "--source".. parser({"windowsfeatures", "webpi"}),
|
|
"-u", "--user",
|
|
"-p", "--password")
|
|
|
|
local cinst_parser = parser(
|
|
-- TODO: Path to packages config.
|
|
-- See https://github.com/chocolatey/choco/wiki/CommandsInstall
|
|
{"all", "packages.config"},
|
|
"--ia", "--installargs", "--installarguments", "--install-arguments",
|
|
"-i", "--ignoredependencies", "--ignore-dependencies",
|
|
"-x", "--forcedependencies", "--force-dependencies",
|
|
"-m", "--sxs", "--sidebyside", "--side-by-side",
|
|
"--allowmultiple", "--allow-multiple", "--allowmultipleversions", "--allow-multiple-versions",
|
|
"-n", "--skippowershell", "--skip-powershell",
|
|
"--notsilent", "--not-silent",
|
|
"-o", "--override", "--overrideargs", "--overridearguments", "--override-arguments",
|
|
"--params", "--parameters", "--pkgparameters", "--packageparameters", "--package-parameters",
|
|
"--pre", "--prerelease",
|
|
"-s" .. parser({"ruby", "webpi", "cygwin", "windowsfeatures", "python"}),
|
|
"--source" .. parser({"ruby", "webpi", "cygwin", "windowsfeatures", "python"}),
|
|
"--version",
|
|
"--x86", "--forcex86",
|
|
"-u", "--user",
|
|
"-p", "--password")
|
|
|
|
local cuninst_parser = parser({packages},
|
|
"-a", "--all", "--allversions", "--all-versions",
|
|
"-x", "--forcedependencies", "--force-dependencies",
|
|
"--ia", "--installargs", "--installarguments", "--install-arguments",
|
|
"-n", "--skippowershell", "--skip-powershell",
|
|
"--notsilent", "--not-silent",
|
|
"-o", "--override", "--overrideargs", "--overridearguments", "--override-arguments",
|
|
"--params", "--parameters", "--pkgparameters", "--packageparameters", "--package-parameters",
|
|
"--version")
|
|
|
|
local cup_parser = parser(
|
|
--TODO: complete locally installed packages
|
|
{packages, "all"},
|
|
"--ia", "--installargs", "--installarguments", "--install-arguments",
|
|
"-i", "--ignoredependencies", "--ignore-dependencies",
|
|
"-m", "--sxs", "--sidebyside", "--side-by-side",
|
|
"--allowmultiple", "--allow-multiple", "--allowmultipleversions", "--allow-multiple-versions",
|
|
"-n", "--skippowershell", "--skip-powershell",
|
|
"--notsilent", "--not-silent",
|
|
"-o", "--override", "--overrideargs", "--overridearguments", "--override-arguments",
|
|
"--params", "--parameters", "--pkgparameters", "--packageparameters", "--package-parameters",
|
|
"--pre", "--prerelease",
|
|
"-s" .. parser({"ruby", "webpi", "cygwin", "windowsfeatures", "python"}),
|
|
"--source" .. parser({"ruby", "webpi", "cygwin", "windowsfeatures", "python"}),
|
|
"--version",
|
|
"--x86", "--forcex86",
|
|
"-u", "--user",
|
|
"-p", "--password"):loop(1)
|
|
|
|
local sources_parser = parser({
|
|
"add"..parser(
|
|
"-n", "--name",
|
|
"-u", "--user",
|
|
"-p", "--password",
|
|
"-s", "-source"),
|
|
"disable"..parser("-n", "--name"),
|
|
"enable"..parser("-n", "--name"),
|
|
"list",
|
|
"remove"..parser("-n", "--name")})
|
|
|
|
local chocolatey_parser = parser({
|
|
--TODO: https://github.com/chocolatey/choco/wiki/CommandsReference
|
|
-- Default Options and Switches
|
|
-- new - generates files necessary for a Chocolatey package
|
|
-- pack - packages up a nuspec to a compiled nupkg
|
|
-- push - pushes a compiled nupkg
|
|
"apikey"..parser("-s", "--source", "-k", "--key", "--apikey", "--api-key"),
|
|
"setapikey"..parser("-s", "--source", "-k", "--key", "--apikey", "--api-key"),
|
|
"feature"..parser({
|
|
"list",
|
|
"disable"..parser("-n", "--name"),
|
|
"enable"..parser("-n", "--name")
|
|
}),
|
|
"install"..cinst_parser,
|
|
"list"..clist_parser,
|
|
"outdated"..parser(
|
|
"-s", "--source",
|
|
"-u", "--user",
|
|
"-p", "--password"),
|
|
"pin"..parser({"add", "remove", "list"}, "-n", "--name", "--version"),
|
|
"source"..sources_parser,
|
|
"sources"..sources_parser,
|
|
"search"..clist_parser,
|
|
"upgrade"..cup_parser,
|
|
"uninstall"..cuninst_parser
|
|
}, "/?")
|
|
|
|
clink.arg.register_parser("choco", chocolatey_parser)
|
|
clink.arg.register_parser("chocolatey", chocolatey_parser)
|
|
clink.arg.register_parser("cinst", cinst_parser)
|
|
clink.arg.register_parser("clist", clist_parser)
|
|
clink.arg.register_parser("cuninst", cuninst_parser)
|
|
clink.arg.register_parser("cup", cup_parser) |