From c842c02c6f4952a01d5b273eb1f9b57df2f5479d Mon Sep 17 00:00:00 2001 From: Armin Friedl Date: Sat, 1 Aug 2020 00:35:34 +0200 Subject: [PATCH] Update README fix meson build Project cannot be built until https://github.com/mesonbuild/meson/pull/7458 lands. --- .gitignore | 2 ++ README.md | 76 ++++++++++++++++++++++++++++++++++++++++--------- doc/meson.build | 17 ++++++----- 3 files changed, 75 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index ac35e7b..0e23fc9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ build/ target/ compile_commands.json +.vscode +.ccls-cache # Created by https://www.gitignore.io/api/vim,c++,emacs,ninja # Edit at https://www.gitignore.io/?templates=vim,c++,emacs,ninja diff --git a/README.md b/README.md index a46502c..fb656ba 100644 --- a/README.md +++ b/README.md @@ -5,27 +5,26 @@ Do What I Mean Extractor ![https://xkcd.com/1168/](https://imgs.xkcd.com/comics/tar.png) -Continuing the emacs tradition of "Do What I Mean" tools, dtrx is a replacement +Continuing the emacs tradition of "Do What I Mean" tools, xwim is a replacement for the excellent, but unfortunately unmaintained, -[dtrx](https://github.com/brettcs/dtrx). `xwim` is a command line tool that +[dtrx](https://github.com/brettcs/dtrx). xwim is a command line tool that targets two problems with archives: - Command line tools for extracting archives are often archaic and differ - considerably between formats +considerably between formats - Inconsiderately packaged archives tend to spill their content over the - directory they are extracted to +directory they are extracted to # Usage Invoking `xwim` is as simple as: ```shell -xim archive.tar.gz +xwim archive.tar.gz ``` -This will extract the archive `archive.tar.gz` to the current folder. If the -archive contains a single root folder named like the archive, it is just -extracted as is. Otherwise `xwim` first creates a folder named after the archive -and extracts the contents there. +This will extract the archive to the current folder. If the archive contains a +single root folder it is just extracted as is. Otherwise xwim first creates a +folder named after the archive and extracts the contents there. # Examples @@ -41,7 +40,7 @@ archive.tar.gz -- file2.txt ``` -`xwim` will just extract the archive to the current directory. +xwim will just extract the archive to the current directory. ## Multiple files/folders in archive root @@ -59,9 +58,7 @@ archive.tar.gz archive contents there. # Supported formats -`xwim` is indifferent to the actual extraction backend. However, currently only -[libarchive](https://libarchive.org/) is supported. `xwim` supports most formats -supported by `libarchive`: +xwim supports most formats supported by [libarchive](https://libarchive.org/): - 7-zip: 7z, 7zip - zip: jar, zip @@ -70,3 +67,56 @@ supported by `libarchive`: - xzip: xz - rar: rar - tar with compression: tgz, tar.gz, tar.bz2, tar.xz + +# Install +xwim is currently released as a dynamically linked glibc binary only. The +releases can be downloaded from https://git.friedl.net/incubator/xwim/releases +and should run on most glibc based GNU/Linux distributions. The following +dependencies have to be installed: +- [spdlog](https://github.com/gabime/spdlog) +- [fmt](https://github.com/fmtlib/fmt) +- [libarchive](https://github.com/libarchive/libarchive) + +Approaching the first stable release we will release for more platforms. + +# Build +xwim is built with [meson](https://mesonbuild.com/). To compile xwim from source +you need: +- [meson](https://mesonbuild.com/) +- [ninja](https://ninja-build.org/) +- GCC or Clang (others may work too) supporting C++17 + +Additionally you need some libraries installed: +- [spdlog](https://github.com/gabime/spdlog) +- [fmt](https://github.com/fmtlib/fmt) +- [libarchive](https://github.com/libarchive/libarchive) + + +``` shell +# Get the source +git clone https://git.friedl.net/incubator/xwim.git + +# Build xwim executable +cd xwim +meson build +cd build +meson compile + +# Run executable on the test archive +# This will extract root.tar.gz to +# the current working directory +src/xwim test/archives/root.tar.gz +``` + +# Contributing +While xwim is still in incubator phase (i.e. before version 1.0) it's main +repository is hosted on https://git.friedl.net/incubator/xwim with a mirror on +https://github.com/arminfriedl/xwim. With the first stable release it will most +likely move to GitHub as it's main repository. + +If you want to contribute, you can either issue a pull request on it's Github +mirror (will be cherry picked into the main repository) or send patches to +`dev [at] friedl [dot] net`. + +If you are interested in a long-term co-maintainership you can also drop me a +mail for an account on https://git.friedl.net. diff --git a/doc/meson.build b/doc/meson.build index 28fa3d0..0750272 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -25,10 +25,13 @@ doxyfile = configure_file(input: 'Doxyfile.in', datadir = join_paths(get_option('datadir'), 'doc','xwim') -html_target = custom_target('doc', - build_always_stale : not meson.is_subproject(), - input: doxyfile, - output: 'html', - command: [doxygen, doxyfile], - install: not meson.is_subproject(), - install_dir: datadir) +# Must be disabled for now until https://github.com/mesonbuild/meson/pull/7458 +# lands +# html_target = custom_target('doc', +# build_always_stale : not meson.is_subproject(), +# input: doxyfile, +# output: 'html', +# command: [doxygen, '@INPUT@'], +# install: not meson.is_subproject(), +# install_dir: datadir, +# compilers: doxygen)