mirror of
https://codeberg.org/icewind/palantir.git
synced 2026-06-03 18:24:08 +02:00
more ci work, clippy
This commit is contained in:
parent
73d4980fad
commit
f72f4689e6
8 changed files with 83 additions and 48 deletions
45
.github/workflows/nix.yaml
vendored
45
.github/workflows/nix.yaml
vendored
|
|
@ -4,18 +4,47 @@ on:
|
||||||
push:
|
push:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: cachix/install-nix-action@v20
|
||||||
|
- uses: icewind1991/attic-action@v1
|
||||||
|
with:
|
||||||
|
name: ci
|
||||||
|
instance: https://cache.icewind.me
|
||||||
|
authToken: '${{ secrets.ATTIC_TOKEN }}'
|
||||||
|
- run: nix build .#check
|
||||||
|
|
||||||
|
clippy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: check
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: cachix/install-nix-action@v20
|
||||||
|
- uses: icewind1991/attic-action@v1
|
||||||
|
with:
|
||||||
|
name: ci
|
||||||
|
instance: https://cache.icewind.me
|
||||||
|
authToken: '${{ secrets.ATTIC_TOKEN }}'
|
||||||
|
- run: nix build .#clippy
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: cachix/install-nix-action@v20
|
||||||
|
- id: set-matrix
|
||||||
|
run: echo "matrix={\"target\":$(nix eval --json ".#targets.x86_64-linux")}" | tee $GITHUB_OUTPUT
|
||||||
|
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
needs: [check, matrix]
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix: ${{fromJson(needs.matrix.outputs.matrix)}}
|
||||||
target:
|
|
||||||
- x86_64-unknown-linux-gnu
|
|
||||||
- x86_64-pc-windows-gnu
|
|
||||||
- x86_64-unknown-linux-musl
|
|
||||||
- i686-unknown-linux-musl
|
|
||||||
- armv7-unknown-linux-musleabihf
|
|
||||||
- aarch64-unknown-linux-musl
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: cachix/install-nix-action@v20
|
- uses: cachix/install-nix-action@v20
|
||||||
|
|
|
||||||
11
flake.lock
generated
11
flake.lock
generated
|
|
@ -7,16 +7,17 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1679567394,
|
"lastModified": 1686242667,
|
||||||
"narHash": "sha256-ZvLuzPeARDLiQUt6zSZFGOs+HZmE+3g4QURc8mkBsfM=",
|
"narHash": "sha256-I7Kwp06WX/9E+rEND1i1wjdKQQm3XiDxYOyNK9fuJu0=",
|
||||||
"owner": "nix-community",
|
"owner": "icewind1991",
|
||||||
"repo": "naersk",
|
"repo": "naersk",
|
||||||
"rev": "88cd22380154a2c36799fe8098888f0f59861a15",
|
"rev": "6d245a3bbb2ee31ec726bb57b9a8b206302e7110",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "icewind1991",
|
||||||
"repo": "naersk",
|
"repo": "naersk",
|
||||||
|
"rev": "6d245a3bbb2ee31ec726bb57b9a8b206302e7110",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
43
flake.nix
43
flake.nix
|
|
@ -2,7 +2,7 @@
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-23.05";
|
nixpkgs.url = "nixpkgs/nixos-23.05";
|
||||||
utils.url = "github:numtide/flake-utils";
|
utils.url = "github:numtide/flake-utils";
|
||||||
naersk.url = "github:nix-community/naersk";
|
naersk.url = "github:icewind1991/naersk?rev=6d245a3bbb2ee31ec726bb57b9a8b206302e7110";
|
||||||
naersk.inputs.nixpkgs.follows = "nixpkgs";
|
naersk.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system overlays;
|
inherit system overlays;
|
||||||
};
|
};
|
||||||
|
lib = pkgs.lib;
|
||||||
|
|
||||||
pkgs-cross-mingw = import nixpkgs {
|
pkgs-cross-mingw = import nixpkgs {
|
||||||
crossSystem = {
|
crossSystem = {
|
||||||
|
|
@ -72,10 +73,14 @@
|
||||||
echo 'SUBSYSTEM=="powercap", ACTION=="change", ENV{TRIGGER}!="none", RUN+="${pkgs.coreutils-full}/bin/chgrp -R powermonitoring /sys%p", RUN+="${pkgs.coreutils-full}/bin/chmod -R g=u /sys%p"' >> $out/lib/udev/rules.d/51-palantir.rules
|
echo 'SUBSYSTEM=="powercap", ACTION=="change", ENV{TRIGGER}!="none", RUN+="${pkgs.coreutils-full}/bin/chgrp -R powermonitoring /sys%p", RUN+="${pkgs.coreutils-full}/bin/chmod -R g=u /sys%p"' >> $out/lib/udev/rules.d/51-palantir.rules
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildWindows = target: naersk'.buildPackage {
|
src = lib.sources.sourceByRegex (lib.cleanSource ./.) ["Cargo.*" "(src|benches)(/.*)?"];
|
||||||
pname = "palantir";
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
|
nearskOpt = {
|
||||||
|
pname = "palantir";
|
||||||
|
root = src;
|
||||||
|
};
|
||||||
|
|
||||||
|
buildWindows = target: naersk'.buildPackage (nearskOpt // {
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
depsBuildBuild = with pkgs; [
|
depsBuildBuild = with pkgs; [
|
||||||
mingw_w64_cc
|
mingw_w64_cc
|
||||||
|
|
@ -86,12 +91,9 @@
|
||||||
overrideMain = args: args // { buildInputs = [ windows.pthreads ]; };
|
overrideMain = args: args // { buildInputs = [ windows.pthreads ]; };
|
||||||
|
|
||||||
CARGO_BUILD_TARGET = target;
|
CARGO_BUILD_TARGET = target;
|
||||||
};
|
});
|
||||||
|
|
||||||
buildLinux = target: naersk'.buildPackage ({
|
|
||||||
pname = "palantir";
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
|
buildLinux = target: naersk'.buildPackage (nearskOpt // {
|
||||||
postInstall = addUdev;
|
postInstall = addUdev;
|
||||||
|
|
||||||
CARGO_BUILD_TARGET = target;
|
CARGO_BUILD_TARGET = target;
|
||||||
|
|
@ -99,21 +101,28 @@
|
||||||
buildAny = target: if (nixpkgs.lib.strings.hasInfix "windows" target) then (buildWindows target) else (buildLinux target);
|
buildAny = target: if (nixpkgs.lib.strings.hasInfix "windows" target) then (buildWindows target) else (buildLinux target);
|
||||||
in rec {
|
in rec {
|
||||||
# `nix build`
|
# `nix build`
|
||||||
packages = nixpkgs.lib.attrsets.genAttrs targets buildAny;
|
packages = nixpkgs.lib.attrsets.genAttrs targets buildAny // rec {
|
||||||
defaultPackage = naersk'.buildPackage {
|
palantir = naersk'.buildPackage (nearskOpt // {
|
||||||
pname = "palantir";
|
postInstall = addUdev;
|
||||||
src = ./.;
|
});
|
||||||
postInstall = addUdev;
|
check = naersk'.buildPackage (nearskOpt // {
|
||||||
};
|
mode = "check";
|
||||||
|
});
|
||||||
|
clippy = naersk'.buildPackage (nearskOpt // {
|
||||||
|
mode = "clippy";
|
||||||
|
});
|
||||||
|
default = palantir;
|
||||||
|
};
|
||||||
|
|
||||||
# `nix run`
|
|
||||||
apps.palantir = utils.lib.mkApp {
|
apps.palantir = utils.lib.mkApp {
|
||||||
drv = packages.palantir;
|
drv = packages.palantir;
|
||||||
};
|
};
|
||||||
defaultApp = apps.palantir;
|
defaultApp = apps.palantir;
|
||||||
|
|
||||||
|
inherit targets;
|
||||||
|
|
||||||
# `nix develop`
|
# `nix develop`
|
||||||
devShell = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
nativeBuildInputs = with pkgs; [
|
nativeBuildInputs = with pkgs; [
|
||||||
toolchain
|
toolchain
|
||||||
bacon
|
bacon
|
||||||
|
|
|
||||||
|
|
@ -105,5 +105,5 @@ pub async fn stat(docker: Docker) -> Result<impl Stream<Item = Container>> {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<FuturesUnordered<_>>()
|
.collect::<FuturesUnordered<_>>()
|
||||||
.filter_map(|opt| ready(opt)))
|
.filter_map(ready))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -126,10 +126,12 @@ impl Iterator for DiskUsageParser<'_> {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let mount_point = parts.next()?;
|
let mount_point = parts.next()?;
|
||||||
let stat = match statvfs(&mount_point) {
|
let stat = match statvfs(mount_point) {
|
||||||
Ok(stat) => stat,
|
Ok(stat) => stat,
|
||||||
Err(e) => return Some(Err(e)),
|
Err(e) => return Some(Err(e)),
|
||||||
};
|
};
|
||||||
|
// cast is needed on 32bit platforms
|
||||||
|
#[allow(clippy::unnecessary_cast)]
|
||||||
Some(Ok(DiskUsage {
|
Some(Ok(DiskUsage {
|
||||||
name: mount_point.to_string(),
|
name: mount_point.to_string(),
|
||||||
size: stat.f_blocks * stat.f_frsize as u64,
|
size: stat.f_blocks * stat.f_frsize as u64,
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ pub fn pools() -> impl Iterator<Item = DiskUsage> {
|
||||||
|
|
||||||
fn zpool_command() -> Result<String> {
|
fn zpool_command() -> Result<String> {
|
||||||
let mut z = Command::new("zpool");
|
let mut z = Command::new("zpool");
|
||||||
z.args(&["list", "-p", "-H", "-o", "name,size,free"]);
|
z.args(["list", "-p", "-H", "-o", "name,size,free"]);
|
||||||
let out = z.output()?;
|
let out = z.output()?;
|
||||||
if out.status.success() {
|
if out.status.success() {
|
||||||
Ok(String::from_utf8(out.stdout)?)
|
Ok(String::from_utf8(out.stdout)?)
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,8 @@ pub fn get_metrics(sensors: &Sensors) -> Result<String> {
|
||||||
let pools = pools();
|
let pools = pools();
|
||||||
let mut result = String::with_capacity(256);
|
let mut result = String::with_capacity(256);
|
||||||
|
|
||||||
cpu.write(&mut result, &hostname);
|
cpu.write(&mut result, hostname);
|
||||||
memory.write(&mut result, &hostname);
|
memory.write(&mut result, hostname);
|
||||||
|
|
||||||
for pool in pools {
|
for pool in pools {
|
||||||
writeln!(
|
writeln!(
|
||||||
|
|
@ -78,21 +78,15 @@ pub fn get_metrics(sensors: &Sensors) -> Result<String> {
|
||||||
)
|
)
|
||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
for network in networks {
|
for network in networks.flatten() {
|
||||||
if let Ok(network) = network {
|
network.write(&mut result, hostname);
|
||||||
network.write(&mut result, &hostname);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for disk in disks {
|
for disk in disks.flatten() {
|
||||||
if let Ok(disk) = disk {
|
disk.write(&mut result, hostname);
|
||||||
disk.write(&mut result, hostname);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for disk in disk_usage {
|
for disk in disk_usage.flatten() {
|
||||||
if let Ok(disk) = disk {
|
disk.write(&mut result, hostname);
|
||||||
disk.write(&mut result, hostname);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (label, temp) in temperatures {
|
for (label, temp) in temperatures {
|
||||||
if temp != 0.0 {
|
if temp != 0.0 {
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ async fn setup_mdns(hostname: String, port: u16) {
|
||||||
"_prometheus-http._tcp".into(),
|
"_prometheus-http._tcp".into(),
|
||||||
hostname,
|
hostname,
|
||||||
port,
|
port,
|
||||||
&[&"/metrics"],
|
&["/metrics"],
|
||||||
);
|
);
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue