Voila is a domain-specific language launched through CLI tool for operating with files and directories in massive amounts in a fast & reliable way.

Overview

Voila forthebadge forthebadge

Contributor Covenant GitHub license GitHub release Linux build macOS build Windows build

Voila is a domain-specific language designed for doing complex operations to folders & files. It is based on a CLI tool, although you can write your Voila code and do something like this voila DIRECTORY "$(cat operations.vla)". Voila is mainly tested in Linux, so should work better in *nix (Linux,*BSD, macOS, etc) than in Windows-based operating systems.

Syntax

voila DIRECTORY "<@VARIABLE | STRING | #REGEXP#> OPERATOR <@VARIABLE | STRING | #REGEXP#> [|| | && ANOTHER_CONDITIONAL ...] {OPERATION1-CYCLE-1(ARG1 ARG1, ARG2) OPERATION2-CYCLE-1(ARG1 ARG2) ...; OPERATION1-CYCLE-2(ARG1, ARG2 ARG2, ARG3)...}"

Voila's syntax is composed of a traditional conditional/multi-conditional statement, followed by the operations, delimited within curly brackets. These are separated into cycles. A cycle is an iteration between all directory files, the operations in every cycle are executed in parallel, and cycles are executed consecutively. cycles are separated with ;, and operations/functions arguments are separated with ,. Variables' prefix is @, and its value changes to the file that is evaluating. Regular expressions are delimited between #. For a more intuitive explanation, go to the "Examples" section.

These are the available conditional operators:

  • ==: true if the first value matches the second
  • !=: true if the first value doesn't match the second
  • >: true if the first value is greater than the second
  • >=: true if the first value is equal or greater than the second
  • <: true if the first value is less than the second
  • <=: true if the first value is equal or less than the second
  • ~=: true if the a value matches the regex provided in the other value
  • ~!: true if the a value doesn't match the regex provided in the other value

These are the available variables:

  • name: filename
  • path: absolute path
  • parent: absolute path to file's directory
  • ownerID: file owner ID (unix-only)
  • empty: true if the file size is less than 1 byte (else false)
  • readonly: true if the file is ro (else false)
  • elf: true if the file is compliant to the Executable & Linkable Format (else false)
  • size=tb: file size in terabytes (2 decimals)
  • size=gb: file size in gigabytes (2 decimals)
  • size=mb: file size in megabytes (2 decimals)
  • size=kb: file size in kilobytes (2 decimals)
  • size=bs: file size bytes (no decimals)
  • sum=md5: md5 checksum this variable might be removed in the future, md5 is completely broken
  • sum=sha1: sha1 checksum this variable might be removed in the future, sha1 is completely broken
  • sum=sha224: sha224 checksum
  • sum=sha256: sha256 checksum
  • sum=sha384: sha384 checksum
  • sum=sha512: sha256 checksum
  • creation=date: date of file creation (yyyy-mm-dd)
  • creation=hour: hour of file creation (hh:mm:ss)
  • lastChange=date: date of the last modification to the file (yyyy-mm-dd)
  • lastChange=hour: hour of the last modification to the file (hh:mm:ss)
  • lastAccess=date: date of the last access to the file (yyyy-mm-dd)
  • lastAccess=hour: hour of the last access to the file (hh:mm:ss)

These are the available operations/functions:

  • print: prints something to the terminal (not to the printer lol)
  • create: creates a file, with its content as second argument
  • mkdir: cretes a folder/directory
  • delete: deletes file/directory ⚠️
  • move: moves a file or a folder/directory ⚠️
  • copy: copies a file or a folder/directory ⚠️
  • gzc: compress file using gzip. first argument is the file to compress, the second is the file to save the compressed file
  • gzd: decompress file using gzip. first argument is the file to compress, the second is be file to save the compressed file
  • shell: gives a command to the Bourne Shell (sh) in Unix systems (like Linux or macOS), and a command to PowerShell (powershell) in Windows systems. Exists for doing things Voila functions can't, for example, send a dbus message. ⚠️

⚠️ WARNING: If you use functions that access and/or modify the same file/directory in the same cycle it could cause undefined behavior because the file would be accessed and overwritten at the same time. For avoiding that, consider splitting those functions into different cycles. A workaround is being discussed in #5

forthebadge

Examples

  • voila /backup "@creation=date <= 2020-01-01 { print(@name has been deleted) delete(@path) }: Voila will delete every file in /backup whose creation was earlier to 2020 printing a delete message.
  • voila /backup "@name ~= #(.*)-2020# { print(@name has been deleted) delete(@path) }: Voila will delete every file in /backup ending in 2020 printing a delete message.
  • voila /something "@md5256sum == 308uyrp028y4hp079y2hv92gbf49 { mkdir(./sums); create(./sums/@name.sum, @sha256sum) }: Voila will create a folder in the current directory named "sums", will search for a file with that md5 checksum, get its sha256 checksum and save it in the sums folder.
  • voila /backup "@size=gb >= 1 { print(@name has been deleted) delete(@path) }: Voila will delete every file in /backup weighter than 1gb printing a delete message.

CLI flags

  • -r, --recursive: If provided, voila will be executed recursively, which means that will also affect the files in the folders of the directory provided.
  • -h, --help: Displays help.
  • -v, --version: Displays installed version of Voila, if any.

Error types

Voila provides 2 main error types:

  • RUNTIME ERROR: An error that occurred while running the Voila code. Code might have been already executed, and other code might not.
  • PARSE ERROR: This error is triggered by a syntax error during the construction of the AST (what reads the interpreter), so no code was executed during the raise of this error.

Installation

You can install voila by cloning the repository and compiling or by cargo install voila. I have planned to provide prebuilt binaries soon.

Submitting

Message from the author

Voila has been coded & tested by only one person, so don't expect it to be perfect. I'm looking for more people interested in maintaining Voila and helping out, if you're interested, DM me on discord (NOT-Guillem#8042). Voila's discord server is this

Comments
  • Feature: New AST

    Feature: New AST

    Moving to a brand new AST to improve performance and user experience

    The current AST involves a lot of copying, while giving almost no support for analysis nor error reporting to the user, and the interpreter can't handle errors properly. I propose these changes:

    • [x] Create a better AST, that includes source information and goes deeper into enumerations before having to handle the source, and enabling later static analysis passes like checking function names, available variables and so on, so the run-time errors are reduced to I/O errors when reading each file/directory.
    • [x] Modify the interpreter so it works with this new AST, with the current error handling.
    • [x] Replace all Strings in the AST for &'source str ~~- [ ] Add AST passes to convert function calls and variables to enums and structs, and verify the coherence of the conditions, so that most of the script errors are caught before execution. The coherence conditions will be written as this pull request advances and we can comment what things will be allowed and what will be not.~~ This no longer applies, since the AST is fully implemented. The checks will be on extra features later and decisions on it will change how the language works.

    Note that this doesn't change the scripting language nor the overall interpreter design. Even though it introduces lots of changes, the execution order of the script is preserved, and it majorly helps separate the errors internally and removes a lot of string manipulation, specially inside the interpreter.

    enhancement 
    opened by cybergsus 68
  • Note on resources, and undefined behavior inside the cycles (long term planning)

    Note on resources, and undefined behavior inside the cycles (long term planning)

    Look at the below snippet:

    @name == 1 {
       delete(@path)
       shell(my-useful-check @path)
    }
    

    This snippet triggers undefined behavior, as it's using a resource potentially destructively (delete will certainly do, my-useful-check might do). You don't know which one will error out, if delete or shell. It could be that shell finds the file while delete is still working on it, and you never know what will happen next.

    This issue is meant to open a debate. How shall we mitigate this issue? I've thought of three options, let me know if you have any more:

    • let the undefined behavior happen (as it would in the current state) but document it (i.e say which functions are potentially destructive). This might be a good thing to do while we're developing a more useful idea into the project, to advise against known issues.
    • staticly analyze the code, and trigger an error before it's run if there are calls within the same cycle to functions which will potentially destroy the resource (using the resource would mean passing the path, or the name, to a create/delete/shell function). This seems to me as the best one of the three.
    • silently modify the code before it's run, moving each call to their own separate cycle, and probably issuing a warning that those functions won't execute concurrently because they're trying to own the same resource at one. This is not a great thing to do as you're probably hindering performance through separating the functions and actually don't know which of the functions would be desired to run first.

    Final note: I don't think we should start working on this immediately, but instead come up with different ideas or expand one of them as the project matures.

    bug documentation enhancement 
    opened by cybergsus 8
  • Add tokio runtime to optimize voila and make it faster

    Add tokio runtime to optimize voila and make it faster

    I've been testing Voila execution times using the tokio runtime. These are the results:

    • no tokio runtime
      ➜ time ./target/debug/voila ~ '@name == @name { print(@path) }' -r
       Executed in   80.10 secs    fish           external
         usr time   59.58 secs  600.00 micros   59.58 secs
         sys time   13.80 secs  236.00 micros   13.80 secs
      
    • tokio runtime initialized on interpreter
      ➜ time ./target/debug/voila ~ '@name == @name { print(@path) }' -r
       Executed in   65.67 secs    fish           external
         usr time   58.11 secs  551.00 micros   58.11 secs
         sys time    7.39 secs  263.00 micros    7.39 secs
      
    • tokio runtime initialized on main
      ➜ time ./target/debug/voila ~ '@name == @name { print(@path) }' -r
       Executed in   64.50 secs    fish           external
         usr time   57.34 secs    0.00 micros   57.34 secs
         sys time    7.01 secs  449.00 micros    7.01 secs
      

    This issue is for discussing which one should be implemented, if the one that only affects the interpreter, that is where all the async stuff resides, or implement it on all Voila's source by initializing it on main.

    enhancement 
    opened by Alonely0 6
  • ci(actions): improve build workflow

    ci(actions): improve build workflow

    This pull request changes or add:

    Changes:

    • Specify which os version to use, this will avoid a build error in case of an update on the latest version of the runner.

    Add:

    • I created a formatting workflow that makes commits for formatting code during the action run on pull requests.
    • Caching rust for improving next workflows runs.
    opened by afgalvan 6
  • Performance concern regarding print function

    Performance concern regarding print function

    The print function does not seem to implement block buffering. So if you print a lot of lines, you end up calling the write syscall for every line, which is quite costly.

    enhancement 
    opened by UE2020 6
  • add safety checker

    add safety checker

    This is a prototype of a safety checker, which should help to prevent shooting yourself in the foot. If you are sure of what you are doing you can opt out of the checker by using the --bypass-all-checks flag, but it is more recommended using the new unsafe token, which will skip individual functions. It can be used like this: copy(@name, @name.txt) unsafe print(@sum=sha256). I am not sure if maintaining both options is too much overkill, though.

    enhancement 
    opened by Alonely0 3
  • Compile time os checking + cross platform gh action builds

    Compile time os checking + cross platform gh action builds

    Prevents os specific compile errors caused by branched cfg! checking, in favor of #[cfg]. I've provided github action workflows for testing and building on linux, macos, and windows. This will only happen if changes to /src are committed.

    opened by xiuxiu62 2
  • Update sha-1 requirement from 0.9.7 to 0.10.5

    Update sha-1 requirement from 0.9.7 to 0.10.5

    Updates the requirements on sha-1 to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Update sha2 requirement from 0.9.5 to 0.10.5

    Update sha2 requirement from 0.9.5 to 0.10.5

    Updates the requirements on sha2 to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Update sha2 requirement from 0.9.5 to 0.10.3

    Update sha2 requirement from 0.9.5 to 0.10.3

    Updates the requirements on sha2 to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump actions/checkout from 2 to 3.0.2

    Bump actions/checkout from 2 to 3.0.2

    Bumps actions/checkout from 2 to 3.0.2.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v3...v3.0.2

    v3.0.1

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    v2.1.0

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • Update sha-1 requirement from 0.9.7 to 0.10.1

    Update sha-1 requirement from 0.9.7 to 0.10.1

    Updates the requirements on sha-1 to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump Swatinem/rust-cache from 1 to 2

    Bump Swatinem/rust-cache from 1 to 2

    Bumps Swatinem/rust-cache from 1 to 2.

    Release notes

    Sourced from Swatinem/rust-cache's releases.

    v2.0.0

    • The action code was refactored to allow for caching multiple workspaces and different target directory layouts.
    • The working-directory and target-dir input options were replaced by a single workspaces option that has the form of $workspace -> $target.
    • Support for considering env-vars as part of the cache key.
    • The sharedKey input option was renamed to shared-key for consistency.

    v1.4.0

    • Clean both debug and release target directories.

    v1.3.0

    • Use Rust toolchain file as additional cache key.
    • Allow for a configurable target-dir.

    v1.2.0

    • Cache ~/.cargo/bin.
    • Support for custom $CARGO_HOME.
    • Add a cache-hit output.
    • Add a new sharedKey option that overrides the automatic job-name based key.

    v1.1.0

    • Add a new working-directory input.
    • Support caching git dependencies.
    • Lots of other improvements.

    v1.0.1

    • Improved logging output.
    • Make sure to consider all-features dependencies when pruning.
    • Work around macOS cache corruption.
    • Remove git-db cache for now.
    Changelog

    Sourced from Swatinem/rust-cache's changelog.

    Changelog

    2.2.0

    • Add new save-if option to always restore, but only conditionally save the cache.

    2.1.0

    • Only hash Cargo.{lock,toml} files in the configured workspace directories.

    2.0.2

    • Avoid calling cargo metadata on pre-cleanup.
    • Added prefix-key, cache-directories and cache-targets options.

    2.0.1

    • Primarily just updating dependencies to fix GitHub deprecation notices.

    2.0.0

    • The action code was refactored to allow for caching multiple workspaces and different target directory layouts.
    • The working-directory and target-dir input options were replaced by a single workspaces option that has the form of $workspace -> $target.
    • Support for considering env-vars as part of the cache key.
    • The sharedKey input option was renamed to shared-key for consistency.

    1.4.0

    • Clean both debug and release target directories.

    1.3.0

    • Use Rust toolchain file as additional cache key.
    • Allow for a configurable target-dir.

    1.2.0

    • Cache ~/.cargo/bin.
    • Support for custom $CARGO_HOME.
    • Add a cache-hit output.
    • Add a new sharedKey option that overrides the automatic job-name based key.

    1.1.0

    • Add a new working-directory input.
    • Support caching git dependencies.
    • Lots of other improvements.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump actions/checkout from 2 to 3.1.0

    Bump actions/checkout from 2 to 3.1.0

    Bumps actions/checkout from 2 to 3.1.0.

    Release notes

    Sourced from actions/checkout's releases.

    v3.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.0.2...v3.1.0

    v3.0.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v3...v3.0.2

    v3.0.1

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.4.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.4.2

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    v3.1.0

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Update sha2 requirement from 0.9.5 to 0.10.6

    Update sha2 requirement from 0.9.5 to 0.10.6

    Updates the requirements on sha2 to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Update criterion requirement from 0.3.5 to 0.4.0

    Update criterion requirement from 0.3.5 to 0.4.0

    Updates the requirements on criterion to permit the latest version.

    Changelog

    Sourced from criterion's changelog.

    [0.4.0] - 2022-09-10

    Removed

    • The Criterion::can_plot function has been removed.
    • The Criterion::bench_function_over_inputs function has been removed.
    • The Criterion::bench_functions function has been removed.
    • The Criterion::bench function has been removed.

    Changed

    • HTML report hidden behind non-default feature flag: 'html_reports'
    • Standalone support (ie without cargo-criterion) feature flag: 'cargo_bench_support'
    • MSRV bumped to 1.57
    • rayon and plotters are optional (and default) dependencies.
    • Status messages ('warming up', 'analyzing', etc) are printed to stderr, benchmark results are printed to stdout.
    • Accept subsecond durations for --warm-up-time, --measurement-time and --profile-time.
    • Replaced serde_cbor with ciborium because the former is no longer maintained.
    • Upgrade clap to v3 and regex to v1.5.

    Added

    • A --discard-baseline flag for discarding rather than saving benchmark results.
    • Formal support for benchmarking code compiled to web-assembly.
    • A --quiet flag for printing just a single line per benchmark.
    • A Throughput::BytesDecimal option for measuring throughput in bytes but printing them using decimal units like kilobytes instead of binary units like kibibytes.

    Fixed

    • When using bench_with_input, the input parameter will now be passed through black_box before passing it to the benchmark.

    [0.3.6] - 2022-07-06

    Changed

    • MSRV bumped to 1.49
    • Symbol for microseconds changed from ASCII 'us' to unicode 'µs'
    • Documentation fixes
    • Clippy fixes

    [0.3.5] - 2021-07-26

    Fixed

    • Corrected Criterion.toml in the book.
    • Corrected configuration typo in the book.

    Changed

    • Bump plotters dependency to always include a bug-fix.
    • MSRV bumped to 1.46.

    ... (truncated)

    Commits
    • 5e27b69 Merge branch 'version-0.4'
    • 4d6d69a Increment version numbers.
    • 935c632 Add Throughput::BytesDecimal. Fixes #581.
    • f82ce59 Remove critcmp code (it belongs in cargo-criterion) (#610)
    • a18d080 Merge branch 'master' into version-0.4
    • f9c6b8d Merge pull request #608 from Cryptex-github/patch-1
    • 8d0224e Fix html report path
    • 2934163 Add missing black_box for bench_with_input parameters. Fixes 566.
    • dfd7b65 Add duplicated benchmark ID to assertion message.
    • ce8259e Bump criterion-plot version number.
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump github/codeql-action from 1 to 2

    Bump github/codeql-action from 1 to 2

    Bumps github/codeql-action from 1 to 2.

    Changelog

    Sourced from github/codeql-action's changelog.

    2.1.8 - 08 Apr 2022

    • Update default CodeQL bundle version to 2.8.5. #1014
    • Fix error where the init action would fail due to a GitHub API request that was taking too long to complete #1025

    2.1.7 - 05 Apr 2022

    • A bug where additional queries specified in the workflow file would sometimes not be respected has been fixed. #1018

    2.1.6 - 30 Mar 2022

    • [v2+ only] The CodeQL Action now runs on Node.js v16. #1000
    • Update default CodeQL bundle version to 2.8.4. #990
    • Fix a bug where an invalid commit_oid was being sent to code scanning when a custom checkout path was being used. #956
    Commits
    • 2c03704 Allow the version of the ML-powered pack to depend on the CLI version
    • dd6b592 Simplify ML-powered query status report definition
    • a90d8bf Merge pull request #1011 from github/henrymercer/ml-powered-queries-pr-check
    • dc0338e Use latest major version of actions/upload-artifact
    • 57096fe Add a PR check to validate that ML-powered queries are run correctly
    • b0ddf36 Merge pull request #1012 from github/henrymercer/update-actions-major-versions
    • 1ea2f2d Merge branch 'main' into henrymercer/update-actions-major-versions
    • 9dcc141 Merge pull request #1010 from github/henrymercer/stop-running-ml-powered-quer...
    • ea751a9 Update other Actions from v2 to v3
    • a2949f4 Update actions/checkout from v2 to v3
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
Releases(3.4.1)
  • 3.4.1(Dec 29, 2021)

    This version comes with improvements to the optimizations and the compiler, which now ships with the source needed, so git isn't needed anymore.

    Source code(tar.gz)
    Source code(zip)
  • 3.4.0(Nov 14, 2021)

  • 3.3.0(Nov 1, 2021)

    This release has added the possibility to use raw strings! They work like normal strings, but between quotes or double quotes. Raw strings aren't evaluated, so @name wouldn't get replaced by the file name, and they let you use reserved tokens like curly brackets.

    For making the syntax more understandable, I wrote a BNF spec of Voila's syntax.

    Source code(tar.gz)
    Source code(zip)
  • 3.2.1(Oct 16, 2021)

  • 3.2.0(Oct 13, 2021)

  • 3.1.0(Oct 12, 2021)

  • 3.0.0(Oct 4, 2021)

    This is a big release.

    First of all, a safety checker has been added, so you don't shot yourself in the foot having a data race. The documentation has been moved to the GitHub wiki for having a more clean README & more organized docs. Last, but not less important, some bugs have been fixed.

    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Sep 17, 2021)

  • 2.0.0(Sep 12, 2021)

    This massive release includes a new variable, hidden which will be true whenever the file evaluated is hidden, but the thing that makes this 2.0 instead of 1.5 is that includes a brand-new AST, which makes the parser give much better error messages, has made optional passing a conditional (then everything matches), and regex now aren't delimited by #s.

    The entire codebase has been restructured, so because tomorrow my summer vacations end, and I'll have to get used to this new structure, the project will be less active, but I promise at least 0.5 commits per week (so at least 1 commit/2 weeks).

    All this was possible by @CyberGsus, a lot of thanks!

    Source code(tar.gz)
    Source code(zip)
  • 1.4.1(Aug 31, 2021)

    This release is a bit faster, has fixed some errors with the compression variables that created files with leading and ending spaces, and has refactored some variables (this does not affect its usage).

    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Aug 26, 2021)

    This release is more optimized, has added a benchmarking system (only useful for developers) and has added a new variable which will tell you whenever the file evaluated is a text file.

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Aug 16, 2021)

    This version includes a more polished source code that improved a bit the efficiency, but also includes the brand new GZIP compression functions! For more information, refer to the documentation, aka readme.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Aug 14, 2021)

    This release is a little little little bit more efficient on parsing and has introduced a new feature, the elf variable, which will tell you if the file evaluated is compliant to the Executable & Linkable Format.

    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(Aug 13, 2021)

    This version is 20-50% faster than the old one in recursive mode, has a better error handling and has fixed some issues with the checksum getters.

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Aug 9, 2021)

  • 1.1.0(Aug 7, 2021)

  • 1.0.3(Aug 7, 2021)

  • 1.0.2(Aug 3, 2021)

  • 1.0.0(Jul 31, 2021)

Owner
Guillem Jara
Hi, I'm Guillem. I am an enthusiast programmer with deep interest in programming and embedded systems.
Guillem Jara
A domain-specific language for writing AIR constraints for Miden VM

AirScript A domain specific language to write AIR constraints for the Miden VM. NOTE: This project is in the initial stages of development. Overview A

Polygon Miden 25 Dec 23, 2022
A domain-specific language for writing AIR constraints for Miden VM

AirScript A domain-specific language for expressing AIR constraints for STARKs, especially for STARK-based virtual machines like Miden VM. An in-depth

Polygon Miden 16 Nov 9, 2022
Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're working with files or directories, this tool simplifies common file operations with ease.

Rust FileOps Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're w

Harikesh Ranjan Sinha 5 May 2, 2024
A Rust program for DXdao contributors to calculated owed vested DXD amounts.

Vested DXD calculator vested-dxd-calculator is an utility program that DXdao contributors can use to calculate how much DXD they're owed for their ser

Federico Luzzi 2 Nov 21, 2022
🤖 just is a handy way to save and run project-specific commands.

just just is a handy way to save and run project-specific commands. (非官方中文文档,这里,快看过来!) Commands, called recipes, are stored in a file called justfile

Casey Rodarmor 8.2k Jan 5, 2023
RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions

RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions. Features Batch rename files and direct

Ismael González Valverde 219 Dec 31, 2022
Temporary files and directories with UTF-8 paths.

camino-tempfile A secure, cross-platform, temporary file library for Rust with UTF-8 paths. This crate is a wrapper around tempfile that works with th

null 4 Apr 24, 2023
RustRedOps is a repository dedicated to gathering and sharing advanced techniques and malware for Red Team, with a specific focus on the Rust programming language. (In Construction)

RustRedOps In Construction.... The project is still under development Overview RustRedOps is a repository that houses various tools and projects relat

João Victor 17 Dec 14, 2023
Remove files or directories.

Wrm - Remove files or directories Installation Run the following Cargo command: cargo install wrm Usage To move files to trash($HOME/.local/share/wrm

null 41 Mar 4, 2024
A commmand line tool for uploading homework coded on the dcloud server onto specific google drive course folders.

A commmand line tool for uploading homework coded on the dcloud server onto specific google drive course folders.

Daniel Kogan 2 Sep 8, 2022
A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

Vagelis Prokopiou 4 Aug 14, 2022
Tool for managing dotfiles directories; Heavily based on rcm.

Paro paro : to prepare, get ready / set, put / furnish, supply. Tool for managing dotfiles directories; Heavily based on rcm. TODO Rust Boilerplate CI

Rafael Delboni 7 Nov 20, 2022
qsv - Performant CLI tool to query CSVs through SQL

qsv Performant CLI tool to query CSVs through SQL Installation After cloning the repository, you can install a binary locally using cargo install --pa

Dermot Haughey 3 Oct 28, 2021
A rust library + CLI tool that tells you when swas will upload new video through complex calculations

A rust library + CLI tool that tells you when swas will upload new video through complex calculations. It also lets you search and play youtube videos of swas and other channels. Searching about youtube channels is also an option. Basically it's a youtube search cli tool written in rust.

midnightFirefly 4 Jun 10, 2022
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

Mufeed VH 38 Dec 30, 2022
Find and clean heavy build or cache directories.

ProjClean Find and clean heavy build or cache directories. ProjClean finds directories such as node_modules(node), target(rust), build(java) and their

null 42 Sep 25, 2022
Bruteforce connecting to a specific Sea of Thieves server. Useful if you want to be in the same server as your friends.

SoT Server Finder Find which Sea of Thieves server you're connected to. Useful if you want to be in the same server as your friends. Setup Download so

Martin 4 Mar 19, 2023
Quickly find all blackhole directories with a huge amount of filesystem entries in a flat structure

findlargedir About Findlargedir is a tool specifically written to help quickly identify "black hole" directories on an any filesystem having more than

Dinko Korunic 24 Jan 1, 2023
Semi-persistent, scoped test directories

Semi-persistent, scoped test directories This crate aims to make it easier to use temporary directories in tests, primarily by calling the testdir!()

Floris Bruynooghe 4 Nov 19, 2022