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
158ddf91
Commit
158ddf91
authored
Nov 11, 2024
by
Ivan Mazhukin
Committed by
Vitaly Lipatov
Nov 25, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
epm desktop: no longer copies/modifies files (eterbug #17617)
parent
7e6b967e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
92 deletions
+28
-92
epm-desktop
bin/epm-desktop
+26
-91
hyprland.json
desktop.d/hyprland.json
+2
-1
No files found.
bin/epm-desktop
View file @
158ddf91
#!/bin/sh
#!/bin/sh
#
#
shellcheck disable=SC3043,SC2086
# Copyright (C) 2024 Etersoft
# Copyright (C) 2024 Etersoft
# Copyright (C) 2024 Ivan Mazhukin <vanomj@etersoft.ru>
# Copyright (C) 2024 Ivan Mazhukin <vanomj@etersoft.ru>
#
#
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
json
=
0
json
=
0
is_de_exist
()
{
is_de_exist
()
{
local
json_file
=
"
$(
realpath
$
epm_vardir
/desktop.d/
$1
.json
)
"
local
json_file
=
"
$(
realpath
$
CONFIGDIR
/desktop.d/
$1
.json
)
"
local
de_name
=
$1
local
de_name
=
$1
if
[
-f
"
$json_file
"
]
;
then
if
[
-f
"
$json_file
"
]
;
then
...
@@ -29,33 +29,6 @@ is_de_exist() {
...
@@ -29,33 +29,6 @@ is_de_exist() {
fi
fi
}
}
copy_files_if_absent
()
{
local
source_dir
=
"
$CONFIGDIR
/desktop.d/"
local
target_dir
=
"
$epm_vardir
/desktop.d"
sudorun
mkdir
-p
"
$target_dir
"
for
file
in
"
$source_dir
"
/
*
.json
;
do
filename
=
$(
basename
"
$file
"
)
target_file
=
"
$target_dir
/
$filename
"
if
[
!
-f
"
$target_file
"
]
||
!
grep
-q
"metapackages"
"
$target_file
"
;
then
sudorun
cp
"
$file
"
"
$target_file
"
fi
done
}
check_installed_des
()
{
for
json_file
in
$epm_vardir
/desktop.d/
*
.json
;
do
de_name
=
$(
basename
"
$json_file
"
.json
)
dependencies
=
$(
get_value
"
$de_name
"
"dependencies"
)
is_installed
"
$dependencies
"
&&
status
=
true
||
status
=
false
update_installed_status
$de_name
$status
done
}
is_installed
()
{
is_installed
()
{
local
dependencies
=
$1
local
dependencies
=
$1
...
@@ -63,74 +36,38 @@ is_installed() {
...
@@ -63,74 +36,38 @@ is_installed() {
return
return
}
}
check_and_update_version
()
{
for
json_file
in
$epm_vardir
/desktop.d/
*
.json
;
do
de_name
=
$(
basename
"
$json_file
"
.json
)
main_package
=
$(
get_value
"
$de_name
"
dependencies |
awk
'{print $1}'
)
current_version
=
$(
get_value
"
$de_name
"
version
)
repo_version
=
$(
get_repo_version
"
$main_package
"
)
if
[
"
$repo_version
"
!=
"Version unchanged"
]
&&
[
-n
"
$repo_version
"
]
&&
[
"
$repo_version
"
!=
"
$current_version
"
]
;
then
update_json_version
"
$de_name
"
"
$repo_version
"
fi
done
}
update_installed_status
()
{
local
de_name
=
$1
local
status
=
$2
local
json_file
=
"
$(
realpath
$epm_vardir
/desktop.d/
$de_name
.json
)
"
sudorun
sed
-i
"s/
\"
installed
\"
: .*/
\"
installed
\"
:
$status
,/"
"
$json_file
"
}
update_json_version
()
{
local
de_name
=
$1
local
new_version
=
$2
local
json_file
=
"
$epm_vardir
/desktop.d/
$de_name
.json"
sudorun
sed
-i
"s/
\"
version
\"
:
\"
.*
\"
/
\"
version
\"
:
\"
$new_version
\"
/"
"
$json_file
"
}
get_value
()
{
get_value
()
{
local
json_file
=
"
$(
realpath
$
epm_vardir
/desktop.d/
$1
.json
)
"
local
json_file
=
"
$(
realpath
$
CONFIGDIR
/desktop.d/
$1
.json
)
"
local
key
=
"
$2
"
local
key
=
"
$2
"
if
[
"
$key
"
=
"description"
]
;
then
if
[
"
$key
"
=
"description"
]
;
then
cat
"
$json_file
"
| epm
--quiet
tool json
-b
|
grep
"
\[\"
$key
\"
"
|
cut
-d
' '
-f2-
|
sed
's/[",]//g
'
epm
--quiet
tool json
-b
<
"
$json_file
"
|
grep
"
\[\"
$key
\"
"
| xargs |
sed
's/[",]//g'
|
cut
-f2-
-d
'
'
else
else
cat
"
$json_file
"
| epm
--quiet
tool json
-b
|
grep
"
\[\"
$key
\"
"
|
awk
'{print $2}'
|
sed
's/[",]//g'
|
tr
'\n'
' '
epm
--quiet
tool json
-b
<
"
$json_file
"
|
grep
"
\[\"
$key
\"
"
|
awk
'{print $2}'
|
sed
's/[",]//g'
| xargs
fi
fi
}
}
get_repo_version
()
{
get_repo_version
()
{
local
package_name
=
$1
local
de_name
=
$1
local
package_name
=
$(
get_value
"
$de_name
"
"dependencies"
|
awk
'{print $1}'
)
local
latest_version
local
latest_version
latest_version
=
$(
eget
--quiet
-O-
"https://rdb.altlinux.org/api/package/package_info?name=
$package_name
&arch=x86_64&source=false&branch=sisyphus&full=false"
\
latest_version
=
$(
eget
--quiet
-O-
"https://rdb.altlinux.org/api/package/package_info?name=
$package_name
&arch=x86_64&source=false&branch=sisyphus&full=false"
\
| epm
--quiet
tool json
-b
|
grep
'"packages",0,"version"]'
|
awk
'{print $2}'
|
tr
-d
'"'
)
| epm
--quiet
tool json
-b
2> /dev/null
|
grep
'"packages",0,"version"]'
|
awk
'{print $2}'
|
tr
-d
'"'
)
if
[
-n
"
$latest_version
"
]
;
then
if
[
-n
"
$latest_version
"
]
;
then
echo
"
$latest_version
"
echo
"
$latest_version
"
else
else
latest_version
=
$(
epm
--quiet
info
$package_name
|
grep
'Version:'
|
awk
'{print $2
}'
|
sed
's/-.*//'
)
latest_version
=
$(
epm
--quiet
info
$package_name
2>/dev/null |
grep
'Version'
|
grep
-E
'[0-9]+.[0-9]+(.[0-9]+)?'
|
awk
'{print $NF
}'
|
sed
's/-.*//'
)
if
[
-n
"
$latest_version
"
]
;
then
if
[
-n
"
$latest_version
"
]
;
then
echo
"
$latest_version
"
echo
"
$latest_version
"
else
else
echo
"Version unchanged
"
get_value
"
$de_name
"
"version
"
fi
fi
fi
fi
}
}
install_de_meta
()
{
local
metapackages
=
$(
get_value
"
$de_name
"
"metapackages"
)
[
-n
"
$metapackages
"
]
&&
epm
install
--manual-requires
$metapackages
return
}
install_de
()
{
install_de
()
{
local
de_name
=
$1
local
de_name
=
$1
...
@@ -141,17 +78,14 @@ install_de() {
...
@@ -141,17 +78,14 @@ install_de() {
message
"
$de_name
is already installed."
message
"
$de_name
is already installed."
return
0
return
0
fi
fi
message
"Installing
$de_name
with dependencies:
$dependencies
"
if
!
install_de_meta
$metapackages
;
then
message
"Failed to install
$de_name
."
&&
return
1
fi
message
"Installing
$de_name
with dependencies:
$dependencies
"
if
epm
install
$dependencies
;
then
if
epm
install
$dependencies
;
then
message
"
$de_name
successfully installed."
message
"
$de_name
successfully installed."
update_installed_status
"
$de_name
"
true
else
else
message
"Failed to install
$de_name
."
&&
return
1
fatal
"Failed to install
$de_name
."
return
1
fi
fi
}
}
...
@@ -169,9 +103,8 @@ remove_de() {
...
@@ -169,9 +103,8 @@ remove_de() {
if
epm remove
$dependencies
;
then
if
epm remove
$dependencies
;
then
message
"
$de_name
successfully removed."
message
"
$de_name
successfully removed."
update_installed_status
"
$de_name
"
false
else
else
message
"Failed to remove
$de_name
."
fatal
"Failed to remove
$de_name
."
return
1
return
1
fi
fi
}
}
...
@@ -180,8 +113,8 @@ get_de_info() {
...
@@ -180,8 +113,8 @@ get_de_info() {
local
de_name
=
$1
local
de_name
=
$1
message
" Information for
$de_name
:
message
" Information for
$de_name
:
Name:
$(
get_value
$de_name
name
)
Name:
$(
get_value
$de_name
name
)
Version:
$(
get_
value
$de_name
version
)
Version:
$(
get_
repo_version
$de_name
)
Installed:
$(
get_value
$de_name
installed
)
Installed:
$(
is_installed
$de_name
&&
echo
'true'
||
echo
'false'
)
Description:
$(
get_value
$de_name
description
)
"
Description:
$(
get_value
$de_name
description
)
"
}
}
...
@@ -189,17 +122,23 @@ list_des() {
...
@@ -189,17 +122,23 @@ list_des() {
if
[
"
$json
"
-eq
1
]
;
then
if
[
"
$json
"
-eq
1
]
;
then
echo
'['
echo
'['
first
=
1
first
=
1
for
de
in
$
epm_vardir
/desktop.d/
*
.json
;
do
for
de
in
$
CONFIGDIR
/desktop.d/
*
.json
;
do
if
[
$first
-eq
1
]
;
then
if
[
$first
-eq
1
]
;
then
first
=
0
first
=
0
else
else
echo
','
echo
','
fi
fi
cat
"
$de
"
de_name
=
$(
basename
$de
.json
)
ver
=
$(
get_repo_version
$de_name
)
installed
=
$(
is_installed
$de_name
&&
echo
'true'
||
echo
'false'
)
cat
"
$de
"
|
sed
-E
"s/
\"
version
\"
:
\"
[0-9]+.[0-9]+(.[0-9]+)?
\"
/
\"
version
\"
:
\"
$ver
\"
/g"
|
sed
"s/
\"
installed
\"
: false/
\"
installed
\"
:
${
installed
}
/g"
done
done
echo
']'
echo
']'
else
else
for
de
in
$
epm_vardir
/desktop.d/
*
.json
;
do
for
de
in
$
CONFIGDIR
/desktop.d/
*
.json
;
do
basename
"
$de
"
.json
basename
"
$de
"
.json
done
done
fi
fi
...
@@ -215,10 +154,6 @@ Commands:
...
@@ -215,10 +154,6 @@ Commands:
}
}
epm_desktop
()
{
epm_desktop
()
{
copy_files_if_absent
check_installed_des
check_and_update_version
case
"
$2
"
in
case
"
$2
"
in
--json
)
--json
)
...
...
desktop.d/hyprland.json
View file @
158ddf91
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
"version"
:
"0.42.0"
,
"version"
:
"0.42.0"
,
"installed"
:
false
,
"installed"
:
false
,
"dependencies"
:
[
"hyprland"
,
"kitty"
,
"waybar"
,
"wlogout"
,
"fonts-ttf-fira-code-nerd"
,
"hyprpaper"
,
"hyprshot"
,
"wofi"
,
"pwvucontrol"
,
"cliphist"
,
"polkit-gnome"
],
"dependencies"
:
[
"hyprland"
,
"kitty"
,
"waybar"
,
"wlogout"
,
"fonts-ttf-fira-code-nerd"
,
"hyprpaper"
,
"hyprshot"
,
"wofi"
,
"pwvucontrol"
,
"cliphist"
,
"polkit-gnome"
],
"description"
:
"Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on its looks"
,
"description"
:
"Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on it
'
s looks"
,
"metapackages"
:
[
"hyprland"
]
"metapackages"
:
[
"hyprland"
]
}
}
\ No newline at end of file
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