Moved on existing backend

pull/4/head
parent beec6b1009
commit 66130bd6d3

2
.gitignore vendored

@ -1,7 +1,9 @@
.vscode/ .vscode/
*# *#
ubl-settings-repomanager ubl-settings-repomanager
ubl-settings-repo-back/ubl-settings-repo-back
*~ *~
build/ build/
compile/ compile/
terminal-commands/ terminal-commands/
source/ubl-cmake.h

@ -99,32 +99,37 @@ void on_about(){
} }
void on_save(){ void on_save(){
char *command = "ubl-settings-repo-back"; char *command = "repo-manager";
char *remove_flagged = " "; char *remove_command=NULL;
char *add_flagged = " "; char *add_command=NULL;
char *remove_flagged = NULL;
char *add_flagged = NULL;
char *origin_flagged = NULL; char *origin_flagged = NULL;
char *name_flagged = NULL;
GtkTreeIter iter, childIter; GtkTreeIter iter, childIter;
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.tree_store),&iter); 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)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&iter)){
char *path=NULL; remove_flagged = NULL;
char *name = NULL; add_flagged = "";
char *remove_flagged = " "; gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,3,&origin_flagged,1,&name_flagged,-1);
char *add_flagged = " "; remove_command = yon_char_unite(command," remove -d ", origin_flagged, " -r ", name_flagged, " -p ",NULL);
gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,3,&path,1,&name,-1); add_command = yon_char_unite(command," add -d ", origin_flagged, " -r ", name_flagged, " -p ",NULL);
origin_flagged = yon_char_unite(path,"/",name,".db.tar.gz",NULL);
if (strstr(origin_flagged," ")) origin_flagged = yon_char_unite("\"",origin_flagged,"\"",NULL);
int valid_child=gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter); 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)){ 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; 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); 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);} 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," --package-add ",path,NULL); 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){ void on_tree_selection_changed(GtkWidget *self,main_window *widgets){

@ -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"

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<vendor>UBLinux</vendor>
<vendor_url>https://ublinux.ru</vendor_url>
<action id="com.ublinux.ubl-settings-repo-back.run">
<description>Run ubl-settings-repo-back as root</description>
<description xml:lang="ru">Запуск утилиты ubl-settings-repo-back с правами root</description>
<message>Authentication is required to run ubl-settings-repo-back</message>
<message xml:lang="ru">Требуется авторизация для запуска утилиты ubl-settings-repo-back с правами root</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/ubl-settings-repo-back</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>

@ -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)

@ -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;i<argc;i++){
int argument=getopt_long(argc,argv,"o",long_options,&option_index);
switch(argument){
case 2: curpack(dict)->package_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);
}

@ -1,32 +0,0 @@
#include <getopt.h>
#include <locale.h>
#include <libintl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <glib-2.0/glib.h>
#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);

@ -1 +0,0 @@
#define UNKNOWN_ARGUMENT_LABEL _("Unknown argument has been given")
Loading…
Cancel
Save