From 7a78a9809e77e1b084ff9fe5cb25f438f57aa798 Mon Sep 17 00:00:00 2001 From: FreeSlave Date: Thu, 1 Oct 2015 11:56:48 +0300 Subject: [PATCH] Add coveralls badge. Update desktoptest example --- .travis.yml | 2 ++ README.md | 10 +++++++- examples/desktoptest/source/app.d | 39 +++++++++++++++++++++++++------ 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 309764a..1751521 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,3 +14,5 @@ matrix: script: - dub test --compiler=${DC} + - dub build desktopfile:desktoptest --compiler=${DC} + - dub build desktopfile:desktoputil --compiler=${DC} \ No newline at end of file diff --git a/README.md b/README.md index 8efe61c..8cde119 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ D library for working with *.desktop* files. Desktop entries in Freedesktop world are akin to shortcuts from Windows world (.lnk files). -[![Build Status](https://travis-ci.org/MyLittleRobo/desktopfile.svg?branch=master)](https://travis-ci.org/MyLittleRobo/desktopfile) +[![Build Status](https://travis-ci.org/MyLittleRobo/desktopfile.svg?branch=master)](https://travis-ci.org/MyLittleRobo/desktopfile) [![Coverage Status](https://coveralls.io/repos/MyLittleRobo/desktopfile/badge.svg?branch=master&service=github)](https://coveralls.io/github/MyLittleRobo/desktopfile?branch=master) The most of desktop environments on Linux and BSD flavors follows [Desktop Entry Specification](http://standards.freedesktop.org/desktop-entry-spec/latest/) today. The goal of **desktopfile** library is to provide implementation of this specification in D programming language. @@ -75,3 +75,11 @@ Use this example to check if the desktopfile library can parse all .desktop file To print all directories examined by desktoptest to stdout, build it in non-release mode: dub run desktopfile:desktoptest + +Start desktoptest on specified directories: + + dub run desktopfile:desktoptest -- /path/to/applications /anotherpath/to/applications + # Example using cmd on Windows: + dub run desktopfile:desktoptest -- "%SYSTEMDRIVE%\ProgramData\KDE\share\applications" "%APPDATA%\.kde\share" + + \ No newline at end of file diff --git a/examples/desktoptest/source/app.d b/examples/desktoptest/source/app.d index f5b96cc..91b102f 100644 --- a/examples/desktoptest/source/app.d +++ b/examples/desktoptest/source/app.d @@ -5,17 +5,42 @@ import std.file; import std.path; import std.process; -import standardpaths; import desktopfile; -string[] desktopDirs() -{ - return applicationsPaths() ~ writablePath(StandardPath.Desktop); -} - void main(string[] args) { - foreach(dir; desktopDirs().filter!(s => s.exists && s.isDir())) { + string[] desktopDirs; + + version(OSX) {} else version(Posix) { + import standardpaths; + + desktopDirs = applicationsPaths() ~ writablePath(StandardPath.Desktop); + } else version(Windows) { + try { + auto root = environment.get("SYSTEMDRIVE", "C:"); + auto kdeDir = root ~ `\ProgramData\KDE\share\applications`; + writeln(kdeDir); + if (kdeDir.isDir) { + desktopDirs = [kdeDir]; + } + } catch(Exception e) { + + } + } + + if (args.length > 1) { + desktopDirs = args[1..$]; + } + + if (!desktopDirs.length) { + writeln("No desktop directories given nor could be detected"); + writefln("Usage: %s [DIR]...", args[0]); + return; + } + + writefln("Using directories: %-(%s, %)", desktopDirs); + + foreach(dir; desktopDirs.filter!(s => s.exists && s.isDir())) { foreach(entry; dir.dirEntries(SpanMode.depth).filter!(a => a.isFile() && a.extension == ".desktop")) { debug writeln(entry); try {