82 Commits

Author SHA1 Message Date
  ale 19cef9a556 wheel process 3 years ago
  radikal 8426ae032f Merge branch 'master' of https://gitea.hatthieves.es/cloud/lch into master 3 years ago
  radikal 5a1696bf13 Minor fixes 3 years ago
  Gustavo Adolfo Mesa Roldán 1243d549d3 0.6r10 3 years ago
  punk 4c562d0923 Merge pull request 'WIPlicense' (#8) from license into master 3 years ago
  punk 42e7d0a3c3 Modified Readme 3 years ago
  punk 47998e7df0 Added License 3 years ago
  punk 7b5756b533 Added ascii logo 3 years ago
  punk 6a46bea0b4 Modified Readme 3 years ago
  pmorenux e0afb3abf1 Added project description 3 years ago
  g f378c8a8cf Merge pull request '0.6r9' (#4) from 0.6r9 into master 3 years ago
  Pedro Berrocal 00c037ec95 merge 3 years ago
  Pedro Berrocal eb2314eeb8 Merge branch '0.6-dev' of https://gitea.hatthieves.es/cloud/lch into 0.6r11 3 years ago
  Pedro Berrocal 4c4d0a761e Update version 3 years ago
  Pedro Berrocal e08001bc54 Create subfolders 3 years ago
  Gustavo Adolfo Mesa Roldán f29b0da9f5 instal fixed 3 years ago
  Gustavo Adolfo Mesa Roldán 68bb954a7f 06.r10 3 years ago
  Gustavo Adolfo Mesa Roldán ae117b491a 0.6r9 - Get dreamsgit add . 3 years ago
  g bf76e052ec Merge pull request '0.6-stable' (#2) from 0.6-dev into master 3 years ago
  ale f30aed7d2b 0.6r8 3 years ago
  Gustavo Adolfo Mesa Roldán 0bfa956345 0.6r7 - Stable 3 years ago
  Gustavo Adolfo Mesa Roldán 667e00baea 0.6r7 - Stable 3 years ago
  ale d9278518de 0.6r6 3 years ago
  Gustavo Adolfo Mesa Roldán 62cb38a046 Merge branch '0.6-dev' of http://gitea.hatthieves.es/cloud/lch into 0.6-dev 3 years ago
  Gustavo Adolfo Mesa Roldán 8a22e4c66c 0.5*-- 3 years ago
  ale 909c8186ca 0.6r5 3 years ago
  ale 1e1be717d7 0.6r4 3 years ago
  Gustavo Adolfo Mesa Roldán 9e02361f31 0.6r4 - rpm init 3 years ago
  ale 2b48268c30 0.6r3 3 years ago
  Gustavo Adolfo Mesa Roldán 54194e3b89 0.6r2 3 years ago
  Gustavo Adolfo Mesa Roldán 91cae2b675 0.6r1 3 years ago
  Gustavo Adolfo Mesa Roldán c394876fcb 0.6r0 3 years ago
  Gustavo Adolfo Mesa Roldán 832718e391 0.6 dev 3 years ago
  Gustavo Adolfo Mesa Roldán 3c84ab9231 0.6 dev 3 years ago
  Gustavo Adolfo Mesa Roldán fddc1481ef 0.5r10 3 years ago
  Gustavo Adolfo Mesa Roldán 438e6867c5 0.5r9 - Executer 3 years ago
  Gustavo Adolfo Mesa Roldán 4e04efe1af 0.5r9 - Executer 3 years ago
  Gustavo Adolfo Mesa Roldán 5816870906 0.5r8 3 years ago
  Gustavo Adolfo Mesa Roldán b25fc8bd8d 0.5r7 3 years ago
  Gustavo Adolfo Mesa Roldán edccc89586 0.5r7 3 years ago
  Gustavo Adolfo Mesa Roldán 6b94a50229 0.5r6 - stable 3 years ago
  Gustavo Adolfo Mesa Roldán 2596a6a6fb 0.5r6 - More... 3 years ago
  Gustavo Adolfo Mesa Roldán b8cb0defe8 0.5r5 - vmdk run 3 years ago
  Gustavo Adolfo Mesa Roldán b10ba9ffee 0.5r4 - Readme 3 years ago
  Gustavo Adolfo Mesa Roldán 8ae84ab526 0.5r4 - Readme 3 years ago
  Gustavo Adolfo Mesa Roldán 6692024ae1 0.5r4 - Readme 3 years ago
  Gustavo Adolfo Mesa Roldán 9a13b0168c 0.5r4 - Readme 3 years ago
  Gustavo Adolfo Mesa Roldán 446b6647ed 0.5r4 - Readme 3 years ago
  Gustavo Adolfo Mesa Roldán fd40e86308 0.5r4 3 years ago
  Gustavo Adolfo Mesa Roldán 2c6f419db8 More extensions and check after to run 3 years ago
  Gustavo Adolfo Mesa Roldán 0be7239088 0.5r2 - Exit 0 3 years ago
  radikal a460d09a15 rar arch installation fixed 3 years ago
  Gustavo Adolfo Mesa Roldán ed3cc63cec 0.5r1 3 years ago
  Gustavo Adolfo Mesa Roldán 4a276f5a6d 0.5r1 3 years ago
  radikal 961b97375b 0.5r0 3 years ago
  radikal f1cdd41bc7 Merge branch 'master' of https://gitea.hatthieves.es/cloud/lch into master 3 years ago
  radikal 7c486ddcf9 man binary test 3 years ago
  Gustavo Adolfo Mesa Roldán 43abad0f77 TODO 3 years ago
  radikal 32b30edc2c changed /bin/bash to /usr/bin/env bash 3 years ago
  Gustavo Adolfo Mesa Roldán 7c1fd864d7 TODO 3 years ago
  Gustavo Adolfo Mesa Roldán 3a0dd2eed6 0.4r8 - Check Wget 3 years ago
  radikal 5cd4ad4852 Merge branch 'master' of https://gitea.hatthieves.es/cloud/lch into master 3 years ago
  radikal deb162759a minor fix 3 years ago
  Gustavo Adolfo Mesa Roldán 80b5375347 0.4r6 - Text fixed 3 years ago
  radikal 0f2bef10ad minor correction 3 years ago
  radikal 11b9ab21c9 minor fixes 3 years ago
  Gustavo Adolfo Mesa Roldán e4f1a6fa1a help fixed 3 years ago
  Gustavo Adolfo Mesa Roldán 854aa81abd help fixed 3 years ago
  Gustavo Adolfo Mesa Roldán 75ddb34ae0 0.4r6 - unzip instalation 3 years ago
  Gustavo Adolfo Mesa Roldán 1590a437a2 0.4r6 - unzip instalation 3 years ago
  radikal 1859382339 TODO updated 3 years ago
  radikal 93afb48a1e ask for non-free software 3 years ago
  radikal 92653b85d4 new revision 3 years ago
  radikal 45c9a4185b uppercase control 3 years ago
  Gustavo Adolfo Mesa Roldán 1c285fcf57 TODO 3 years ago
  ale afdbfffd5a manpath and permissions 3 years ago
  ale 2d6e52b093 v0.4r3 3 years ago
  Gustavo Adolfo Mesa Roldán 3f59be7544 TODOgit commit -m! 3 years ago
  Gustavo Adolfo Mesa Roldán e5d2578f4e 0.4r2 3 years ago
  Gustavo Adolfo Mesa Roldán 1ee7f59029 0.4rMu 3 years ago
  g 8d0e54c3fc Merge pull request 'Subir archivos a ''' (#1) from m/lch:master into master 3 years ago
  m 0a755b208e Subir archivos a '' 3 years ago
17 changed files with 665 additions and 284 deletions
Split View
  1. +23
    -0
      LICENSE
  2. +53
    -15
      README.md
  3. +1
    -19
      TODO
  4. +16
    -12
      bin/install.sh
  5. +44
    -0
      bin/uninstall.sh
  6. +37
    -63
      lch
  7. +0
    -48
      lch.1
  8. +0
    -97
      lib/check.sh
  9. +16
    -16
      lib/compressor.sh
  10. +14
    -14
      lib/decompressor.sh
  11. +72
    -0
      lib/installer.sh
  12. +55
    -0
      lib/installers/deb.sh
  13. +53
    -0
      lib/installers/pacman.sh
  14. +69
    -0
      lib/installers/rpm.sh
  15. +54
    -0
      lib/installers/zypper.sh
  16. +108
    -0
      lib/resources.sh
  17. +50
    -0
      man/lch.1

+ 23
- 0
LICENSE View File

@ -0,0 +1,23 @@
Copyright (c) 2020 - by Hatthieves
Portions of this software are licensed as follows:
* All third party components incorporated into the Hatthieves Software are licensed under the original license provided by the owner of the applicable component.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

+ 53
- 15
README.md View File

@ -1,8 +1,26 @@
#Linux compressor humanizer
# Linux compressor humanizer
Tool that extract or compress files automatically in a simple & easy way.
It keeps the kiss philosophy avoiding to memorize weird flags and commands to extract & compress files.
It allows you to auto install dependencies or even proprietary dependencies if requested.
## Installation
###### install
```
sudo ./bin/install.sh
```
###### Uninstall
```
sudo ./bin/uninstall.sh
```
## Usage
###### Compress
```
$ lch file.zip archive1/ [archive2/] [...]
$ lch file.zip file1 [file2...]
```
###### Decompress
@ -10,25 +28,45 @@ $ lch file.zip archive1/ [archive2/] [...]
$ lch file.zip
```
###### Options
```
$ lch -h - Show help
$ lch -v - Print version
$ lch -c - Check compression systems
$ lch -i - Install the compressors dependencies
```
## Supported extensions
- tar
- tar.gz
- tar.bz2
- tar.xz
- bz2
- tgz
- gz
- zip
###### Packing/unpacking:
- 7z
- bz2
- gz
- rar
- tar
- tar.bz2, tbz, tbz2, tb2
- tar.gz, tgz
- tar.xz, txz
- zip
## Install
```
sudo ./install.sh
```
###### Unpacking only:
- arj
- cab
- dmg
- iso
- lzh
- lzma
- rpm
- squashfs
- vdi
- vhd
- vmdk
- win
- xar
- z
## Testing with docker
```
$ git clone https://gitea.hatthieves.es/cloud/lch
$ cd lch && docker run -it --rm --name lch --workdir /lch -v $(pwd):/lch putyourdistributionhere ./lch -h
```
```

+ 1
- 19
TODO View File

@ -1,19 +1 @@
# Formatos que faltan:
- RAR (hecho, falta testear)
# Al realizar los case, habría que controlar las mayúsculas y minúsculas en las extensiones. "lowercase"
# Estudiar la posibilidad de mostras las lista de extenciones usables en ese momento. Dependiendo de las dependecias instaladas en el sistema.
# Al instalar rar. Comprobar que wget este en el sistema.
# Cambios en 7z:
- Ficheros para añadir como solo extracción:
ARJ, CAB, DMG, ISO, LZH, LZMA, RPM, SquashFS, VDI, VHD, VMDK, WIM, XAR, Z
- Comprobar qué dependencias son necesarias para esos formatos.
- ¿Ficheros que soporta?
AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR and Z.
# Hacer desinstalador
https://kanban.hatthieves.es/b/xAbb5NsGwNsbpxfpY/lch

install.sh → bin/install.sh View File

@ -1,8 +1,8 @@
#!/bin/bash
#!/usr/bin/env bash
if [ "$UID" != "0" ]; then
echo " Only root can execute this script, sorry."
echo " Try 'sudo ./install.sh'"
echo " Try 'sudo $0'"
exit 0
fi
@ -13,20 +13,24 @@ echo "======================"
echo ""
cp lch /usr/bin/lch
mkdir -p /usr/lib/lch
cp ./lib/* /usr/lib/lch
cp -r ./lib/* /usr/lib/lch
chmod 755 /usr/bin/lch
echo " Copied lch in /usr/bin"
if [ -z "$MANPATH" ];then
MANPATH=$(manpath)
fi
if [ -x "$(command -v man)" ]; then
if [ -z "$MANPATH" ] && [ $(manpath 2> /dev/null) ];then
MANPATH=$(manpath)
else
MANPATH="/usr/local/man"
fi
MANDIR=${MANPATH%%:*}/man1
mkdir -p $MANDIR
cp lch.1 $MANDIR/lch.1
gzip $MANDIR/lch.1
chmod 644 $MANDIR/lch.1.gz
echo " Copied manpage in $MANDIR"
MANDIR=${MANPATH%%:*}/man1
mkdir -p $MANDIR
cp lch.1 $MANDIR/lch.1
gzip $MANDIR/lch.1
chmod 644 $MANDIR/lch.1.gz
echo " Copied manpage in $MANDIR"
fi
echo ""
echo "============================="
echo " lch installed successfully."

+ 44
- 0
bin/uninstall.sh View File

@ -0,0 +1,44 @@
#!/usr/bin/env bash
if [ "$UID" != "0" ]; then
echo " Only root can execute this script, sorry."
echo " Try 'sudo $0'"
exit 0
fi
# Si existe el archivo lch
if [[ -f "/usr/bin/lch" ]]; then
rm /usr/bin/lch
fi
# Si existe el directorio lch
if [[ -d "/usr/lib/lch" ]]; then
rm -rf "/usr/lib/lch"
fi
# Si existe man
if [ -x "$(command -v man)" ]; then
# Si nulo manpath
if [ -z "$MANPATH" ]; then
MANPATH=$(manpath)
fi
MANDIR=${MANPATH%%:*}/man1
# Si man lch.1
if [[ -f "$MANDIR/lch.1" ]]; then
rm "$MANDIR/lch.1"
fi
# Si man lch.1.gz
if [[ -f "$MANDIR/lch.1.gz" ]]; then
rm "$MANDIR/lch.1.gz"
fi
fi
echo "=============================="
echo " lch uninstalled successfully."
echo -e "==============================\n"

+ 37
- 63
lch View File

@ -1,76 +1,50 @@
#!/bin/bash
VERSION=0.4r1
#!/usr/bin/env bash
VERSION=0.6r10
DEST=$1
shift 1
ORIG=$@
if [ -z /usr/lib/lch/compressor.sh ]; then . /usr/lib/lch/compressor.sh; else . ./lib/compressor.sh; fi
if [ -z /usr/lib/lch/decompressor.sh ]; then . /usr/lib/lch/decompressor.sh; else . ./lib/decompressor.sh; fi
if [ -z /usr/lib/lch/check.sh ]; then . /usr/lib/lch/check.sh; else . ./lib/check.sh; fi
function help()
{
echo "Help:"
echo "-----"
echo ""
echo "lch [-h] [-v] [-c] [-i] [FILE [FILE]]"
echo ""
echo "Examples:"
echo "$ lch -h - This help"
echo "$ lch -v - Print version"
echo "$ lch -c - Check compresion systems"
echo "$ lch -i - Install the compressors dependencies."
echo "$ lch file.zip - Decompress"
echo "$ lch file.zip /home/file - Compress"
echo "$ lch files.zip /flie1 /flie2 - Compress multiple"
echo ""
echo "Supported extensions:"
echo " rar, tar, tar.gz, tar.bz2, tar.xz, bz2, tgz, gz, zip, 7z"
echo ""
echo "Run 'man lch' for more info."
echo ""
}
if [ "$DEST" = "--help" ] || [ "$DEST" = "-h" ]
then
help
exit 0
fi
if [ "$DEST" = "--check" ] || [ "$DEST" = "-c" ]
then
check
exit 0
fi
if [ "$DEST" = "--install" ] || [ "$DEST" = "-i" ]
then
install $DEST $@
exit 0
fi
if [[ -e ./lib/resources.sh ]]; then . ./lib/resources.sh; else . /usr/lib/lch/resources.sh; fi
if [[ -e ./lib/compressor.sh ]]; then . ./lib/compressor.sh; else . /usr/lib/lch/compressor.sh; fi
if [[ -e ./lib/decompressor.sh ]]; then . ./lib/decompressor.sh; else . /usr/lib/lch/decompressor.sh; fi
if [[ -e ./lib/installer.sh ]]; then . ./lib/installer.sh; else . /usr/lib/lch/installer.sh; fi
if [ "$DEST" = "--version" ] || [ "$DEST" = "-v" ]
then
then
echo "Linux Compression Humanized $VERSION"
exit 0
else
echo -e "\nlch $VERSION"
echo -e "---------\n"
fi
if [ -z "$DEST" ]
then
help
exit 1
else
if [ -n "$ORIG" ]
then
echo "Compressor:"
echo -e "-----------\n"
compressor $DEST $ORIG
else
echo "Decompressor:"
echo -e "-------------\n"
decompressor $DEST
fi
case $DEST in
"--help" | "-h")
help
;;
"--check" | "-c")
check
;;
"--install" | "-i")
install $DEST $@
;;
*)
if [ -z "$DEST" ]
then
help
exit 1
else
if [ -n "$ORIG" ]
then
echo "Compressor:"
echo -e "-----------\n"
compressor $DEST $ORIG
else
echo "Decompressor:"
echo -e "-------------\n"
decompressor $DEST
fi
fi
;;
esac
exit 0
fi

+ 0
- 48
lch.1 View File

@ -1,48 +0,0 @@
.TH LCH 1 "26 September 2020"
.SH NAME
lch \- command\-line compressor and decompressor for humans
.SH SYNOPSIS
\fBlch\fP [filename [filename1] [filename2]...]
\fBlch\fP [\fIflags\fP]
.SH DESCRIPTION
\fBlch\fP is a command\-line compressor and decompressor for humans with
simplicity in mind. Automatically select the compression format by file
extension.
Supported extensions:
tar, tar.gz, tar.bz2, tar.xz, bz2, tgz, gz, zip, 7z
.SH OPTIONS
.TP
\fI\-h, \-\-help\fP
Help: show syntax.
.TP
\fI\-v, \-\-version\fP
Print current version.
.TP
\fI\-c, \-\-check\fP
Check the compressors installed.
.TP
\fI\-i, \-\-install\fP
Install compressors and dependencies.
.SH EXAMPLES
.TP
\fBlch foobar.tar.gz\fR
will decompress file foobar.tar.gz
.TP
\fBlch foobar.tar.gz foobar1/ foobar2/\fP
will compress foobar1/ and foobar2/ in foobar.tar.gz
.SH BUGS
Report your bugs at <gore@hatthieves.es>
.SH AUTHOR
\fBlch\fP are by Gustavo Adolfo Mesa Roldan <gore@hackthieves.es>
This document is by radikal <radikal@disroot.org>.

+ 0
- 97
lib/check.sh View File

@ -1,97 +0,0 @@
#!/bin/bash
function check()
{
local a=false
echo -e "Verification of compression systems:\n"
echo -e "Systems\t\t\tStatus"
echo "----------------------------------"
for i in "rar" "unrar" "tar" "bzip2" "gzip" "zip" "7za"
do
if ! [ -x "$(command -v $i)" ]
then
echo -e "$i\t\t\t\e[91mNot Installed\e[0m"
$a = true
else
echo -e "$i\t\t\t\e[32mInstalled\e[0m"
fi
done
if $a
then
echo -e "\nIn order to use all the extensions install the packages: tar, bzip2, gzip, zip, 7za, rar, unrar"
fi
echo ""
exit 0
}
function rarInstall(){
if [[ $(uname -m) -eq "x86_64" ]]
then
RAR_URL="https://www.rarlab.com/rar/rarlinux-x64-5.9.1.tar.gz"
RAR_FILE="rarlinux-x64-5.9.1.tar.gz"
else
RAR_URL="https://www.rarlab.com/rar/rarlinux-5.9.1.tar.gz"
RAR_FILE="rarlinux-5.9.1.tar.gz"
fi
wget $RAR_URL
tar -zxvf $RAR_FILE
cd rar
cp -v rar unrar /usr/local/bin/
cd ..
rm -r rar $RAR_FILE
echo "rar/unrar installed."
}
function install()
{
echo -e "Install dependencies\n"
if [ "$UID" != "0" ]; then
echo " Only root can execute this script, sorry."
echo " Try 'sudo $@'"
exit 0
fi
if [ -e "$(command -v rar)" ]
then
echo "rar installed."
else
rarInstall
fi
if [ -x "$(command -v apt)" ]
then
echo -e "APT system detected\n"
apt install -y tar bzip2 gzip zip p7zip-full 1> /dev/null
elif [ -n "$(grep "centos" /etc/*-release)" ]
then
echo -e "CentOS system detected\n"
yum install -y -q epel-release 1> /dev/null
rpm -U --quiet http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm 1> /dev/null
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 1> /dev/null
yum repolist 1> /dev/null
yum install -y -q tar bzip2 gzip zip p7zip 1> /dev/null
elif [ -x "$(command -v dnf)" ]
then
echo -e "DNF system detected\n"
dnf install -y -q tar bzip2 gzip zip p7zip 1> /dev/null
elif [ -x "$(command -v yum)" ]
then
echo -e "Yum system detected\n"
yum install -y -q tar bzip2 gzip zip p7zip 1> /dev/null
elif [ -x "$(command -v pacman)" ]
then
echo -e "Pacman system detected\n"
pacman -Sqy --noconfirm tar bzip2 gzip zip p7zip 1> /dev/null
elif [ -x "$(command -v zypper)" ]
then
echo -e "Zypper system detected\n"
zypper install -y tar bzip2 gzip zip p7zip-full 1> /dev/null
else
echo -e "System installer not detected\n"
fi
echo -e "\nDependencies installation finished\n"
exit 0
}

+ 16
- 16
lib/compressor.sh View File

@ -1,40 +1,40 @@
#!/bin/bash
#!/usr/bin/env bash
function compressor()
{
case $1 in
{
case $(lowercase) in
*.tar)
tar -cvf $1 $2
executer tar -cvf $DEST $ORIG
;;
*.tar.gz | *.tgz)
tar -czvf $1 $2
executer tar -czvf $DEST $ORIG
;;
*.tar.bz2 | *.tbz | *.tbz2 | *.tb2)
tar -c $2 | bzip2 > $1
executer tar -c $ORIG | bzip2 > $DEST
;;
*.tar.xz | *.txz)
tar -cJf $1 $2
executer tar -cJf $DEST $ORIG
;;
*.bz2)
bzip2 -c $2 > $1
executer bzip2 -c $ORIG > $DEST
;;
*.gz)
gzip -c $2 > $1
executer gzip -c $ORIG > $DEST
;;
*.zip)
zip -r $1 $2
executer zip -r $DEST $ORIG
;;
*.7z)
7za a $1 $2
executer 7z a $DEST $ORIG
;;
*.rar)
rar a $1 $2
executer rar a $DEST $ORIG
;;
*)
echo "Extension not found."
echo -e "For more information run 'lch --help'\n"
;;
esac
echo -e "\nDone"
exit 0
}
echo -e "\nFile $DEST compressed."
}

+ 14
- 14
lib/decompressor.sh View File

@ -1,33 +1,34 @@
#!/bin/bash
#!/usr/bin/env bash
function decompressor()
{
case $1 in
case $(lowercase) in
*.tar)
tar -xvf $1
executer tar -xvf $DEST
;;
*.tar.gz | *.tgz)
tar -xzvf $1
executer tar -xzvf $DEST
;;
*.tar.bz2 | *.tbz | *.tbz2 | *.tb2)
tar xjf $1
executer tar xjf $DEST
;;
*.tar.xz | *.txz)
tar -xf $1
executer tar -xf $DEST
;;
*.bz2)
bzip2 -d $1
executer bzip2 -d $DEST
;;
*.gz)
gzip -d $1
executer gzip -d $DEST
;;
*.zip)
unzip $1
executer unzip $DEST
;;
*.7z)
7za e $1
*.7z | *.arj | *.cab | *.dmg | *.iso | *.lzh | *.lzma | *.rpm | *.squashfs | *.vdi | *.vhd | *.vmdk | *.win | *.xar | *.z)
executer 7z e -y $DEST
;;
*.rar)
unrar x $1
executer unrar x $DEST
;;
*)
echo "Extension not found."
@ -35,6 +36,5 @@ function decompressor()
;;
esac
echo -e "\nDone"
exit 0
echo -e "\nFile $DEST decompressed."
}

+ 72
- 0
lib/installer.sh View File

@ -0,0 +1,72 @@
#!/usr/bin/env bash
function rarInstall(){
if [ -e "$(command -v wget)" ] || [ -e "$(command -v curl)" ]
then
if [[ "$(uname -m)" == "x86_64" ]]
then
RAR_URL="https://www.rarlab.com/rar/rarlinux-x64-5.9.1.tar.gz"
RAR_FILE="rarlinux-x64-5.9.1.tar.gz"
else
RAR_URL="https://www.rarlab.com/rar/rarlinux-5.9.1.tar.gz"
RAR_FILE="rarlinux-5.9.1.tar.gz"
fi
if [ -e "$(command -v wget)" ]
then
wget -q $RAR_URL > /dev/null
else
curl -s -o $RAR_FILE $RAR_URL > /dev/null
fi
tar -zxvf $RAR_FILE > /dev/null
cd rar
cp -v rar unrar /usr/local/bin/ > /dev/null
cd ..
rm -r rar $RAR_FILE > /dev/null
complete_install "rar"
else
echo -e "\n$RED[Error]$RESET - wget or curl are not in the system, so rar could not be installed.\nPlease, install wget or curl.\n"
read -p "Press [ENTER] to continue installing or [CTRL+C] to exit."
fi
}
function install()
{
if [ "$UID" != "0" ]; then
echo " Only root can execute this script, sorry."
echo " Try 'sudo lch $@'"
exit 0
fi
if [ $# -eq 1 ]; then
# Poner aviso "Vamos a instalarlo todo y mucho"
read -p "Do you want to install non-free software? (rar, unrar) [y/N]: " PRIVSOFT
case ${PRIVSOFT} in
y | Y | yes)
PRIVSOFT=true
echo -e "\nInstall all dependencies (with non-free)\n";;
*)
PRIVSOFT=false
echo -e "\nOnly will install free software.\n";;
esac
else
PRIVSOFT=false
fi
if [ -x "$(command -v apt)" ]
then
if [[ -e ./lib/installers/deb.sh ]]; then . ./lib/installers/deb.sh; else . /usr/lib/lch/installers/deb.sh; fi
elif [ -x "$(command -v yum)" ]
then
if [[ -e ./lib/installers/rpm.sh ]]; then . ./lib/installers/rpm.sh; else . /usr/lib/lch/installers/rpm.sh; fi
elif [ -x "$(command -v pacman)" ]
then
if [[ -e ./lib/installers/pacman.sh ]]; then . ./lib/installers/pacman.sh; else . /usr/lib/lch/installers/pacman.sh; fi
elif [ -x "$(command -v zypper)" ]
then
if [[ -e ./lib/installers/zypper.sh ]]; then . ./lib/installers/zypper.sh; else . /usr/lib/lch/installers/zypper.sh; fi
else
echo -e "System installer not detected"
fi
echo -e "\nDependencies installation finished\n"
}

+ 55
- 0
lib/installers/deb.sh View File

@ -0,0 +1,55 @@
#!/usr/bin/env bash
# Functions
function get_dep(){
wheel true &
WPID=$!
apt-get install -y $@ &> /dev/null
if [[ $? -ne 0 ]]; then
if [[ $@ == "p7zip-full" ]]; then failed_install 7z; else failed_install $@; fi
else
if [[ $@ == "p7zip-full" ]]; then complete_install 7z; else complete_install $@; fi
fi
disown $WPID
kill $WPID &> /dev/null
}
# Run
echo -e "APT system detected"
echo "---------------------"
wheel true &
WPID=$!
apt-get update 1> /dev/null
disown $WPID
kill $WPID &> /dev/null
if [ $# -eq 1 ]; then
if $PRIVSOFT; then
rarInstall
fi
for installer in "tar" "bzip2" "gzip" "zip" "unzip" "p7zip-full"
do get_dep $installer
done
else
for i in $@
do
if [ $i != "-i" ]
then
case $i in
"rar" | "unrar")
rarInstall
;;
"7z" | "7zip" | "p7zip")
get_dep p7zip-full
;;
*)
get_dep $i
;;
esac
fi
done
fi

+ 53
- 0
lib/installers/pacman.sh View File

@ -0,0 +1,53 @@
#!/usr/bin/env bash
# Function
function get_dep(){
wheel true &
WPID=$!
pacman -Sqy --noconfirm $@ &> /dev/null
if [[ $? -ne 0 ]]; then
if [[ $@ == "p7zip" ]]; then failed_install 7z; else failed_install $@; fi
else
if [[ $@ == "p7zip" ]]; then complete_install 7z; else complete_install $@; fi
fi
disown $WPID
kill $WPID &> /dev/null
}
# Run
echo -e "Pacman system detected"
echo "---------------------"
wheel true &
WPID=$!
pacman -F -y 1> /dev/null
disown $WPID
kill $WPID &> /dev/null
if [ $# -eq 1 ]; then
if $PRIVSOFT; then
rarInstall
fi
for installer in "tar" "bzip2" "gzip" "zip" "unzip" "p7zip"
do get_dep $installer
done
else
for i in $@
do
if [ $i != "-i" ]
then
case $i in
"rar" | "unrar")
rarInstall
;;
"7z" | "7zip" | "p7zip")
get_dep p7zip
;;
*)
get_dep $i
;;
esac
fi
done
fi

+ 69
- 0
lib/installers/rpm.sh View File

@ -0,0 +1,69 @@
#!/usr/bin/env bash
# Functions
function get_dep(){
wheel true &
WPID=$!
if [[ $@ == "p7zip-plugins" ]]; then
yum install -y -q $@ 1> /dev/null
else
yum install -y -q $@ 1> /dev/null
if [[ $? -ne 0 ]]; then
if [[ $@ == "p7zip" ]]; then failed_install 7z; else failed_install $@; fi
else
if [[ $@ == "p7zip" ]]; then complete_install 7z; else complete_install $@; fi
fi
fi
disown $WPID
kill $WPID &> /dev/null
}
function install_centos(){
if [ -n "$(grep "centos" /etc/*-release)" ]; then
yum install -y -q epel-release &> /dev/null
rpm --quiet --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 &> /dev/null
rpm -U --quiet http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm &> /dev/null
fi
}
# Run
echo -e "YUM system detected"
echo "---------------------"
wheel true &
WPID=$!
yum -y -q update &> /dev/null
disown $WPID
kill $WPID &> /dev/null
if [ $# -eq 1 ]; then
install_centos
if $PRIVSOFT; then
rarInstall
fi
for installer in "tar" "bzip2" "gzip" "zip" "unzip" "p7zip" "p7zip-plugins"
do get_dep $installer
done
else
for i in $@
do
if [ $i != "-i" ]
then
case $i in
"rar" | "unrar")
rarInstall
;;
"7z" | "7zip" | "p7zip")
install_centos
get_dep p7zip
get_dep p7zip-plugins
;;
*)
get_dep $i
;;
esac
fi
done
fi

+ 54
- 0
lib/installers/zypper.sh View File

@ -0,0 +1,54 @@
#!/usr/bin/env bash
# Function
function get_dep(){
wheel true &
WPID=$!
zypper install -y $@ &> /dev/null
if [[ $? -ne 0 ]]; then
if [[ $@ == "p7zip-full" ]]; then failed_install 7z; else failed_install $@; fi
else
if [[ $@ == "p7zip-full" ]]; then complete_install 7z; else complete_install $@; fi
fi
disown $WPID
kill $WPID &> /dev/null
}
# Run
echo -e "Zypper system detected"
echo "---------------------"
wheel true &
WPID=$!
zypper -q up -y 1> /dev/null
disown $WPID
kill $WPID &> /dev/null
if [ $# -eq 1 ]; then
if $PRIVSOFT; then
rarInstall
fi
for installer in "tar" "bzip2" "gzip" "zip" "unzip" "p7zip-full"
do get_dep $installer
done
else
for i in $@
do
if [ $i != "-i" ]
then
case $i in
"rar" | "unrar")
rarInstall
;;
"7z" | "7zip" | "p7zip")
get_dep p7zip-full
;;
*)
get_dep $i
;;
esac
fi
done
fi

+ 108
- 0
lib/resources.sh View File

@ -0,0 +1,108 @@
#!/usr/bin/env bash
# Colors
RESET="\e[0m"
GREEN="\e[32m"
RED="\e[91m"
function help()
{
echo "Help:"
echo "-----"
echo ""
echo "lch [-h] [-v] [-c] [-i] [FILE [FILE...]]"
echo ""
echo "Examples:"
echo "$ lch -h - This help"
echo "$ lch -v - Print version"
echo "$ lch -c - Check compression systems"
echo "$ lch -i - Install the compressors dependencies"
echo "$ lch file.zip - Decompress"
echo "$ lch file.zip /home/file - Compress"
echo "$ lch files.zip file1 file2 - Compress multiple"
echo ""
echo "Packing/unpacking supported extensions:"
echo " 7z, bz2, gz, rar, tar, tar.bz2, tbz, tbz2, tb2, tar.gz, tgz, tar.xz, txz, zip"
echo ""
echo "Unpacking only supported extensions:"
echo " arj, cab, dmg, iso, lzh, lzma, rpm, squashfs, vdi, vhd, vmdk, win, xar, z"
echo ""
echo "Run 'man lch' for more info."
echo ""
}
function check()
{
local a=false
echo -e "Verification of compression systems:\n"
echo -e "Systems\t\t\tStatus"
echo "----------------------------------"
for i in "7z" "bzip2" "gzip" "rar" "tar" "unrar" "unzip" "zip"
do
wheel true &
WPID=$!
if ! [ -x "$(command -v $i)" ]
then
echo -e "$i$RED\t\t\tNot Installed$RESET"
a=true
else
echo -e "$i$GREEN\t\t\tInstalled$RESET"
fi
disown $WPID
kill $WPID &> /dev/null
done
if $a
then
echo -e "\nIn order to use all the extensions install the packages."
echo -e "Or use 'lch -i' to install all dependences"
fi
echo ""
}
function lowercase()
{
echo "$DEST" | tr 'A-Z' 'a-z'
}
function error_not_install()
{
echo -e "$@$RED is not installed$RESET, use 'lch -c' to check and 'lch -i' to install."
exit 0
}
function executer()
{
wheel true &
WPID=$!
if [ -x "$(command -v $1)" ]
then
"$@" 1> /dev/null
else
error_not_install $1
fi
disown $WPID
kill $WPID &> /dev/null
}
function complete_install(){
echo -e "$@:$GREEN\t\t\tCompleted$RESET"
}
function failed_install(){
echo -e "$@:$RED\t\t\tFailed$RESET"
}
function wheel() {
sp='/-\|'
while $1; do
printf '%.1s\b' "$sp"
sp=${sp#?}${sp%???}
if [ -x "$(command -v bc)" ]
then
sleep $(echo "0.0001*$(grep 'cpu MHz' /proc/cpuinfo | head -n1 | awk '{print $4}')" | bc -l)s
else
sleep 0.2s
fi
done
}

+ 50
- 0
man/lch.1 View File

@ -0,0 +1,50 @@
.TH LCH 1 "03 October 2020"
.SH NAME
lch \- command\-line compressor and decompressor for humans
.SH SYNOPSIS
\fBlch\fP [-h] [-v] [-c] [-i] [file [file] [file]...]
\fBlch\fP [\fIflags\fP]
.SH DESCRIPTION
\fBlch\fP is a command\-line compressor and decompressor for humans with
simplicity in mind. Automatically select the compression format by file
extension.
Packing/unpacking supported extensions:
7z, bz2, gz, rar, tar, tar.bz2, tbz, tbz2, tb2, tar.gz, tgz, tar.xz, txz, zip
Unpacking only supported extensions:
arj, cab, dmg, iso, lzh, lzma, rpm, squashfs, vdi, vhd, vmdk, win, xar, z
.SH OPTIONS
.TP
\fI\-h, \-\-help\fP
Help: show syntax.
.TP
\fI\-v, \-\-version\fP
Print current version.
.TP
\fI\-c, \-\-check\fP
Check the compressors installed.
.TP
\fI\-i, \-\-install\fP
Install compressors and dependencies.
.SH EXAMPLES
.TP
\fBlch file.tar.gz\fR
will decompress file.tar.gz
.TP
\fBlch file.tar.gz file1 file2\fP
will compress file1 and file2 in file.tar.gz
.SH BUGS
Report your bugs at <gore@hatthieves.es>
.SH AUTHOR
\fBlch\fP are by Gustavo Adolfo Mesa Roldan <gore@hatthieves.es>, radikal <radikal@disroot.org>, Ale Romero <ale@hatthieves.es>, m <?@?>.
This document is by radikal <radikal@disroot.org>.

Loading…
Cancel
Save