Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
eepm
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
eepm
Commits
46253497
Commit
46253497
authored
Feb 26, 2018
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add internal estrlist
parent
8ef36910
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
240 additions
and
0 deletions
+240
-0
epm-sh-functions
bin/epm-sh-functions
+14
-0
tools_estrlist
bin/tools_estrlist
+223
-0
pack_in_onefile.sh
pack_in_onefile.sh
+3
-0
No files found.
bin/epm-sh-functions
View file @
46253497
...
...
@@ -382,6 +382,20 @@ eget()
$EGET
"
$@
"
}
estrlist
()
{
if
[
-s
$SHAREDIR
/tools_estrlist
]
;
then
$SHAREDIR
/tools_estrlist
"
$@
"
return
fi
fatal
"missed tools_estrlist"
}
onefile_estrlist
()
{
internal_tools_estrlist
"
$@
"
}
# will replaced within eget() in packed version
onefile_eget
()
{
...
...
bin/tools_estrlist
0 → 100755
View file @
46253497
#!/bin/bash
# 2009-2010, 2012, 2017 Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain
# TODO: rewrite with shell commands, perl or C
# Python - http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch16s03.html
# Shell - http://linux.byexamples.com/archives/127/uniq-and-basic-set-theory/
# - http://maiaco.com/articles/shellSetOperations.php
# Perl - http://docstore.mik.ua/orelly/perl/cookbook/ch04_09.htm
# - http://blogs.perl.org/users/polettix/2012/03/sets-operations.html
# http://rosettacode.org/wiki/Symmetric_difference
# TODO: add unit tests
# http://ru.wikipedia.org/wiki/Операции_над_множествами
# Base set operations:
# * union
# "1 2 3" "3 4 5" -> "1 2 3 4 5"
# * intersection
# "1 2 3" "3 4 5" -> "3"
# * relative complement (substracted, difference) ( A ? B – members in A but not in B )
# http://en.wikipedia.org/wiki/Complement_%28set_theory%29
# "1 3" "1 2 3 4" -> "2 4"
# * symmetric difference (симметричная разность) ( A ^ B – members in A or B but not both )
# http://en.wikipedia.org/wiki/Symmetric_difference
# "1 2 3" "3 4 5" -> "1 2 4 5"
filter_strip_spaces
()
{
# possible use just
#xargs echo
sed
-e
"s|
\+
| |g"
-e
"s|^ ||"
-e
"s|
\$
||"
}
strip_spaces
()
{
echo
"
$*
"
| filter_strip_spaces
}
isempty
()
{
[
"
$(
strip_spaces
"
$*
"
)
"
=
""
]
}
list
()
{
local
i
for
i
in
$@
;
do
echo
"
$i
"
done
}
count
()
{
list
$@
|
wc
-l
}
union
()
{
strip_spaces
$(
list
$@
|
sort
-u
)
}
uniq
()
{
union
$@
}
has
()
{
local
wd
=
"
$1
"
shift
echo
"
$*
"
|
grep
-q
--
"
$wd
"
}
# Note: used egrep! write '[0-9]+(first|two)', not '[0-9]\+...'
match
()
{
local
wd
=
"
$1
"
shift
echo
"
$*
"
| egrep
-q
--
"
$wd
"
}
# remove_from_list "1." "11 12 21 22" -> "21 22"
reg_remove
()
{
local
i
local
RES
=
for
i
in
$2
;
do
echo
"
$i
"
|
grep
-q
"
$1
"
||
RES
=
"
$RES
$i
"
done
strip_spaces
"
$RES
"
}
# remove_from_list "1." "11 12 21 22" -> "21 22"
reg_wordremove
()
{
local
i
local
RES
=
for
i
in
$2
;
do
echo
"
$i
"
|
grep
-q
-w
"
$1
"
||
RES
=
"
$RES
$i
"
done
strip_spaces
"
$RES
"
}
# Args: LIST1 LIST2
# do_exclude_list print LIST2 list exclude fields contains also in LIST1
# Example: exclude "1 3" "1 2 3 4" -> "2 4"
exclude
()
{
local
i
local
RES
=
for
i
in
$2
;
do
echo
"
$1
"
|
grep
-q
-w
"
$i
"
||
RES
=
"
$RES
$i
"
done
strip_spaces
"
$RES
"
}
# regexclude_list "22 1." "11 12 21 22" -> "21"
reg_exclude
()
{
local
i
local
RES
=
"
$2
"
for
i
in
$1
;
do
RES
=
$(
reg_remove
"
$i
"
"
$RES
"
)
done
strip_spaces
"
$RES
"
}
# regexclude_list "22 1." "11 12 21 22" -> "21"
reg_wordexclude
()
{
local
i
local
RES
=
"
$2
"
for
i
in
$1
;
do
RES
=
$(
reg_wordremove
"
$i
"
"
$RES
"
)
done
strip_spaces
"
$RES
"
}
# FIXME:
# reg_include "1." "11 12 21 22" -> "11 12"
reg_include
()
{
local
i
local
RES
=
for
i
in
$2
;
do
echo
"
$i
"
|
grep
-q
-w
"
$1
"
&&
RES
=
"
$RES
$i
"
done
strip_spaces
"
$RES
"
}
example
()
{
local
CMD
=
"
$1
"
local
ARG1
=
"
$2
"
shift
2
echo
"
\$
$0
$CMD
\"
$ARG1
\"
\"
$@
\"
"
$0
$CMD
"
$ARG1
"
"
$@
"
}
example_res
()
{
example
"
$@
"
&&
echo
TRUE
||
echo
FALSE
}
help
()
{
echo
"estrlist developed for string list operations. See also cut, join, paste..."
echo
"Usage:
$0
<command> [args]"
echo
"Commands:"
echo
" strip_spaces [args] - remove spaces between words"
echo
" filter_strip_spaces - remove spaces from words from standart input"
echo
" reg_remove <PATTERN> [word list] - remove words containing a match to the given PATTERN (grep notation)"
echo
" reg_wordremove <PATTERN> [word list] - remove words containing a match to the given PATTERN (grep -w notation)"
echo
" exclude <list1> <list2> - print list2 words exclude list1 items"
echo
" reg_exclude <PATTERN> [word list] - print only words do not matched with PATTERN"
echo
" reg_wordexclude <PATTERN> [word list] - print only words do not matched with PATTERN"
echo
" has <PATTERN> string - check the string for a match to the regular expression given in PATTERN (grep notation)"
echo
" match <PATTERN> string - check the string for a match to the regular expression given in PATTERN (egrep notation)"
echo
" isempty [string] - true if string has no any symbols (only zero or more spaces)"
echo
" union [word list] - sort and remove duplicates"
echo
" uniq [word list] - alias for union"
echo
" list [word list] - just list words line by line"
echo
" count [word list] - print word count"
echo
echo
"Examples:"
example reg_remove
"1."
"11 12 21 22"
example reg_wordremove
"1."
"11 12 21 22"
example exclude
"1 3"
"1 2 3 4"
example reg_exclude
"22 1."
"11 12 21 22"
example reg_wordexclude
"wo.* er"
"work were more else"
example union
"1 2 2 3 3"
example count
"1 2 3 4 10"
example_res isempty
" "
#example_res isempty " 1 "
example_res has ex
"exactly"
example_res has exo
"exactly"
example_res match
"M[0-9]+"
"M250"
example_res match
"M[0-9]+"
"MI"
}
COMMAND
=
"
$1
"
if
[
-z
"
$COMMAND
"
]
;
then
echo
"Run with --help for get command description."
exit
1
fi
if
[
"
$COMMAND
"
=
"-h"
]
||
[
"
$COMMAND
"
=
"--help"
]
;
then
COMMAND
=
"help"
fi
shift
# FIXME: do to call function directly, use case instead?
if
[
"
$1
"
=
"-"
]
;
then
shift
"
$COMMAND
"
"
$(
cat
)
$@
"
elif
[
"
$2
"
=
"-"
]
;
then
"
$COMMAND
"
"
$1
"
"
$(
cat
)
"
else
"
$COMMAND
"
"
$@
"
fi
pack_in_onefile.sh
View file @
46253497
...
...
@@ -48,6 +48,8 @@ filter_out()
grep
-v
"^[ ]*load_helper "
|
\
sed
-e
's|^eget()|disabled_eget()|g'
|
\
sed
-e
's|^onefile_eget()|eget()|g'
|
\
sed
-e
's|^estrlist()|disabled_estrlist()|g'
|
\
sed
-e
's|^onefile_estrlist()|estrlist()|g'
|
\
sed
-e
's|$SHAREDIR/tools_json|internal_tools_json|g'
|
\
sed
-e
's|DISTRVENDOR=$PROGDIR/distr_info|DISTRVENDOR=internal_distr_info|g'
|
\
sed
-e
"s|@VERSION@|
$(
get_version
)
|g"
...
...
@@ -70,6 +72,7 @@ done | filter_out >>$OUTPUT
incorporate_subfile bin/distr_info
#incorporate_subfile /usr/bin/eget
incorporate_subfile bin/tools_eget
incorporate_subfile bin/tools_estrlist
incorporate_subfile bin/tools_json
awk
'BEGIN{desk=0}{if(desk>0) {print} ; if(/^load_helper epm-sh-functions/){desk++}}'
<bin/
$PACKCOMMAND
| filter_out
>>
$OUTPUT
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment