Commit Graph
100 Commits
Author SHA1 Message Date
Riyyi 592ee124cb Manager: Do not print debugging output on release mode 2022-01-31 20:42:17 +01:00
Riyyi 8cb2affc50 Manager: Clean up main.cpp 2022-01-31 20:26:44 +01:00
Riyyi 9656760ef8 Test: Move unit tests into separate directory 2022-01-31 15:56:28 +01:00
Riyyi 5147721fb5 Meta: Fix typo in README.org 2022-01-31 15:14:45 +01:00
Riyyi 25905594a2 Meta: Add build instructions and basic usage to README.org 2022-01-31 11:17:45 +01:00
Riyyi d4ef69451e CMake: Rename project stowage => manafiles 2022-01-31 11:14:31 +01:00
Riyyi aad44f95ff CMake: Add uninstall target 2022-01-30 21:02:54 +01:00
Riyyi bbed6acee9 CMake+Doc: Add man page and its installation 2022-01-30 21:02:54 +01:00
Riyyi 3c1f55768f CMake: Add installation of the program binary 2022-01-29 21:59:51 +01:00
Riyyi 688ae78fd3 CMake: Put the run target in the targets section 2022-01-29 21:58:52 +01:00
Riyyi d8a752ac83 CMake: Improve build type detection 2022-01-29 17:37:44 +01:00
Riyyi 49448de932 CMake: Reorganize root file 2022-01-29 17:37:44 +01:00
Riyyi 401a70fbd7 CMake: Version 2.4 and below should fail instead of giving a warning 2022-01-28 21:21:43 +01:00
Riyyi 9ace822a46 CMake: Define language in project targets, dedup CXX settings 2022-01-28 11:32:13 +01:00
Riyyi c4019cde11 Test: Add test case for selectively commenting 2022-01-25 14:18:32 +01:00
Riyyi 91f8253ed5 Test: Update verify macro to support a custom result behavior 2022-01-25 13:58:44 +01:00
Riyyi b9aff29293 Test: Convert homeDirectory std::string => std::filesystem::path 2022-01-24 19:52:23 +01:00
Riyyi 1a9b0d870a Test: Properly test adding non-existing dotfiles 2022-01-24 19:46:41 +01:00
Riyyi c61aefa2e3 Test: Add dotfile test case for path exclusion 2022-01-24 19:39:51 +01:00
Riyyi 4fd90cfa43 Test: Only compute process ID once 2022-01-24 17:47:50 +01:00
Riyyi e2f9ed1176 Test: Fix file permissions for system file tests 2022-01-24 17:27:40 +01:00
Riyyi 422f71f19e Test: Add system file test cases 2022-01-24 15:02:15 +01:00
Riyyi ff92522b8c Test: Add stderr stream pointer to the test suite 2022-01-24 14:58:48 +01:00
Riyyi b961e17b50 Test: Set ownership of created dotfile test files to the current user 2022-01-24 14:45:40 +01:00
Riyyi eb4822b44b Test: Add macro that bails function if the condition fails 2022-01-24 14:44:04 +01:00
Riyyi 82f38345d1 Manager: Fix system target detection in working directory 2022-01-24 14:24:17 +01:00
Riyyi 1b4de8fb5d Manager: Run clang-format 2022-01-24 01:09:22 +01:00
Riyyi 4da262a8fe Manager: Add working directory getter 2022-01-24 01:03:30 +01:00
Riyyi c032373940 Manager: Add verbose flag and store it in new Config class
Check the verbosity in the Dotfile class when printing file operations.
2022-01-24 01:03:30 +01:00
Riyyi 5ec1272172 Manager: Set process group ID before user ID
setegid() needs to be called before seteuid(); otherwise, the setegid()
call will fail because the process no longer has root privileges.
2022-01-24 01:03:30 +01:00
Riyyi 7856e9017c Test: Add dotfile test cases 2022-01-24 01:03:30 +01:00
Riyyi 8c8eb01d18 CMake: Compile all sources for the test suite binary 2022-01-24 01:03:30 +01:00
Riyyi 5d5c37a496 Manager: Detect system files correctly during add and pull operations 2022-01-24 00:29:50 +01:00
Riyyi d7ff637fd0 Manager: Convert dotfile class to singleton 2022-01-24 00:29:50 +01:00
Riyyi 54dc515def Util: Make file append const reference 2022-01-24 00:29:50 +01:00
Riyyi 817b898b28 Test: Fix memory leak when adding a test case 2022-01-24 00:29:50 +01:00
Riyyi a8e73063ee Util: Add file create function 2022-01-24 00:29:50 +01:00
Riyyi abbf764a3e Manager: Add feature to selectively comment and uncomment 2022-01-24 00:29:50 +01:00
Riyyi 7f8ca38462 Manager: Use constructor over auto 2022-01-24 00:29:50 +01:00
Riyyi 7be7440840 Manager: Deduplicate code between pulling and pushing functions 2022-01-24 00:29:50 +01:00
Riyyi 80642793a6 Manager: Fix directory creation in the dotfile directory 2022-01-24 00:29:50 +01:00
Riyyi bf02122d2d Manager: Cut off working directory from error message 2022-01-24 00:29:50 +01:00
Riyyi 50c859fd34 Manager: Fix system target detection 2022-01-24 00:29:50 +01:00
Riyyi 5cca591448 Manager: Rename paths -> indices where applicable 2022-01-24 00:29:50 +01:00
Riyyi 7004ce2bb0 CMake: Pass the C++ language standard to the compiler 2022-01-24 00:29:50 +01:00
Riyyi bc3fc6c345 Manager: Put machine specific values in a separate class 2022-01-24 00:29:50 +01:00
Riyyi 26826bc077 Manager: Update main for current functionality 2022-01-09 15:49:21 +01:00
Riyyi aa702b79b9 Manager: Move package list grabbing to separate function 2022-01-09 15:47:03 +01:00
Riyyi ac862982da Doc: Update readme 2022-01-09 15:45:36 +01:00
Riyyi d9f95f5332 Manager: Add fixme to user getlogin() 2022-01-09 15:43:13 +01:00
Riyyi 2af81120c3 Manager: Implement convenience functions in Package 2021-10-02 17:28:44 +02:00
Riyyi a04b5232f4 Util: Add delimiter support to the cut function 2021-10-02 12:14:14 +02:00
Riyyi 22082a515b Util: Add convenience functions to save external process creation 2021-09-26 00:14:43 +02:00
Riyyi be552db0fb Manager: Start working on package tracking 2021-09-25 17:16:33 +02:00
Riyyi 418b453507 Util: Add file class 2021-09-25 16:55:37 +02:00
Riyyi ee451671cd Util: Fix reading of file descriptors longer than 4096 bytes 2021-09-25 11:29:49 +02:00
Riyyi 9ff368e511 Manager: Remove Dotfile from namespace 2021-09-24 11:08:50 +02:00
Riyyi 5226e6a24a Manager: Add file pushing function 2021-09-23 20:09:12 +02:00
Riyyi 34e0dc72ec Manager: Don't need to do a full capture 2021-09-23 20:01:46 +02:00
Riyyi e6842f58d8 Manager: Remove non-related parameter from callback 2021-09-23 20:00:18 +02:00
Riyyi c14db5bd46 Manager: Rename files to paths 2021-09-23 19:57:17 +02:00
Riyyi 5f2bbce080 Manager: Add file pulling function 2021-09-23 19:54:32 +02:00
Riyyi f3ed90e499 Manager: Rename targets to paths 2021-09-23 17:36:04 +02:00
Riyyi cb592b8d2c Manager: Make file syncing logic generic 2021-09-23 17:35:13 +02:00
Riyyi 58bf5b98ee Manager: Add function to check if file is system type 2021-09-23 17:24:17 +02:00
Riyyi e7d1515fca Manager: Add index to dotfile iteration loop 2021-09-23 16:01:19 +02:00
Riyyi e4d90bf281 Manager: Make the callable functions non-static 2021-09-23 00:40:02 +02:00
Riyyi 7920b7280e Manager: Add generic dotfile looping 2021-09-23 00:38:48 +02:00
Riyyi de4b96bd47 Manager: Add Dotfile adding function 2021-09-22 00:26:23 +02:00
Riyyi f8ccfe79b8 Manager: Add target filtering to Dotfile::list() 2021-09-20 18:18:31 +02:00
Riyyi 1893f08ea8 Manager: Start working on dotfile class 2021-09-20 01:00:14 +02:00
Riyyi 12dd000f0b Util: Pass string by const reference 2021-09-19 11:46:19 +02:00
Riyyi 6293e2aaf7 Project: Release under MIT license 2021-09-18 12:40:00 +02:00
Riyyi 875a49332c Test: Add Shell and System test cases 2021-09-18 10:33:22 +02:00
Riyyi cf1da45b78 Test: Update macro output formatting 2021-09-18 09:57:25 +02:00
Riyyi cc7252f94d Util: Change operators to the evaluated order 2021-09-17 19:13:57 +02:00
Riyyi 26ceceeba5 Util: Change System to direct-list-initialization 2021-09-17 13:02:29 +02:00
Riyyi 9926849640 Util: Add class Shell for executing more basic OS shell commands 2021-09-17 12:52:36 +02:00
Riyyi 496e3e4c88 Util: Do not modify the output result 2021-09-17 01:41:21 +02:00
Riyyi 06367a05b8 Util: Add additional System operator support 2021-09-17 01:13:07 +02:00
Riyyi 2fca315557 Util: Add support for stdin and | piping
In order to accomplish this, the arguments have to be stored in the
object. Because () evaluation order is not defined in the spec.

Because arguments have to be stored now, char pointers no longer work
and std::strings are stored instead. Systems object also cant be
returned as a reference anymore because you need to be able to know
which is the lhs and which is the rhs in the operator overloads.
2021-09-16 18:11:47 +02:00
Riyyi 70ccdee8c2 Util: Add class System for executing OS shell commands 2021-09-15 12:22:04 +02:00
Riyyi 3efe74582f Util: Add ArgParser missing argument error message 2021-09-13 19:54:59 +02:00
Riyyi bb29919f02 Util: Simplify the logic of the long option parsing function 2021-09-13 17:42:34 +02:00
Riyyi 2ac6d24520 Util: Add type error messages to ArgParser option arguments 2021-09-13 16:19:49 +02:00
Riyyi 648c0f8c85 Util: Rename ArgParser error types 2021-09-13 15:22:12 +02:00
Riyyi 35e2c2de48 Util: Rename printOptionError -> printError 2021-09-13 15:17:37 +02:00
Riyyi ffcde408e1 Util: Add invalid argument type error message to ArgParser 2021-09-13 12:04:44 +02:00
Riyyi 9c918c6555 Util: Add ArgParser unhandled argument error type and messages 2021-09-13 04:04:02 +02:00
Riyyi a5d5d2ea6d Util: Fix nullptr derefencing
In order to compare strings, the STL has to dereference the data
pointer. So check if its not a nullptr first.
2021-09-13 03:59:51 +02:00
Riyyi 7759821b13 Util: Fix string_view substring selection
Unlike std::basic_string::data() and string literals, data() may return
a pointer to a buffer that is not null-terminated. Therefore it is
typically a mistake to pass data() to a routine that takes just a const
CharT* and expects a null-terminated string.

The bug was calling string_view .data() after calling substr() that ends
before the null terminator, as it will just return the entire
string_view.
2021-09-13 00:58:51 +02:00
Riyyi a217475d42 Util: Avoid assigning variable by passing to the initialization list
When an object of a class is created, the constructors of all member
variables are called consecutively in the order the variables are
declared, even if you don't explicitly write them to the initialization
list.
2021-09-13 00:20:38 +02:00
Riyyi 8ce4643518 Test: Add optional argument test cases 2021-09-12 21:13:44 +02:00
Riyyi b6bfcbdc33 Util: Support for optional arguments in ArgParser 2021-09-09 15:14:17 +02:00
Riyyi ca95ef1cf1 Util: Add simple validation to ArgParser number conversions 2021-09-09 12:30:45 +02:00
Riyyi 6efa314c38 Util: Move ArgParser private function implementations to the bottom 2021-09-09 11:44:44 +02:00
Riyyi 4e30b58305 Util: Switch ArgParser option/argument creation to list initialization 2021-09-09 11:40:13 +02:00
Riyyi 0fffa86ba0 Util: Deduplicate ArgParser accept value lambdas 2021-09-09 11:23:13 +02:00
Riyyi 9cecb8602f Util: Add more ArgParser argument types 2021-09-09 00:12:06 +02:00
Riyyi 9796bc9e86 Test: Add argument test cases 2021-09-08 23:48:26 +02:00