Commit graph

81 commits

Author SHA1 Message Date
7745598117
Fix elided lifetimes
All checks were successful
Build / Check format (push) Successful in 50s
Build / Lint pacwrap (push) Successful in 1m23s
Build / Build pacwrap (push) Successful in 1m35s
2024-12-18 19:44:23 -05:00
828da40579
Proper Result and error structure for input prompts 2024-09-25 20:18:06 -04:00
8191764098
Increased log coverage and refactored error module
- Error logging is now present in pacwrap-agent
- Agent error code handling now correctly traps runtime panics.
- impl of DisplayTrait for TransactionError no longer handles the
  display of transaction failure messages.
- Error handling for TransactionAggregation is split into three
  categories: Fatal, Error, and Non-Fatal Error. While two former are
  immediately trapped and the program is terminated, the latter can
  safely terminate the program without consequence.
2024-09-23 19:59:36 -04:00
2f45f12b3e
Fix invocation of xdg-dbus-proxy to include --filter arg
- This option was ommitted by mistake during some refactoring work and
  now the `exec` module in pacwrap has been revised to include this
  option.
- AppIndicator module has had the talk option re-added.
- Specifiying the `-v` option twice will invoke `--log` on
  xdg-dbus-proxy for easy debugging.
2024-09-23 18:45:41 -04:00
d1622eb0b4
Revised error handling and some cleanup
- `fatal()` function for handling the termination of the program when a
  fatal human-readable error digestable error occurs. This function
  terminates the program and will never return a value.
- Much like the aforementioned function, the `error()` function now
  prints the error and terminates the program, instead of printing the
  error and returning the error code as an i32 integer.
- ErrorType enum implemented as an encapsulate to delineate error type.
- Display trait implemented for ErrorType enum for use cases whereby
  the program being terminated is inconvenient for the given code path.
- `generic()` function added to GenericError trait for handling errors
  of which do not require a message to be prepended.
- Global configuration is now statically cached with OnceLock instead of
  lazy_static, and is loaded on-demand instead of during the invocation
  of the `init()` function from the init module upon program startup.
- Use of lazy_static was also eliminated in pacwrap-core's sync module.
2024-09-19 23:19:26 -04:00
e25d807bd7
Debug logging for transaction state and all clippy warnings fixed 2024-09-17 18:52:43 -04:00
e4b8a85ccd
--disable-sandbox for disabling libalpm sandbox
- Ability to instruct libalpm to disable its own sandboxing mechanism by
  engaging `--disable-sandbox` at the command line.
- Updated manuals to reflect new command-line options.
- Disable sandbox user when disabling libalpm's sandbox
2024-09-14 21:11:46 -04:00
2819f5d216
--debug to trigger logging verbosity
- Logging verbosity triggered by `--debug` command-line option.
- Implemented callback function for libalpm's logging callback.
- Increased TransactionFlags to 16 bits from 8 bits to accomodate the
  bitlength required for additional transaction flags.
2024-09-11 22:20:55 -04:00
276e72ac7d
Bespoke pseudorandom_string function replaced with sample_string 2024-08-29 00:03:02 -04:00
fe3d060383
Add file extension to temporary files for editing
- Added ext function to the FileType impl to return a FileType extension
  for the relevant FileType.
- In the edit function, derive the file extension from said ext function.
- Simplified can_edit function with matches macro.
2024-08-28 16:43:22 -04:00
2c190b83c0
Use thread_prng from the rand crate instead of calling /dev/urandom 2024-08-28 16:12:00 -04:00
ae8c37e951
Addition of Process mtime function and expect calls 2024-06-11 20:51:32 -04:00
4d037afbae
Target dependents during composition
- Along with some minor tweaks
2024-06-10 18:05:50 -04:00
2a2c3cd3dc
Agent error handling and initialize trustdb during composition
- Initialize gnupg database during container composition
- Handle exit code 1 of agent as a general failure and changed resulting
  verbiage to 'general agent fault'. Shifted error codes up by one.
- Check if FD 1 is a terminal for colour detection in pacwrap-key
2024-05-31 17:30:55 -04:00
21b4fa6c32
Handle Symbolic containers properly 2024-05-27 18:12:06 -04:00
d2c71a230e
Revision to 1385021b0f 2024-05-14 23:31:34 -04:00
e8403c600d
Bug fix for kill_processes function with minor refactoring
- Continue loop in kill_processes and warn instead of returning error
- Removed redundant colon in warn message
- Removed vestigial lifetime expanssion from qualify_process function
2024-05-13 18:16:26 -04:00
1385021b0f
Fixed error condition handling in edit function with some minor refactoring
- A bug wherein the lock doesn't get removed when an error occurs (e.g.
  file not found) has been fixed.
2024-05-09 20:52:14 -04:00
3fe9d41659
Some tidy up curtailing use of lazy-static variables
- lazy-static variables replaced with OnceLock where applicable with
  otherwise redundant usage removed.
- Front-end code no longer makes use of lazy-static variables
2024-05-01 21:32:13 -04:00
c243d528b1
Lazy init addition to manual, HELP_ALL changed to fixed-length static array 2024-04-30 20:29:35 -04:00
aeadbd4aa4
Enablement of experimental lazy database initialization 2024-04-26 23:45:42 -04:00
69c1b3fe53
Fixed delete lock and fixed argument in manual 2024-04-23 17:15:58 -04:00
78bbcbef79
Don't synchronize filesystem state during preview
- Prevent filesystem state synchronization when preview flag set
- Disallow container creation when preview flag set
2024-04-21 15:43:01 -04:00
5c3b9bdd5d
Attribution update 2024-04-19 18:41:29 -04:00
8564f2ca74
Add positional arguments in edit function 2024-04-19 18:41:27 -04:00
6c8f7374e6 Additional documentation with refactoring and bug fix
- Documentation for desktop utils command module
- Split authorship and license sections in manual
- Cleaned up and reformatted some parameters in manual output
- Don't include symbolic containers with queue in filesystem module
- Tidy-up refactor of a few different functions across the library
2024-04-11 03:21:15 -04:00
a8f2d5865f Fixed formatting for compatibility with markdown and clearer verbiage 2024-04-06 01:07:02 -04:00
51027e2e3f Preparation for stable builds derived from git tag 2024-04-05 23:59:58 -04:00
5e9211a530 Refactored help module and updated help manual 2024-04-05 23:33:10 -04:00
a9959634ef Remove lock file regardless of result in delete module 2024-04-02 16:59:37 -04:00
1e4e64b5ab Array bounds check and allow target-only sync operations
- Allow synchronization to occur for target-only operations
- Check array bounds in remove module for container deletion shortcut
- Remove redundant builder call to progress function in remove module
2024-04-02 16:51:02 -04:00
d179b96495 Final touchups to README.md and formatting fix in manual module 2024-03-30 22:45:00 -04:00
91b5c79c5a Further documentation and overhaul of the help menu CLI
- Shields.io badges added to README.md with clarification on
  functionality present in pacwrap.
- Stipulate the requirement for libalpm 14 or greater in README.md
- Module documentation written in markdown located in /docs/ for
  filesystems and permissions modules
- Help CLI refactored with format improvements and fixes.
- Lock assert calls for container composition, creation, and remote sync
- Added value opperand for process module in main frontend module
2024-03-30 21:47:20 -04:00
b97655461f Aggregator module no longer responsible for unlock callback
- Moved Lock.unlock() callback to front-end callers as aggregator module
  no longer is responsible for this invocation.
- Download fail state added to download event module
2024-03-29 23:18:33 -04:00
a2fc165f46 Progress ticker for transaction aggregation
- Verbosity of the output has been greatly reduced during aggregated
  transactions. Implemented is a progress ticker which serves as a
  header for when a container requires to be operated upon.
- PACWRAP_VERBOSE=[0|1] or TERM=dumb environment variables can be used
  to otherwise toggle the old, verbose printout.
- signal_trap function moved to utils module.
2024-03-27 21:16:35 -04:00
0aa14b23bc Lock file to ensure no concurrent operations on container store
- lock module provides a lock file facility via the Lock impl to ensure
  conflicts do not occur with concurrent operations on the same pacwrap
  data directory and container store.
- pacwrap-signal thread spawned during aggregate transactions to provide
  graceful, forced signal trapping. Requires three iterations of a normal
  signal to forcibly quit the program.
- metadata getter and flags setter functions moved out of TransactionHandle
  into the TransactionMetadata impl
2024-03-24 20:55:09 -04:00
bcfda682c2 Addition of new type in summary module, some tidy up, fix of small errata
- Filter non-existant roots with obtain_base_handle in cache module
- Inclusion of new TableColumns type called OldNewNet
- Shell command module is now correctly qualified by qualify_process
- Removal of unnecessary clone derive for event structs
- Idiomatic whitespace generation
- Missing space in string for gpg key prompt
2024-03-21 20:38:55 -04:00
3e341d7ca8 Fixed argument validation during creation with sync module 2024-03-15 18:18:19 -04:00
4c76ab0aec Symbolic containers
- Adjusted list sorting and fixed bug with column alignment
- Creation of symbolic containers exposed at frontend via utilities
  subcommand module via --utils --symbolic.
- Symbolic container filter removed from register function in cache
  module
- Container API adjusted to allow symbolic container composition
2024-03-13 15:35:51 -04:00
aeb8941060 Addition of --delete/-m to remove module, fixed arg validation in utils 2024-03-11 15:49:43 -04:00
7ef03e38dc Frontend sync module overhaul, minor refactoring and cleanup
- Frontend sync module has been overhauled and cleaned up with
  additional argument bounds checks.
- Adjusted validation control flow during container creation with
  sync or compose modules to ensure containers aren't prematurely
  instantiated without valid environmental and operational parameters.
- Moved and integrated a genericised instantiate_container function
  into the sync module in the core library
- Configuration error message altered to include path instead of
  container name.
2024-03-11 01:29:36 -04:00
264e9cec1f Few bug fixes, minor improvements and cleanup.
- Container creation in sync module now only syncs targets as required
- More robust validation for --target parameters
- Targets marked for reinitialization can now accept a configuration
  from a file if specified.
- Cleaned up process module
- Prompt module no longer emboldens listed targets for confirmation
2024-03-10 00:14:26 -05:00
03ce77c235 Container composition, granularity for aggregation targets, remainder of
prototype removed

- Remainder of the bash prototype has been deprecated and removed along
  with the bash compatibility layer
- Container composition which allows users to instantiate and reinitialize
  containers from an existing configuration or specified configuration file.
- Utilities ported such as desktop entry creation, container list, and
  container deletion.
- Packages can be removed from multiple separate targets as specified
- Multiple targets can now be aggregated with --target-only
- PACWRAP_ROOT environment variable for overriding the container root
  directory for a given container's runtime environment
2024-03-07 17:37:42 -05:00
c7c764b6e5 Tidying up, some bugfixes, and refactoring
- Fixed double prompting of held or ignored packages
- Refactored constants and utils modules
2024-02-27 19:04:19 -05:00
2a48da2773 No longer invoke pacwrap binary to generate manpages upon packaging
- Eliminated key.sh and replaced it with package(), a generic bash
  function for packaging version-aware resources and scripting
- In order to make use of standard git tarballs, manpage generation is
  now invoked by hand with resulting manpages comitted to git, and then
  version information is added with dist scripting.
- Some refactoring and tidying up of manual formatting
- Present a verbose string only for development or git builds
- Obtain build date from modification time. This will ensure a
  deterministic build timestamp is still available for tarball-derived
  builds.
2024-02-18 02:44:22 -05:00
bbd695dfee Changes to version metadata acquisition, manual updates, and SECURITY.md 2024-02-17 04:26:41 -05:00
fd45a75584 Args parsing consistency as well as scope fix
- Target acquisition logic is now consistent between sync and remove
  module
- Positional scope corrected for package argument acquisition
2024-02-13 16:00:20 -05:00
deb0000fb0 Some errata fixed, typos, and path updated in bin/pacwrap-common
- Handle rewind I/O error properly by returning blank state in
  filesystem.rs module
- Upon initialization of container, setup default timezone.
- Corrected path to new configuration location in pacwrap-common script
- Updated definition for --force-foreign in manual.rs module
- Patched erroneously unbracketed conditional in proc.rs module
2024-02-12 23:26:58 -05:00
482abd7f9e Held packages, some last-minute errata fixed
- Changed DSL storage location from ~/.config/pacwrap/instance/ to
  ~/.config/pacwrap/container/
- In the progress.rs module, discard held reference once progress
  is complete.
- Package holding implemented
- Logical errors fixed in foreign preparation state
- Version URLs updated in manual.rs
2024-02-12 00:27:41 -05:00
9a10de46d7 Documentation, tidy up, and some errata fixed
- proc module now has --all option for process lists
- Switched to IEC units for transaction summaries
- Display bug fixed with basic transaction summary
- Removed symbolic container creation from pacwrap-utils script
- Seperation of concerns with warnings in exec module
- Getting started documentation for new users
- Refactored ExecutionArgs struct in args module
- Addition of a new manual: docs/config.md
- Updated docs/manual.md to reflect present help manual
- Help documents can be accessed with command nouns.
- Comment out multilib repo in default repositories.conf file
- Remove pacwrap-base-dist from default pacwrap.yml hold_pkgs array
- Default configuration files included can be changed at build time with
  PACWRAP_DIST_CONF and PACWRAP_DIST_REPO_CONF environment variables.
2024-02-12 00:27:36 -05:00