nixpkgs/pkgs/by-name/ya/yandex-cloud/package.nix
2024-09-24 23:28:57 +02:00

99 lines
2.6 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
lib,
stdenv,
fetchurl,
makeBinaryWrapper,
installShellFiles,
buildPackages,
withShellCompletions ? stdenv.hostPlatform.emulatorAvailable buildPackages,
# update script
writers,
python3Packages,
nix,
# tests
testers,
}:
let
pname = "yandex-cloud";
sources = lib.importJSON ./sources.json;
inherit (sources) version binaries;
in
stdenv.mkDerivation (finalAttrs: {
inherit pname version;
src = fetchurl binaries.${stdenv.hostPlatform.system};
dontUnpack = true;
strictDeps = true;
nativeBuildInputs = [
installShellFiles
makeBinaryWrapper
];
emulator = lib.optionalString (
withShellCompletions && !stdenv.buildPlatform.canExecute stdenv.hostPlatform
) (stdenv.hostPlatform.emulator buildPackages);
installPhase =
''
runHook preInstall
mkdir -p -- "$out/bin"
cp -- "$src" "$out/bin/yc"
chmod +x -- "$out/bin/yc"
''
+ lib.optionalString withShellCompletions ''
for shell in bash zsh; do
''${emulator:+"$emulator"} "$out/bin/yc" completion $shell >yc.$shell
installShellCompletion yc.$shell
done
''
+ ''
makeWrapper "$out/bin/yc" "$out/bin/docker-credential-yc" \
--add-flags --no-user-output \
--add-flags container \
--add-flags docker-credential
runHook postInstall
'';
passthru = {
updateScript = writers.writePython3 "${pname}-updater" {
libraries = with python3Packages; [ requests ];
makeWrapperArgs = [
"--prefix"
"PATH"
":"
(lib.makeBinPath [ nix ])
];
} ./update.py;
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
};
meta = {
description = "Command line interface that helps you interact with Yandex Cloud services";
homepage = "https://cloud.yandex/docs/cli";
changelog = "https://cloud.yandex/docs/cli/release-notes#version${version}";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.tie ];
platforms = [
"aarch64-darwin"
"x86_64-darwin"
"aarch64-linux"
"x86_64-linux"
# Built with GO386=sse2.
#
# Unfortunately, we dont have anything about SSE2 support in lib.systems,
# so we cant mark this a broken or bad platform if host platform does not
# support SSE2. See also https://github.com/NixOS/nixpkgs/issues/132217
#
# Perhaps it would be possible to mark it as broken if platform declares
# GO386=softfloat once https://github.com/NixOS/nixpkgs/pull/256761 is
# ready and merged.
"i686-linux"
];
mainProgram = "yc";
};
})