diff --git a/.gitignore b/.gitignore
index c50c704..1f9cf81 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
.vscode/
*#
ubl-settings-repomanager
+ubl-settings-repo-back/ubl-settings-repo-back
*~
build/
compile/
-terminal-commands/
\ No newline at end of file
+terminal-commands/
+source/ubl-cmake.h
\ No newline at end of file
diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c
index 7d41d31..39ea86d 100644
--- a/source/ubl-settings-repomanager.c
+++ b/source/ubl-settings-repomanager.c
@@ -99,32 +99,37 @@ void on_about(){
}
void on_save(){
- char *command = "ubl-settings-repo-back";
- char *remove_flagged = " ";
- char *add_flagged = " ";
+ char *command = "repo-manager";
+ char *remove_command=NULL;
+ char *add_command=NULL;
+ char *remove_flagged = NULL;
+ char *add_flagged = NULL;
char *origin_flagged = NULL;
+ char *name_flagged = NULL;
GtkTreeIter iter, childIter;
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.tree_store),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&iter)){
- char *path=NULL;
- char *name = NULL;
- char *remove_flagged = " ";
- char *add_flagged = " ";
- gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,3,&path,1,&name,-1);
- origin_flagged = yon_char_unite(path,"/",name,".db.tar.gz",NULL);
- if (strstr(origin_flagged," ")) origin_flagged = yon_char_unite("\"",origin_flagged,"\"",NULL);
+ remove_flagged = NULL;
+ add_flagged = "";
+ gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,3,&origin_flagged,1,&name_flagged,-1);
+ remove_command = yon_char_unite(command," remove -d ", origin_flagged, " -r ", name_flagged, " -p ",NULL);
+ add_command = yon_char_unite(command," add -d ", origin_flagged, " -r ", name_flagged, " -p ",NULL);
int valid_child=gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter);
for (;valid_child;valid_child=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&childIter)){
- path=NULL;
int status = 0,deleted = 0;
+ char *path=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&childIter,3,&path,4,&status,5,&deleted,-1);
- if (status==-1) { remove_flagged = yon_char_unite(remove_flagged," --package-remove ",path,NULL); gtk_tree_store_remove(main_config.tree_store,&childIter);}
- else if (status == 1&&deleted==0) add_flagged = yon_char_unite(add_flagged," --package-add ",path,NULL);
+ if (status==-1) { remove_flagged = yon_char_unite(remove_flagged ? remove_flagged : "",path,NULL); gtk_tree_store_remove(main_config.tree_store,&childIter);}
+ else if (status == 1&&deleted==0) add_flagged = yon_char_unite(add_flagged ? add_flagged : "",path,NULL);
}
- command = yon_char_unite(command," -o ",origin_flagged,"/",name,".db.tar.gz",remove_flagged,add_flagged,NULL);
+ if (origin_flagged)
+ remove_command = remove_flagged ? yon_char_unite(remove_command,remove_flagged,NULL) : NULL;
+ add_command = add_flagged ? yon_char_unite(add_command, add_flagged,NULL) : NULL;
+ printf("%s\n%s\n",remove_command,add_command);
+ if (remove_command) system(remove_command);
+ if (add_command) system(add_command);
}
- printf("%s\n",command);
}
void on_tree_selection_changed(GtkWidget *self,main_window *widgets){
diff --git a/ubl-settings-repo-back/Makefile b/ubl-settings-repo-back/Makefile
deleted file mode 100644
index f84e9df..0000000
--- a/ubl-settings-repo-back/Makefile
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/make -f
-
-#SHELL := /bin/bash
-MAKEFILE_FILEPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
-MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH))))
-MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH))
-
-CMAKE_COMMAND = cmake
-CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source
-CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
-#CMAKE_SOURCE_DIR = ./source
-#CMAKE_BUILD_DIR = ./compile
-DEPENDS = /bin/cmake
-PREFIX ?= /usr
-PKGNAME = $(MAKEFILE_DIR)
-#PKGNAME = ubl-settings-manager
-LATEST_TAG=
-default_target: all
-
-.PHONY: all init depend debug prepare check build uninstall install clean help
-
-all: init build
-
-init:
- @echo "Initialize ..."; \
- if [ -d ".git" ]; then \
- LATEST_TAG=$$(git describe --tags | sed 's/^v//'|grep -oE "^[0-9]{1,}.[0-9]{1,}"); \
- else \
- LATEST_TAG="0.0"; \
- fi; \
- sed -r "s/^(string version_application).*/\1=\"$${LATEST_TAG}\";/" -i source/${PKGNAME}.h; \
- echo "-- Build path: ${CMAKE_BUILD_DIR}"
-
-depend:
- @echo "Check depends ..."
- @for FILE_DEPEND in $(DEPENDS); do \
- if [ ! -f $${FILE_DEPEND} ]; then \
- echo "ERROR: Depend '$${FILE_DEPEND}' not found !"; \
- exit 1; \
- fi; \
- done; \
- echo "Check depends: OK"
-# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-
-debug: init build
- @echo "Debug ..."; \
- if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
- $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
- fi; \
- echo "${CMAKE_BUILD_DIR}/${PKGNAME}"; \
- cp ${CMAKE_BUILD_DIR}/${PKGNAME} ./; \
- echo "Debug: OK"
-
-prepare:
- @echo "Prepare ..."; \
- if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
- $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \
- fi; \
- echo "Prepare: OK"
-
-check:
- @echo "Check ..."; \
- if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \
- echo "Check: OK"; \
- else \
- echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not found !"; \
- exit 1; \
- fi
-
-build: depend prepare
- @echo "Build ..."; \
- make --directory=${CMAKE_BUILD_DIR}; \
- echo "Build: OK"
-
-uninstall:
- @echo "Uninstall ..."
- @for FILE_PO in $(wildcard *.po); do \
- LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
- FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
- PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
- $(RM) "$${PATH_FILE_MO}"; \
- done
- @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
- @$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"
- @if [ -z ${DESTDIR} ]; then \
- [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
- update-desktop-database --quiet &>/dev/null || true; \
- [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
- fi
- @echo "Uninstall: OK"
-
-install: check uninstall
- @echo "Install ..."
-#################################################### УДАЛИТЬ ПЕРЕД КОММИТОМ ################################################################################
- @gcc source/ubl-settings-repo-back.c source/ubl-settings-repo-back.h source/ubl-strings.h -o ubl-settings-repo-back `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g
-#################################################### УДАЛИТЬ ПЕРЕД КОММИТОМ ################################################################################
- @for FILE_PO in $(wildcard *.po); do \
- LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
- install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
- FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
- PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
- echo "$${FILE_PO}"; \
- msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \
- done
- @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps"
- @install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions"
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"
- @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
- @install -dm755 "${DESTDIR}/etc/xdg"
- @install -dm755 "${DESTDIR}${PREFIX}/share/applications"
- @if [ -z ${DESTDIR} ]; then \
- [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
- update-desktop-database --quiet &>/dev/null || true; \
- [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \
- fi
- @echo "Install: OK"
- @sed -r "s/^(string version_application=\"*\").*/string version_application;/" -i source/${PKGNAME}.h; \
-
-clean:
- @echo "Clean ..."
- @$(RM) -rd ${CMAKE_BUILD_DIR}
- @if [ -d ${CMAKE_BUILD_DIR} ]; then \
- echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
- else \
- echo "Clean: OK"; \
- fi
-
-up_ver:
- @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \
- MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \
- MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \
- VER="$${MAJOR}.$$(($${MINOR}+1))"; \
- sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \
- echo "Updated version to VERSION.md: $${CURRENT} to $${VER}"
-
-help:
- @echo "The following are some of the valid targets for this Makefile:"; \
- echo "... all (the default if no target is provided)"; \
- echo "... init"; \
- echo "... debug"; \
- echo "... prepare"; \
- echo "... compile"; \
- echo "... install"; \
- echo "... uninstall"; \
- echo "... clean"; \
- echo "... up_ver"
diff --git a/ubl-settings-repo-back/com.ublinux.ubl-settings-repo-back.policy b/ubl-settings-repo-back/com.ublinux.ubl-settings-repo-back.policy
deleted file mode 100644
index 2dd9623..0000000
--- a/ubl-settings-repo-back/com.ublinux.ubl-settings-repo-back.policy
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- UBLinux
- https://ublinux.ru
-
-
- Run ubl-settings-repo-back as root
- Запуск утилиты ubl-settings-repo-back с правами root
- Authentication is required to run ubl-settings-repo-back
- Требуется авторизация для запуска утилиты ubl-settings-repo-back с правами root
-
- auth_admin
- auth_admin
- auth_admin
-
- /usr/bin/ubl-settings-repo-back
- true
-
-
-
diff --git a/ubl-settings-repo-back/source/CMakeLists.txt b/ubl-settings-repo-back/source/CMakeLists.txt
deleted file mode 100644
index 9ed448b..0000000
--- a/ubl-settings-repo-back/source/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-cmake_minimum_required(VERSION 3.7)
-project(ubl-settings-repo-back)
-
-find_package(PkgConfig REQUIRED)
-
-pkg_check_modules(GTK REQUIRED glib-2.0)
-include_directories(${GTK_INCLUDE_DIRS})
-link_directories(${GTK_LIBRARY_DIRS})
-add_definitions(${GTK_CFLAGS_OTHER})
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
- -O2 -pipe -fno-plt -fexceptions \
- -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
- -fstack-clash-protection -fcf-protection")
-
-
-set(SOURCE_FILES
- ubl-settings-repo-back.c
- ubl-settings-repo-back.h
- # ubl-strings.h
- )
-
-set(LIBRARIES
- ${GTK_LIBRARIES}
- pthread)
-
-
-add_executable(${PROJECT_NAME} ${SOURCE_FILES})
-target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
-target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
-install(TARGETS ${PROJECT_NAME} DESTINATION bin)
\ No newline at end of file
diff --git a/ubl-settings-repo-back/source/ubl-settings-repo-back.c b/ubl-settings-repo-back/source/ubl-settings-repo-back.c
deleted file mode 100644
index c223ca1..0000000
--- a/ubl-settings-repo-back/source/ubl-settings-repo-back.c
+++ /dev/null
@@ -1,141 +0,0 @@
-#include "ubl-settings-repo-back.h"
-
-
-dict_simple *yon_dict_new(){
- dict_simple *dict = (dict_simple*)malloc(sizeof(dict_simple));
- dict->first=dict;
- dict->next=NULL;
- dict->data=NULL;
- return dict;
-}
-
-dict_simple *yon_dict_append(dict_simple *dictionary_to_append){
- dict_simple *dict = (dict_simple*)malloc(sizeof(dict_simple));
- dictionary_to_append->next=dict;
- dict->first=dictionary_to_append->first;
- dict->next=NULL;
- dict->data=NULL;
- return dict;
-}
-
-repo_operation *yon_operation_new(){
- repo_operation *operation = (repo_operation*)malloc(sizeof(repo_operation));
- operation->package_add=NULL;
- operation->package_remove=NULL;
- operation->rename=NULL;
- operation->target=NULL;
- operation->create=0;
- return operation;
-}
-
-char *yon_string_append(char *source, char *append){
- int size = (strlen(source)+strlen(append)+2);
- char *n_source = (char*)malloc(sizeof(char)*size);
- memset(n_source,0,size);
- memcpy(n_source,source,strlen(source));
- memcpy(n_source+strlen(source)," ",1);
- memcpy(n_source+strlen(source)+1,append,strlen(append));
- return n_source;
-}
-
-char *yon_string_copy(char *string){
- if (string){
- char *str = malloc(sizeof(char)*strlen(string)+1);
- memset(str,0,strlen(string)+1);
- memcpy(str,string,strlen(string));
- return str;
- } else return NULL;
-}
-
-char *yon_string_find_last(char *source, char *find){
-
- for (char *found = strstr(source,find);found;found=strstr(found,find)){
- if (found);
- }
-}
-
-int yon_repo_proceed(int argc, char *argv[]){
- int option_index=0;
- int show_help=0;
- {
- struct option long_options[] = {
- {"repo-new", 1, 0, 1},
- {"package-add", 1, 0, 2},
- {"package-remove", 1, 0, 3},
- {"repo-rename", 1, 0, 4},
- {"origin", 1, 0, 'o'},
- { NULL, 0, NULL, 0 }
- };
- dict_simple *dict = yon_dict_new();
- repo_operation *operation = yon_operation_new();
- dict->data=(void*)operation;
- #define curpack(dict) ((repo_operation*)dict->data)
- for (int i=0;ipackage_add = yon_string_append(curpack(dict)->package_add,yon_string_copy(optarg));
- break;
- case 3: curpack(dict)->package_remove = yon_string_append(curpack(dict)->package_add,yon_string_copy(optarg));
- break;
- case 4: curpack(dict)->rename=yon_string_copy(optarg);
- case 1:
- if (!((repo_operation*)dict->data)->target) ((repo_operation*)dict->data)->target=yon_string_copy(optarg);
- else {
- dict = yon_dict_append(dict);
- operation = yon_operation_new();
- dict->data=(void*)operation;
- ((repo_operation*)dict->data)->target=yon_string_copy(optarg);
- }
- ((repo_operation*)dict->data)->create=1;
- break;
- case 'o':
- if (!((repo_operation*)dict->data)->target) ((repo_operation*)dict->data)->target=yon_string_copy(optarg);
- else {
- dict = yon_dict_append(dict);
- operation = yon_operation_new();
- dict->data=(void*)operation;
- ((repo_operation*)dict->data)->target=yon_string_copy(optarg);
- }
- break;
- case '?': printf("%s: %c\n",UNKNOWN_ARGUMENT_LABEL,argument);
- break;
- }
- }
- for (dict_simple *dct=dict->first;dct;dct=dct->next){
- if (curpack(dct)->target){
- if (curpack(dct)->create){
- GKeyFile *file = g_key_file_new();
- g_key_file_load_from_file(file,"/etc/pacman.conf",G_KEY_FILE_KEEP_COMMENTS,NULL);
- g_key_file_set_string(file,curpack(dct)->target,"Server",curpack(dct)->target);
- char *command = yon_string_append("repo-add ",curpack(dct)->target);
- if (curpack(dct)->package_add){
- command = yon_string_append(command," ");
- command = yon_string_append(command,curpack(dct)->package_add);
- }
- system(command);
-
- } else if (curpack(dct)->package_remove){
- char *command = yon_string_append("repo-remove ",curpack(dct)->target);
- command = yon_string_append(command," ");
- command = yon_string_append(command,curpack(dct)->package_remove);
- system(command);
- }
- if (curpack(dct)->package_add){
- char *command = yon_string_append("repo-add ",curpack(dct)->target);
- command = yon_string_append(command," ");
- command = yon_string_append(command,curpack(dct)->package_add);
- system(command);
- }
-
-
- }
- }
- }
-}
-
-int main(int argc, char *argv[]){
- char *local=setlocale(LC_ALL, "");
- textdomain (LocaleName);
- yon_repo_proceed(argc, argv);
-
-}
diff --git a/ubl-settings-repo-back/source/ubl-settings-repo-back.h b/ubl-settings-repo-back/source/ubl-settings-repo-back.h
deleted file mode 100644
index fcc8d86..0000000
--- a/ubl-settings-repo-back/source/ubl-settings-repo-back.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "ubl-strings.h"
-
-#define LocaleName "ubl-settings-repo-back"
-
-
-#define _(String) gettext(String)
-
-typedef struct {
- char *target;
- char *package_add;
- char *package_remove;
- char *rename;
- int create;
-
-} repo_operation;
-
-typedef struct {
- struct dict_simple *first;
- struct dict_simple *next;
- void *data;
-} dict_simple;
-
-char *yon_string_append(char *source, char *append);
-char *yon_string_copy(char *string);
\ No newline at end of file
diff --git a/ubl-settings-repo-back/source/ubl-strings.h b/ubl-settings-repo-back/source/ubl-strings.h
deleted file mode 100644
index 290f02c..0000000
--- a/ubl-settings-repo-back/source/ubl-strings.h
+++ /dev/null
@@ -1 +0,0 @@
-#define UNKNOWN_ARGUMENT_LABEL _("Unknown argument has been given")
\ No newline at end of file