Ion - a CLI toolbox for Julia developers

Overview

Ion - a CLI toolbox for Julia developers

Build codecov GitHub commits since tagged version

Ion is a CLI toolbox for Julia developer. It provides a set of tools to help you develop Julia packages.

Installation

pre-build binary

Download tarball in the release page and extract it to your $HOME/.julia directory.

build from source

Using just and Rust's cargo/rustc compiler:

just install

Documentation

  • Ion website
  • check ion --help for more information in the terminal

License

MIT License

Comments
  • Feat: implement --verbose flag on `ion template inspect` cmd

    Feat: implement --verbose flag on `ion template inspect` cmd

    I had a little extra time over the last couple of days, so I thought I'd finish this off.

    I also included an update to the README / docs, just to flesh it out a bit until you have the time to fill out the Readme a little more with your own words.

    opened by diversable 11
  • Suggest Docs Update

    Suggest Docs Update

    as mentioned previously, if you'd like to use the updated readme in this PR for the Ion README or website, feel free.

    This is just your own words, cleaned up a bit, from your post on the Julia Discourse forum. It has been edited for grammar / clarity in a few spots, but none of the meaning has been changed.

    opened by diversable 2
  • Bug: grcov workflow/action - results report error(s)

    Bug: grcov workflow/action - results report error(s)

    While attempting to fix the GRCov workflow file (which I've made progress on: see latest update grcov commits from the pull request adding the ion template inspect --verbose display logic.

    I'm currently blocked on this issue.. so, I've pasted the output from the failing test here:

    """ failures:

    ---- spec::registry::tests::test_registry stdout ---- thread 'spec::registry::tests::test_registry' panicked at 'called Result::unwrap() on an Err value: TOML parse error at line 1, column 1 | 1 | | ^ missing field name ', src/ion/spec/registry.rs:226:59 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

    ---- spec::registry::tests::test_registry_data stdout ---- thread 'spec::registry::tests::test_registry_data' panicked at 'called Result::unwrap() on an Err value: TOML parse error at line 1, column 1 | 1 | | ^ missing field name ', src/ion/spec/registry.rs:241:59

    failures: spec::registry::tests::test_registry spec::registry::tests::test_registry_data

    test result: FAILED. 15 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 18.66s

    error: test failed, to rerun pass -p ion --lib Error: The process '/home/runner/.cargo/bin/cargo' failed with exit code 101

    """

    opened by diversable 2
  • feat: add `ion template inspect` command

    feat: add `ion template inspect` command

    The template command(s) have been tested and are working; hopefully the style somewhat keeps with the Ion repo.

    You may want to check out the 'clone' tests, though - I'm getting intermittent failures with that test, and can't figure out why yet (nothing I did should've had any impact on the bin::clone::test_clone test). Just thought you should know, if you weren't already aware...

    Closes issue: https://github.com/Roger-luo/Ion/issues/9#issue-1584769565

    NB: updates have been made to deal with the non-happy-path; as of now, if the template the user wants to inspect does not exist in the list of templates installed, Ion will present a list of installed templates for the user to choose from..

    opened by diversable 2
  • build(deps): update self_update requirement from 0.35.0 to 0.36.0

    build(deps): update self_update requirement from 0.35.0 to 0.36.0

    Updates the requirements on self_update to permit the latest version.

    Changelog

    Sourced from self_update's changelog.

    [0.36.0]

    Added

    Changed

    • For the gitlab backend, urlencode the repo owner in API calls to handle cases where the repo is owned by a subgroup

    Removed

    [0.35.0]

    Added

    Changed

    • Support selecting from multiple release artifacts by specifying an identifier
    • Update quick-xml to 0.23.0

    Removed

    [0.34.0]

    Added

    • Add with_url method to UpdateBuilder

    Changed

    Removed

    [0.33.0]

    Added

    • Support for Gitea / Forgejo

    Changed

    Removed

    [0.32.0]

    Added

    • Support for self hosted gitlab servers

    Changed

    Removed

    [0.31.0]

    Added

    • Support S3 dualstack endpoints

    Changed

    • Update indicatif 0.16.0 -> 0.17.0

    Removed

    [0.30.0]

    Added

    Changed

    • Bump semver 0.11 -> 1.0

    Removed

    [0.29.0]

    Added

    Changed

    • Bump zip 0.5 -> 0.6
    • Bump quick-xml 0.20 -> 0.22

    Removed

    ... (truncated)

    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
  • build(deps): bump Swatinem/rust-cache from 1 to 2

    build(deps): 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] 1
  • build(deps): bump actions/checkout from 2 to 3

    build(deps): bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    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.6.0

    What's Changed

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

    v2.5.0

    What's Changed

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

    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

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    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

    ... (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] 1
  • fix: polish error msg

    fix: polish error msg

    It seems we have build issues with nix package on windows, we will need to use nix on *nix only platform to make windows builds.

    on MacOS we have this strange Input/output IO error, it seems the PtySession is having issues, turning of MacOS CI for now due to this too.

    I can reproduce the MacOS error when build the code coverage, but it works fine in normal debug builds.

    opened by Roger-luo 1
  • Link to ANN post

    Link to ANN post

    I found this software through github, but had no idea what it does. I googled "roger luo ion" and found this helpful thread: https://discourse.julialang.org/t/ann-the-ion-command-line-for-julia-developers-written-in-rust/94495

    Maybe would be good to add a link to that in the readme? (temporarily, until the docs are up, I suppose)

    opened by tfiers 1
  • build(deps): update spinoff requirement from 0.6.0 to 0.7.0

    build(deps): update spinoff requirement from 0.6.0 to 0.7.0

    Updates the requirements on spinoff to permit the latest version.

    Release notes

    Sourced from spinoff's releases.

    v0.7.0

    What's Changed

    • Features introduced in place of the spinner enum
    • Users can now create their own spinners
    • Added spinner segment to readme
    • Changed documentation

    Full Changelog: https://github.com/ad4mx/spinoff/compare/v0.6.0...v0.7.0

    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
  • feat: add `ion template inspect` command

    feat: add `ion template inspect` command

    The template command(s) have been tested and are working; hopefully the style somewhat keeps with the Ion repo.

    You may want to check out the 'clone' tests, though - I'm getting intermittent failures with that test, and can't figure out why yet (nothing I did should've had any impact on the bin::clone::test_clone test). Just thought you should know, if you weren't already aware...

    opened by diversable 1
  • git@github.com remote url

    [email protected] remote url

    Hi,

    Super cool tool, thanks!

    Most of my repos use a remote url defined in the config like [email protected]:louisponet/RemoteHPC.jl rather than the actual https::/ url.

    This leads to Invalid remote url errors.

    Is it possible to handle this case?

    cheers

    bug 
    opened by louisponet 1
  • feat: ion test

    feat: ion test

    this is something I always wanted - a test runner just runs Julia's own Test but in parallel and only based on file names without asking people putting include inside @testset, e.g

    @testset "print" begin
       include("inline.jl")
       include("tree.jl")
       include("multi.jl")
    end
    

    this seems to be a quite common pattern in the ecosystem, and at least causing me to keep forgetting to include newly added tests quite often.


    ion test basically just treats any dir/file starting with test_ as a separate test job and runs that with the following script

    using TestEnv; TestEnv.activate(); include("test_xxxx.jl")
    

    then collect the test report in async fashion (so we can make use of multi-threading) and print failed tests in the end, with -v, --verbose print the full test report optionally.


    • [x] progress bar
    • [x] ~async schedule via tokio~ use rayon for a work-stealing schedule fits our needs of nested parallelism better
    • [ ] pretty printing of test report
    • [x] task collecting
    • [x] task report
    • [ ] --test-threads option
    opened by Roger-luo 1
  • feat: add `ion template inspect` command

    feat: add `ion template inspect` command

    As a user of Ion cli, I would like to be able to quickly see what attributes / setup a package template has prior to creating a new project with that template (without needing to go to the Ion-Templates repo on Github).

    In order to serve this use-case, a command which prints the template's contents to the terminal would be helpful.

    The command ion template inspect <TEMPLATE_NAME> would serve this use-case well.

    enhancement 
    opened by diversable 2
  • package search

    package search

    I haven't had the chance to re-implement the search command from IonCLI.jl, this command is not only useful for search Julia packages but also useful for auto-completions in shell.

    enhancement 
    opened by Roger-luo 0
Releases(v0.1.17)
Owner
Rogerluo
I cast quantum spells
Rogerluo
A container image builder tool for OCI (distrobox/toolbox, also podman/docker)

Distrobox Boost A container image builder tool for Open Container Initiative (distrobox/toolbox, also podman/docker). Distrobox is good enough in runn

xz-dev 6 Aug 15, 2023
Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal

Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal. At its core, it is a terminal multiplexer (similar to tmux and screen), but this is merely its infrastructure layer.

null 9.3k Jan 4, 2023
A comprehensive collection of resources and learning materials for Rust programming, empowering developers to explore and master the modern, safe, and blazingly fast language.

?? Awesome Rust Lang ⛰️ Project Description : Welcome to the Awesome Rust Lang repository! This is a comprehensive collection of resources for Rust, a

Shubham Raj 16 May 29, 2023
Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices

Welcome to the server-side application for the HarmonyLink project. This innovative software is developed with the Rust programming language and is ai

Jordon Brooks 5 Jun 28, 2023
Nexa programming language. A language for game developers by a game developer

NexaLang Nexa programming language. A language for game developers by a game developer. Features High-Level: Nexa is an easy high level language Two M

Sabe 3 Aug 21, 2023
A CLI tool to get help with CLI tools 🐙

A CLI tool to get help with CLI tools ?? halp aims to help find the correct arguments for command-line tools by checking the predefined list of common

Orhun Parmaksız 566 Apr 16, 2023
Quickly build cool CLI apps in Rust.

QuiCLI Quickly build cool CLI apps in Rust. Getting started Read the Getting Started guide! Thanks This is only possible because of all the awesome li

Pascal Hertleif 538 Dec 5, 2022
A minimal CLI framework written in Rust

seahorse A minimal CLI framework written in Rust Features Easy to use No dependencies Typed flags(Bool, String, Int, Float) Documentation Here Usage T

Keisuke Toyota 223 Dec 30, 2022
CLI calculator app and library

calc Yet another CLI calculator. Inspired by the excellent https://github.com/alfredxing/calc. Installation With a Rust toolchain in place: cargo inst

Peter Goodspeed-Niklaus 34 Nov 13, 2022
Turn static CLI commands into TUIs with ease

lazycli Turn static CLI commands into TUIs with ease Demo: Usage Pick a command that spits out either a list or table of content, like ls, docker ps,

Jesse Duffield 255 Dec 20, 2022
CLI Tool for tagging and organizing files by tags.

wutag ?? ??️ CLI tool for tagging and organizing files by tags. Install If you use arch Linux and have AUR repositories set up you can use your favour

Wojciech Kępka 32 Dec 6, 2022
📜🔁🎶 A CLI which converts morse code into sound

morse2sound ?? A CLI which converts morse code to sound Big shoutout to Br1ght0ne for guiding me how to use Rust on stream

Ilya Revenko 15 Dec 4, 2022
A CLI utility to secretly copy secrets to your clipboard. 🦀

seclip ?? ?? A CLI utility to secretly copy secrets to your clipboard. ?? Table of Contents Features Installation Usage Build From Source Contribution

Mufeed VH 34 Dec 27, 2022
Punic is a remote caching CLI built for Apple's .xcframework

Punic is a remote caching CLI built for Carthage that exclusively supports Apple's .xcframeworks.

Shred Labs 26 Nov 22, 2022
CLI tool to bake your fresh and hot MD files

At least once in your Rust dev lifetime you wanted to make sure all code examples in your markdown files are up-to-date, correct and code is formated, but you couldn't make that done with already existing tools - fear not!

Patryk Budzyński 39 May 8, 2021
A CLI tool that allow you to create a temporary new rust project using cargo with already installed dependencies

cargo-temp A CLI tool that allow you to create a new rust project in a temporary directory with already installed dependencies. Install Requires Rust

Yohan Boogaert 61 Oct 31, 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
CLI search and replace | Space Age seD

SAD! Space Age seD What does it do? Basically sad is a Batch File Edit tool. It will show you a really nice diff of proposed changes before you commit

i love my dog 986 Dec 29, 2022
Intuitive find & replace CLI (sed alternative)

sd - s[earch] & d[isplace] sd is an intuitive find & replace CLI. The Pitch Why use it over any existing tools? Painless regular expressions sd uses r

Gregory 4k Jan 4, 2023