This commit is contained in:
Mars 2024-06-08 04:57:32 -04:00
parent 4ea6801df2
commit a743cdabe5
Signed by: pupbrained
GPG key ID: 874E22DF2F9DFCB5
9 changed files with 32 additions and 70 deletions

View file

@ -1,5 +1,8 @@
--- ---
AlignConsecutiveAssignments: true AlignConsecutiveAssignments: true
AllowShortBlocksOnASingleLine: Always
AllowShortCompoundRequirementOnASingleLine: true
AllowShortIfStatementsOnASingleLine: WithoutElse
AllowShortLoopsOnASingleLine: true AllowShortLoopsOnASingleLine: true
BasedOnStyle: Chromium BasedOnStyle: Chromium
IndentAccessModifiers: false IndentAccessModifiers: false

View file

@ -63,7 +63,9 @@
glib glib
tomlplusplus tomlplusplus
yyjson yyjson
]; ]
++ linuxPkgs
++ darwinPkgs;
linuxPkgs = nixpkgs.lib.optionals stdenv.isLinux (with pkgs; [ linuxPkgs = nixpkgs.lib.optionals stdenv.isLinux (with pkgs; [
systemdLibs systemdLibs
@ -78,7 +80,7 @@
in in
with pkgs; { with pkgs; {
packages = rec { packages = rec {
draconis-cpp = stdenv.mkDerivation { draconisplusplus = stdenv.mkDerivation {
name = "draconis++"; name = "draconis++";
version = "0.1.0"; version = "0.1.0";
src = self; src = self;
@ -89,17 +91,7 @@
pkg-config pkg-config
]; ];
propagatedBuildInputs = [ buildInputs = deps;
tomlplusplus
];
buildInputs =
[
coost
fmt
]
++ darwinPkgs
++ linuxPkgs;
configurePhase = '' configurePhase = ''
meson setup build meson setup build
@ -115,7 +107,7 @@
''; '';
}; };
default = draconis-cpp; default = draconisplusplus;
}; };
formatter = alejandra; formatter = alejandra;
@ -126,8 +118,8 @@
alejandra alejandra
bear bear
clang-tools_18 clang-tools_18
meson
lldb lldb
meson
ninja ninja
pkg-config pkg-config
unzip unzip
@ -136,9 +128,7 @@
(writeScriptBin "clean" "meson setup build --wipe") (writeScriptBin "clean" "meson setup build --wipe")
(writeScriptBin "run" "meson compile -C build && build/draconis++") (writeScriptBin "run" "meson compile -C build && build/draconis++")
] ]
++ deps ++ deps;
++ darwinPkgs
++ linuxPkgs;
name = "C++"; name = "C++";
}; };

View file

@ -53,9 +53,7 @@ add_project_arguments(
source_file_names = [ source_file_names = [
'src/main.cpp', 'src/main.cpp',
'src/os/os.h',
'src/config/config.cpp', 'src/config/config.cpp',
'src/config/config.h',
'src/config/weather.cpp' 'src/config/weather.cpp'
] ]
@ -66,8 +64,7 @@ endif
if host_machine.system() == 'darwin' if host_machine.system() == 'darwin'
source_file_names += [ source_file_names += [
'src/os/macos.cpp', 'src/os/macos.cpp',
'src/os/macos/NowPlayingBridge.h', 'src/os/macos/now_playing_bridge.mm',
'src/os/macos/NowPlayingBridge.mm'
] ]
endif endif
@ -84,23 +81,10 @@ libcurl = dependency('libcurl', required: false)
tomlpp = dependency('tomlplusplus', required: false) tomlpp = dependency('tomlplusplus', required: false)
yyjson = dependency('yyjson', required: false) yyjson = dependency('yyjson', required: false)
if not fmt.found()
fmt = cpp.find_library('fmt', required: true)
endif
if not libcurl.found()
libcurl = cpp.find_library('curl', required: true)
endif
if not tomlpp.found()
tomlpp = cpp.find_library('tomlplusplus', required: true)
endif
if not yyjson.found()
yyjson = cpp.find_library('yyjson', required: true)
endif
foreach dep : [fmt, libcurl, tomlpp, yyjson] foreach dep : [fmt, libcurl, tomlpp, yyjson]
if not dep.found()
dep = cpp.find_library(dep.name(), required: true)
endif
deps += dep deps += dep
endforeach endforeach

View file

@ -12,8 +12,7 @@ Result<WeatherOutput> ReadCacheFromFile() {
const std::string cacheFile = "/tmp/weather_cache.json"; const std::string cacheFile = "/tmp/weather_cache.json";
std::ifstream ifs(cacheFile); std::ifstream ifs(cacheFile);
if (!ifs.is_open()) if (!ifs.is_open()) return Error("Cache file not found.");
return Error("Cache file not found.");
fmt::println("Reading from cache file..."); fmt::println("Reading from cache file...");
@ -25,9 +24,7 @@ Result<WeatherOutput> ReadCacheFromFile() {
buf << ifs.rdbuf(); buf << ifs.rdbuf();
val = rfl::json::read<WeatherOutput>(buf.str()).value(); val = rfl::json::read<WeatherOutput>(buf.str()).value();
} catch (Error& e) { } catch (Error& e) { return e; }
return e;
}
fmt::println("Successfully read from cache file."); fmt::println("Successfully read from cache file.");
@ -40,8 +37,7 @@ Result<> WriteCacheToFile(const WeatherOutput& data) {
fmt::println("Writing to cache file..."); fmt::println("Writing to cache file...");
std::ofstream ofs(cacheFile); std::ofstream ofs(cacheFile);
if (!ofs.is_open()) if (!ofs.is_open()) return Error("Failed to open cache file for writing.");
return Error("Failed to open cache file for writing.");
ofs << rfl::json::write(data); ofs << rfl::json::write(data);

View file

@ -28,23 +28,16 @@ struct fmt::formatter<BytesToGiB> : formatter<double> {
enum DateNum { Ones, Twos, Threes, Default }; enum DateNum { Ones, Twos, Threes, Default };
DateNum ParseDate(string const& input) { DateNum ParseDate(string const& input) {
if (input == "1" || input == "21" || input == "31") if (input == "1" || input == "21" || input == "31") return Ones;
return Ones; if (input == "2" || input == "22") return Twos;
if (input == "3" || input == "23") return Threes;
if (input == "2" || input == "22")
return Twos;
if (input == "3" || input == "23")
return Threes;
return Default; return Default;
} }
int main() { int main() {
const Config& config = Config::getInstance(); const Config& config = Config::getInstance();
if (config.getNowPlaying().getEnabled()) if (config.getNowPlaying().getEnabled()) fmt::println("{}", GetNowPlaying());
fmt::println("{}", GetNowPlaying());
fmt::println("Hello {}!", config.getGeneral().getName()); fmt::println("Hello {}!", config.getGeneral().getName());

View file

@ -1,6 +1,5 @@
#ifdef __linux__ #ifdef __linux__
#include <fmt/core.h>
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#include <sdbus-c++/sdbus-c++.h> #include <sdbus-c++/sdbus-c++.h>
@ -70,8 +69,7 @@ std::vector<std::string> GetMprisPlayers(sdbus::IConnection& connection) {
} }
std::string GetActivePlayer(const std::vector<std::string>& mprisPlayers) { std::string GetActivePlayer(const std::vector<std::string>& mprisPlayers) {
if (!mprisPlayers.empty()) if (!mprisPlayers.empty()) return mprisPlayers.front();
return mprisPlayers.front();
return ""; return "";
} }
@ -83,13 +81,11 @@ std::string GetNowPlaying() {
std::vector<std::string> mprisPlayers = GetMprisPlayers(*connection); std::vector<std::string> mprisPlayers = GetMprisPlayers(*connection);
if (mprisPlayers.empty()) if (mprisPlayers.empty()) return "";
return "";
std::string activePlayer = GetActivePlayer(mprisPlayers); std::string activePlayer = GetActivePlayer(mprisPlayers);
if (activePlayer.empty()) if (activePlayer.empty()) return "";
return "";
std::unique_ptr<sdbus::IProxy> playerProxy = std::unique_ptr<sdbus::IProxy> playerProxy =
sdbus::createProxy(*connection, activePlayer, PLAYER_OBJECT_PATH); sdbus::createProxy(*connection, activePlayer, PLAYER_OBJECT_PATH);

View file

@ -1,14 +1,13 @@
#ifdef __APPLE__ #ifdef __APPLE__
#include <string>
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include "macos/NowPlayingBridge.h" #include "macos/now_playing_bridge.h"
#include "os.h" #include "os.h"
u64 GetMemInfo() { u64 GetMemInfo() {
uint64_t mem = 0; u64 mem = 0;
size_t size = sizeof(mem); usize size = sizeof(mem);
sysctlbyname("hw.memsize", &mem, &size, nullptr, 0); sysctlbyname("hw.memsize", &mem, &size, nullptr, 0);
@ -16,8 +15,9 @@ u64 GetMemInfo() {
} }
std::string GetNowPlaying() { std::string GetNowPlaying() {
if (const char* title = GetCurrentPlayingTitle()) if (const char* title = GetCurrentPlayingTitle();
return title; const char* artist = GetCurrentPlayingArtist())
return "Now Playing: " + std::string(artist) + " - " + std::string(title);
return "No song playing"; return "No song playing";
} }

View file

@ -1,6 +1,6 @@
#ifdef __APPLE__ #ifdef __APPLE__
#import "NowPlayingBridge.h" #import "now_playing_bridge.h"
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <dispatch/dispatch.h> #import <dispatch/dispatch.h>
#import <objc/runtime.h> #import <objc/runtime.h>