Giter VIP home page Giter VIP logo

cargo-scaffold's Introduction

Cargo-scaffold

cargo-scaffold is a flexible and easy-to-use developper tool to let you scaffold a project. It's fully configurable without writing any line of code. It generates any kind of projects with a developer friendly CLI.

Features

  • Scaffold a project in seconds
  • Declarative
  • User interactions automatically generated
  • Not only for Rust crate/project. It's completely language agnostic

Installation

cargo install cargo-scaffold

Usage

You can scaffold your project from any cargo-template scaffold located locally in a directory or in a git repository

# Locally
cargo scaffold your_template_dir

# From git repository
cargo scaffold https://github.com/username/template.git

# From git repository based on a specific commit
cargo scaffold https://github.com/username/template.git -t deed14dcbf17ba87f6659ea05755cf94cb1464ab

# From git repository based on a specific branch
cargo scaffold https://github.com/username/template.git -t main

Here are the available options for cargo scaffold:

USAGE:
    cargo-scaffold scaffold [FLAGS] [OPTIONS] <template>

FLAGS:
    -a, --append        Append files in the target directory, create directory with the project name if it doesn't
                        already exist but doesn't overwrite existing file (use force for that kind of usage)
    -f, --force         Override target directory if it exists
    -h, --help          Prints help information
    -p, --passphrase    Specify if your SSH key is protected by a passphrase
    -V, --version       Prints version information

OPTIONS:
    -t, --git_ref <git_ref>
            Full commit hash, tag or branch from which the template is cloned (i.e.: "deed14dcbf17ba87f6659ea05755cf94cb1464ab" or "v0.5.0" or "main")
    -n, --name <name>
            Specify the name of your generated project (and so skip the prompt asking for it)
        --param <parameters>...                  Supply parameters via the command line in <name>=<value> format
    -k, --private_key_path <private-key-path>
            Specify if your private SSH key is located in another location than $HOME/.ssh/id_rsa

    -r, --path <repository_template_path>
            Specify your template location in the repository if it's not located at the root of your repository

    -d, --target_directory <target_directory>    Specify the target directory

ARGS:
    <template>    Specify your template location

Write your own template

To let you scaffold and generate different projects the only mandatory part is to have a .scaffold.toml file at the root of the template directory. This file is used to document and add user interactions for your template. In your template's directory each files and directories will be copy/pasted to your generated project but updated using Handlebars templating.

Template description

Here is an example of .scaffold.toml file:

# Basic template informations
[template]
name = "test"
author = "Benjamin Coenen <[email protected]>"
version = "0.1.0"

# Exclude paths you do not want copy/pasted in the generated project
exclude = [
    "./target"
]

# Notes to display at the end of the generation
notes = """
Have fun using this template called {{name}} ! Here is the description: {{description}}
"""

[hooks]
# Commands to be executed before scaffolding, from within the generated project
pre = [
    "bash -c some_pre_script.sh"
]
# Commands to be executed after scaffolding, from within the generated project
post = [
    "cargo vendor",
    "bash -c some_post_script.sh"
]

# Parameters are basically all the variables needed to generate your template using templating.
# It will be displayed as prompt to interact with user (thanks to the message subfield).
# All the parameters will be available in your templates as variables (example: `{{description}}`).
[parameters]
    # [parameters.name] is already reserved
    [parameters.feature]
    type = "string"
    message = "What is the name of your feature ?"
    required = true

    [parameters.gender]
    type = "select"
    message = "Which kind of API do you want to scaffold ?"
    values = ["REST", "graphql"]

    [parameters.dependencies]
    type = "multiselect"
    message = "Which dependencies do you want to use ?"
    values = ["serde", "anyhow", "regex", "rand", "tokio"]

    [parameters.description]
    type = "string"
    message = "What is the description of your feature ?"
    default = "Here is my default description"

    [parameters.show_description]
    type = "boolean"
    message = "Do you want to display the description ?"

    [parameters.limit]
    type = "integer"
    message = "What is the limit ?"

Here is the list of different types you can use for your parameter: string, integer, float, boolean, select, multiselect.

Templating

In any files inside your template's directory you can use Handlebars templating. Please refer to that documentation for all the syntax about templating. If you're looking for custom helpers in Handlerbars you can check the documentation here. Here is a basic example if you want to display the parameter named description and if the boolean parameter show_description is set to true as described in the previous section.

{{#if show_description}} {{description}} {{/if}}
{{#forRange 5}}
Repeat this line 5 times with the current {{@index}}{{/forRange}}

You can also put templating in path for directory or filename into your template (example: a file called {{name}}.rs would be generated with the right name).

Credits

Thanks @Arlune for this awesome logo and all reviewers.

Alternatives

cargo-scaffold's People

Contributors

antleblanc avatar bnjjj avatar bryncooke avatar campeis avatar de-vri-es avatar everlastingbugstopper avatar gabhijit avatar geal avatar o0ignition0o avatar thibsg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

cargo-scaffold's Issues

Unexpected Argument of git repo

Team, I'm trying to create an apollo custom router scaffold by following the instructions in their doc. It fails with the below error.

cargo scaffold https://github.com/apollographql/router.git -r apollo-router-scaffold/templates/base -t main
error: unexpected argument 'https://github.com/apollographql/router.git' found

Usage: cargo-scaffold [OPTIONS] <template>

For more information, try '--help'.

Anything changed recently which changed the format of the command. In the help I do not see an option to mention the root of a git repo. Kindly advise.

Also allow branch name when using -t

cargo-scaffold scaffold https://github.com/apollographql/router.git -r apollo-router-scaffold/templates/base -t "bryn/getting-started"     
🔄 Cloning repository…
Error: revspec 'bryn/getting-started' not found; class=Reference (4); code=NotFound (-3)

Allow parameter expansion on hooks

Say you want to enter the directory or do something using the parameter name or even run a script within the newly created project.

post = [
    "cd {{name}}",
]

Allow deriving of parameters before templating

For the templates I'm going to have to have Pascal and snake case versions of the name.

What I'd like is to ask the questions of the user and then get a callback so that I can insert some more parameters. Maybe an extra thing that can be set in Opts.

opts.populate_parameters(|params| {
// derive some params here and insert them in the map
})

Is there any support for arm64?

Failed to install cargo-scaffold on arm64 (mac m1 chip). Can i do something about it, or it's just cargo-scaffold limitation?

ld: warning: ignoring file /usr/local/opt/[email protected]/lib/libssl.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /usr/local/opt/[email protected]/lib/libcrypto.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
          Undefined symbols for architecture arm64:
            "_EVP_cast5_cbc", referenced from:
                _libssh2_crypt_method_cast128_cbc in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_EVP_aes_128_cbc", referenced from:
                _libssh2_crypt_method_aes128_cbc in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_EVP_aes_192_cbc", referenced from:
                _libssh2_crypt_method_aes192_cbc in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_EVP_aes_256_cbc", referenced from:
                _libssh2_crypt_method_aes256_cbc in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
                _libssh2_crypt_method_rijndael_cbc_lysator_liu_se in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_EVP_CIPHER_CTX_free", referenced from:
                _crypt_dtor in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_EVP_ripemd160", referenced from:
                _mac_method_hmac_ripemd160_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_EVP_md5", referenced from:
                _mac_method_hmac_md5_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_EVP_rc4", referenced from:
                _libssh2_crypt_method_arcfour128 in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
                _libssh2_crypt_method_arcfour in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_HMAC_CTX_new", referenced from:
                _mac_method_hmac_sha2_256_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha2_512_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha1_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_md5_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_ripemd160_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_EVP_aes_128_ctr", referenced from:
                _libssh2_crypt_method_aes128_ctr in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_HMAC_Update", referenced from:
                _mac_method_hmac_sha2_256_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha2_512_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha1_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_md5_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_ripemd160_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_HMAC_Final", referenced from:
                _mac_method_hmac_sha2_256_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha2_512_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha1_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_md5_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_ripemd160_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_HMAC_CTX_free", referenced from:
                _mac_method_hmac_sha2_256_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha2_512_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha1_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_md5_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_ripemd160_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_BN_set_word", referenced from:
                _kex_method_diffie_hellman_group16_sha512_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _kex_method_diffie_hellman_group18_sha512_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _kex_method_diffie_hellman_group14_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _kex_method_diffie_hellman_group1_sha1_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
            "_RAND_bytes", referenced from:
                __libssh2_kex_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                __libssh2_transport_send in liblibssh2_sys-0ebb39934f37b404.rlib(transport.o)
            "_EC_KEY_set_private_key", referenced from:
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_set1_EC_KEY", referenced from:
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_set1_DSA", referenced from:
                _gen_publickey_from_dsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_sub", referenced from:
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_get1_EC_KEY", referenced from:
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_new", referenced from:
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_dsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_mod_exp", referenced from:
                __libssh2_dh_key_pair in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dh_secret in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_set1_RSA", referenced from:
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_ENGINE_register_all_complete", referenced from:
                __libssh2_openssl_crypto_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_clear_free", referenced from:
                __libssh2_dh_dtor in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _kex_method_curve25519_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _ecdh_sha2_nistp in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _kex_method_diffie_hellman_group_exchange_sha256_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _diffie_hellman_sha_algo in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _kex_method_diffie_hellman_group16_sha512_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                ...
            "_DSA_free", referenced from:
                _gen_publickey_from_dsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_dsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _hostkey_method_ssh_dss_init in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_dss_initPEM in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_dss_initPEMFromMemory in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_dss_dtor in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
            "_RSA_free", referenced from:
                _gen_publickey_from_rsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _hostkey_method_ssh_rsa_init in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_rsa_initPEM in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_rsa_initPEMFromMemory in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_rsa_dtor in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
            "_EVP_PKEY_get1_RSA", referenced from:
                _gen_publickey_from_rsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_RSA_get0_key", referenced from:
                _gen_publickey_from_rsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_rand", referenced from:
                __libssh2_dh_key_pair in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_DigestVerifyInit", referenced from:
                __libssh2_ed25519_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_sha1", referenced from:
                _mac_method_hmac_sha1_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_EVP_DigestVerify", referenced from:
                __libssh2_ed25519_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_CTX_new", referenced from:
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_derive", referenced from:
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_GROUP_get_degree", referenced from:
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_derive_set_peer", referenced from:
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_KEY_generate_key", referenced from:
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_RSA_set0_factors", referenced from:
                __libssh2_rsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_KEY_get0_public_key", referenced from:
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_CTX_free", referenced from:
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _diffie_hellman_sha_algo in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
            "_EC_POINT_point2oct", referenced from:
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_POINT_free", referenced from:
                __libssh2_ecdsa_curve_name_with_octal_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_ECDSA_do_sign", referenced from:
                __libssh2_ecdsa_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_CTX_new", referenced from:
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _diffie_hellman_sha_algo in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
            "_ECDSA_SIG_get0", referenced from:
                __libssh2_ecdsa_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_POINT_oct2point", referenced from:
                __libssh2_ecdsa_curve_name_with_octal_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_do_sign", referenced from:
                __libssh2_dsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_bn2bin", referenced from:
                __libssh2_dsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_dsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _kex_method_curve25519_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _ecdh_sha2_nistp in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _diffie_hellman_sha_algo in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                ...
            "_EVP_aes_256_ctr", referenced from:
                _libssh2_crypt_method_aes256_ctr in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_PEM_read_bio_PrivateKey", referenced from:
                __libssh2_ed25519_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfile in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfilememory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_RSA_sign", referenced from:
                __libssh2_rsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_CTX_new_id", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_get0_pqg", referenced from:
                _gen_publickey_from_dsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_new_raw_public_key", referenced from:
                __libssh2_ed25519_new_public in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_KEY_free", referenced from:
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _hostkey_method_ssh_ecdsa_init in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_ecdsa_initPEM in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_ecdsa_initPEMFromMemory in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_ecdsa_dtor in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _kex_method_ecdh_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                ...
            "_EVP_PKEY_new_raw_private_key", referenced from:
                _gen_publickey_from_ed25519_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_keygen", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_des_ede3_cbc", referenced from:
                _libssh2_crypt_method_3des_cbc in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_RSA_verify", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_PEM_read_bio_ECPrivateKey", referenced from:
                __libssh2_ecdsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_set0_pqg", referenced from:
                __libssh2_dsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BIO_new_file", referenced from:
                __libssh2_rsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfile in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BIO_new_mem_buf", referenced from:
                __libssh2_rsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ed25519_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfilememory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_PEM_read_bio_RSAPrivateKey", referenced from:
                __libssh2_rsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_rsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_DigestSign", referenced from:
                __libssh2_ed25519_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_MD_CTX_free", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha1_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha256_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha384_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha512_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_RSA_set0_key", referenced from:
                __libssh2_rsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_Cipher", referenced from:
                __libssh2_cipher_crypt in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_num_bits", referenced from:
                __libssh2_dsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_dsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _kex_method_curve25519_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _ecdh_sha2_nistp in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                _diffie_hellman_sha_algo in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                ...
            "_EVP_CIPHER_CTX_new", referenced from:
                __libssh2_cipher_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_DigestSignInit", referenced from:
                __libssh2_ed25519_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_CipherInit", referenced from:
                __libssh2_cipher_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_ECDSA_SIG_new", referenced from:
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BIO_free", referenced from:
                __libssh2_rsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_rsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ed25519_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_ECDSA_do_verify", referenced from:
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_get0_key", referenced from:
                _gen_publickey_from_dsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_new", referenced from:
                __libssh2_rsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dh_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_EVP_PKEY_get_raw_private_key", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_get_raw_public_key", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ed_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_GROUP_get_curve_name", referenced from:
                __libssh2_ecdsa_get_curve_type in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_ENGINE_load_builtin_engines", referenced from:
                __libssh2_openssl_crypto_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_KEY_new_by_curve_name", referenced from:
                __libssh2_ecdsa_curve_name_with_octal_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_DigestInit", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha1_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha256_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha384_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha512_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_EVP_PKEY_CTX_free", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_aes_192_ctr", referenced from:
                _libssh2_crypt_method_aes192_ctr in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_ECDH_compute_key", referenced from:
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_OPENSSL_init_ssl", referenced from:
                std::sync::once::Once::call_once::_$u7b$$u7b$closure$u7d$$u7d$::h3018043a86053f39 (.llvm.14161300554431123787) in libopenssl_sys-57c1e63075f38677.rlib(openssl_sys-57c1e63075f38677.openssl_sys.a1614e54-cgu.4.rcgu.o)
                core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::heb23fe971afdbefb (.llvm.14161300554431123787) in libopenssl_sys-57c1e63075f38677.rlib(openssl_sys-57c1e63075f38677.openssl_sys.a1614e54-cgu.4.rcgu.o)
            "_RSA_set0_crt_params", referenced from:
                __libssh2_rsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_SIG_set0", referenced from:
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BIO_ctrl", referenced from:
                __libssh2_pub_priv_keyfile in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfilememory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_PEM_read_bio_DSAPrivateKey", referenced from:
                __libssh2_dsa_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_free", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ed25519_new_private in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ed25519_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ed25519_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfile in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfilememory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_EC_KEY_get0_group", referenced from:
                __libssh2_ecdsa_get_curve_type in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_curve_name_with_octal_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_create_key in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ec_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_HMAC_Init_ex", referenced from:
                _mac_method_hmac_sha2_256_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha2_512_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_sha1_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_md5_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
                _mac_method_hmac_ripemd160_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_DSA_do_verify", referenced from:
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_new", referenced from:
                __libssh2_dsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_derive_init", referenced from:
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_PKEY_get1_DSA", referenced from:
                _gen_publickey_from_dsa_evp in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_MD_CTX_new", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha1_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha256_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha384_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha512_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_EVP_sha256", referenced from:
                _mac_method_hmac_sha2_256_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_EVP_PKEY_keygen_init", referenced from:
                __libssh2_curve25519_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_SIG_new", referenced from:
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_SIG_get0", referenced from:
                __libssh2_dsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_ECDSA_SIG_free", referenced from:
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_RSA_size", referenced from:
                __libssh2_rsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_DigestUpdate", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _hostkey_method_ssh_ecdsa_signv in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_rsa_signv in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_dss_signv in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _kex_method_curve25519_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                ...
            "_DSA_SIG_free", referenced from:
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_sign in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_bf_cbc", referenced from:
                _libssh2_crypt_method_blowfish_cbc in liblibssh2_sys-0ebb39934f37b404.rlib(crypt.o)
            "_EVP_DigestFinal", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _hostkey_method_ssh_ecdsa_signv in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_rsa_signv in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _hostkey_method_ssh_dss_signv in liblibssh2_sys-0ebb39934f37b404.rlib(hostkey.o)
                _kex_method_curve25519_key_exchange in liblibssh2_sys-0ebb39934f37b404.rlib(kex.o)
                ...
            "_RSA_new", referenced from:
                __libssh2_rsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_div", referenced from:
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_value_one", referenced from:
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_POINT_new", referenced from:
                __libssh2_ecdsa_curve_name_with_octal_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_BN_bin2bn", referenced from:
                __libssh2_rsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdh_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_curve25519_gen_k in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_EVP_sha512", referenced from:
                _mac_method_hmac_sha2_512_hash in liblibssh2_sys-0ebb39934f37b404.rlib(mac.o)
            "_RSA_get0_factors", referenced from:
                _gen_publickey_from_rsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_ECDSA_SIG_set0", referenced from:
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_DSA_set0_key", referenced from:
                __libssh2_dsa_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EVP_get_digestbyname", referenced from:
                __libssh2_rsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_dsa_sha1_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_ecdsa_verify in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha1_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha256_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha384_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_sha512_init in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                ...
            "_EVP_PKEY_id", referenced from:
                __libssh2_ed25519_new_private_frommemory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfile in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                __libssh2_pub_priv_keyfilememory in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
            "_EC_KEY_set_public_key", referenced from:
                __libssh2_ecdsa_curve_name_with_octal_new in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
                _gen_publickey_from_ecdsa_openssh_priv_data in liblibssh2_sys-0ebb39934f37b404.rlib(openssl.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

Set up renovate or similar

It'd be good to bump some dependencies. In particular the buildstructor version used causes issues for users who use asdf.

cannot install cargo-scaffold v0.8.5 on mac intel

When trying to install cargo-scaffold, I got the following error:

cargo install cargo-scaffold
    Updating crates.io index
  Installing cargo-scaffold v0.8.5
   Compiling libc v0.2.135
   Compiling proc-macro2 v1.0.47
   Compiling quote v1.0.21
   Compiling unicode-ident v1.0.5
   Compiling syn v1.0.102
   Compiling memchr v2.5.0
   Compiling autocfg v1.1.0
   Compiling thiserror v1.0.37
   Compiling pkg-config v0.3.25
   Compiling version_check v0.9.4
   Compiling cfg-if v1.0.0
   Compiling lazy_static v1.4.0
   Compiling regex-syntax v0.6.27
   Compiling core-foundation-sys v0.8.3
   Compiling serde_derive v1.0.145
   Compiling unicode-width v0.1.10
   Compiling bitflags v1.3.2
   Compiling tinyvec_macros v0.1.0
   Compiling serde v1.0.145
   Compiling log v0.4.17
   Compiling ucd-trie v0.1.5
   Compiling fastrand v1.8.0
   Compiling unicode-bidi v0.3.8
   Compiling percent-encoding v2.2.0
   Compiling remove_dir_all v0.5.3
   Compiling itoa v1.0.4
   Compiling once_cell v1.15.0
   Compiling crc32fast v1.3.2
   Compiling adler v1.0.2
   Compiling fnv v1.0.7
   Compiling serde_json v1.0.86
   Compiling ryu v1.0.11
   Compiling hashbrown v0.12.3
   Compiling native-tls v0.2.10
   Compiling bytes v1.2.1
   Compiling unicode-segmentation v1.10.0
   Compiling linked-hash-map v0.5.6
   Compiling vec_map v0.8.2
   Compiling anyhow v1.0.65
   Compiling strsim v0.8.0
   Compiling wildmatch v1.1.0
   Compiling ansi_term v0.12.1
   Compiling number_prefix v0.3.0
   Compiling same-file v1.0.6
   Compiling md5 v0.7.0
   Compiling shell-words v1.1.0
   Compiling proc-macro-error-attr v1.0.4
   Compiling proc-macro-error v1.0.4
   Compiling indexmap v1.9.1
   Compiling textwrap v0.11.0
   Compiling tinyvec v1.6.0
   Compiling form_urlencoded v1.1.0
   Compiling miniz_oxide v0.5.4
   Compiling http v0.2.8
   Compiling yaml-rust v0.4.5
   Compiling heck v0.3.3
   Compiling walkdir v2.3.2
   Compiling unicode-normalization v0.1.22
   Compiling aho-corasick v0.7.19
   Compiling bstr v0.2.17
   Compiling idna v0.3.0
   Compiling flate2 v1.0.24
   Compiling terminal_size v0.1.17
   Compiling tempfile v3.3.0
   Compiling security-framework-sys v2.6.1
   Compiling core-foundation v0.9.3
   Compiling termios v0.3.3
   Compiling atty v0.2.14
   Compiling jobserver v0.1.25
   Compiling regex v1.6.0
   Compiling console v0.15.2
   Compiling clap v2.34.0
   Compiling url v2.3.1
   Compiling security-framework v2.7.0
   Compiling cc v1.0.73
   Compiling Inflector v0.11.4
   Compiling console v0.11.3
   Compiling globset v0.4.9
   Compiling console v0.12.0
   Compiling indicatif v0.15.0
   Compiling openssl-sys v0.9.76
   Compiling libz-sys v1.1.8
   Compiling libssh2-sys v0.2.23
   Compiling jsonnet-sys v0.17.0
   Compiling libgit2-sys v0.13.4+1.4.2
   Compiling str_inflector v0.12.0
   Compiling dialoguer v0.6.2
   Compiling thiserror-impl v1.0.37
   Compiling attohttpc v0.17.0
   Compiling try_match_inner v0.4.0
   Compiling structopt-derive v0.4.18
   Compiling try_match v0.3.0
   Compiling pest v2.4.0
   Compiling enquote v1.1.0
   Compiling buildstructor v0.3.2
   Compiling pest_meta v2.4.0
   Compiling jsonnet-rs v0.17.0
   Compiling structopt v0.3.26
   Compiling pest_generator v2.4.0
   Compiling pest_derive v2.4.0
   Compiling git2 v0.14.4
   Compiling toml v0.5.9
   Compiling serde_yaml v0.8.26
   Compiling handlebars v4.3.5
   Compiling handlebars_misc_helpers v0.12.1
   Compiling cargo-scaffold v0.8.5
error: linking with `clang` failed: exit status: 1
  |
  = note: "clang" "-m64" "-arch" "x86_64" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/rustchFOBtI/symbols.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.0.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.1.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.10.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.11.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.12.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.13.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.14.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.15.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.2.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.3.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.4.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.5.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.6.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.7.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.8.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.cargo_scaffold.7db91716-cgu.9.rcgu.o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4.3lmhlazx4v4373a1.rcgu.o" "-L" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps" "-L" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/build/libgit2-sys-e61b018a399c0e74/out/build" "-L" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/build/libssh2-sys-5fe11a225dfdf310/out/build" "-L" "/usr/local/opt/[email protected]/lib" "-L" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/build/jsonnet-sys-792914db1326ea36/out" "-L" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libcargo_scaffold-e38084eb270a5b8f.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libshell_words-1515c30f51491ae0.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libhandlebars_misc_helpers-f5745e7cb61abd39.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libenquote-da42eca7e4722e0a.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libserde_yaml-33058dbf94eaedc0.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libyaml_rust-32601fa5506f8973.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblinked_hash_map-0971fc25a868eae7.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libinflector-d9de973fab6fb225.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libjsonnet-0252661b06a0b2e8.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libjsonnet_sys-5eeda51008f91631.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libattohttpc-e7ad4474ea04d853.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libnative_tls-eb7c44a55a9db0b4.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libsecurity_framework-53c16223f3f906b2.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libsecurity_framework_sys-3fa65ddf4e3b8755.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libcore_foundation-f20ee6c73f507386.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libcore_foundation_sys-0ca7de4c5d16d2a1.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libwildmatch-8ca3f3f70c766426.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libflate2-508a2ddf3b431ee1.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libminiz_oxide-ecdb40c2cdc5ef2f.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libadler-ecf5b08bac00a973.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libcrc32fast-6c02979cb24654ae.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libhttp-1926b76f9aabc819.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libbytes-49c4f9b6fe48ec62.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libmd5-fc0ed7b13e284a82.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libtoml-3bff894f240ef575.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libindexmap-a940542334eb1b62.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libhashbrown-5e7a6f097f2ca45c.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libwalkdir-e1cb1b713b303a42.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libsame_file-b5b3ebbe21070585.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libstructopt-9bc92c33a724e792.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libclap-b707467d5e2b08df.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libvec_map-b7022e9deccad96a.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libtextwrap-5be7511a4ce3e7fe.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libstrsim-ee28a658ae804063.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libatty-f4d246cd2995b05a.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libansi_term-8affd236fd094f7c.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libglobset-a3a4c254242106b3.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libfnv-37777db1b355d5c7.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libbstr-58e026307d3b8695.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libhandlebars-05c70069d857890d.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libpest-8891df1d43a1dddc.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libucd_trie-dbe261391e886447.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libthiserror-805c25b81e1045bb.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libserde_json-55e3799720e7e9d9.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libryu-d1053c5ce0a10b6d.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libitoa-cca5616e26f96c56.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libserde-ab1a4fb57f186ad0.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libgit2-27ef9c7af7015e6d.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liburl-6dce9ad114a3dc51.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libidna-7bab3763cb1bf97a.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libunicode_normalization-f9e453dc533a4293.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libtinyvec-1912cfa7fc9ecd86.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libtinyvec_macros-a20290cd90cce085.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libunicode_bidi-4703de0cb70e2024.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libform_urlencoded-26cfe6bbc290dc29.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libpercent_encoding-1f4ff2cae73dc27d.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblog-c014a7cb9517e035.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblibgit2_sys-b981921dafb95433.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblibssh2_sys-b0d41bd446293a58.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libopenssl_sys-c64435f1540b8c5f.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblibz_sys-c0f7572a5bab6ca5.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libbitflags-7e70a6941a88af1d.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libdialoguer-80fb809bbda7d604.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libtempfile-5a67c5b0ec594a75.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libcfg_if-71ff7bf3845d02bd.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libfastrand-0cb96140797fc87c.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libremove_dir_all-d43bba1e7fc3daca.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libconsole-56ca81436e6cc571.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libconsole-3176a0d67d50d8e7.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libtermios-ec774d7487f70150.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libterminal_size-f3aa42666c493b11.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblibc-29d4e95ff1ad37bc.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libregex-fdf824cc146095a8.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libaho_corasick-50efd8dbf0f5288c.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libmemchr-1896e7fd7f622c59.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libregex_syntax-7d53bdc7dfbc7f51.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libunicode_width-6b20537f4fa0a02b.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/liblazy_static-b6807f579041be0f.rlib" "/private/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/libanyhow-e558d952ff5de167.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-0f7ee384278ce82b.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-6023318e4257fdb3.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libobject-50ed95d28fda9497.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libmemchr-114781e2905bc242.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libaddr2line-841a5df74cbbcf8e.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libgimli-9b35810dd2e8e276.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_demangle-d44decaafa04c51d.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd_detect-aa335e35e4a7724c.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libhashbrown-7ac72202be300078.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libminiz_oxide-2930c6f21f36f92f.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libadler-654445a53da668f3.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_alloc-ce034a3eed8d4113.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-51412ab8efb0f481.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcfg_if-1c20aac4d9e33893.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-5559092a2ede5191.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-05250b6a4768a099.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librustc_std_workspace_core-10f98b32877a2067.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-56d27115b82c9961.rlib" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-8b28a0a374c38504.rlib" "-lc++" "-framework" "Security" "-framework" "CoreFoundation" "-liconv" "-framework" "Security" "-framework" "CoreFoundation" "-lssl" "-lcrypto" "-lz" "-lc" "-liconv" "-lSystem" "-lresolv" "-lc" "-lm" "-liconv" "-L" "/Users/yannsimon/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "-o" "/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6/release/deps/cargo_scaffold-016dc3176c6ac5d4" "-Wl,-dead_strip" "-nodefaultlibs"
  = note: Undefined symbols for architecture x86_64:
            "std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const", referenced from:
                jsonnet_evaluate_snippet_aux(JsonnetVm*, char const*, char const*, int*, (anonymous namespace)::EvalKind) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                StaticError::toString() const in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                lex_number(char const*&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Location const&) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                jsonnet_lex(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                jsonnet_unparse_number(double) in libjsonnet_sys-5eeda51008f91631.rlib(parser.o)
                jsonnet_parse(Allocator*, std::__1::list<Token, std::__1::allocator<Token> >&) in libjsonnet_sys-5eeda51008f91631.rlib(parser.o)
                (anonymous namespace)::Parser::parse(unsigned int) in libjsonnet_sys-5eeda51008f91631.rlib(parser.o)
                ...
            "std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf()", referenced from:
                try_path(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
            "std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf()", referenced from:
                try_path(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
            "std::__1::basic_ifstream<char, std::__1::char_traits<char> >::open(char const*, unsigned int)", referenced from:
                try_path(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
            "std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
                jsonnet_lex(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
            "VTT for std::__1::basic_ifstream<char, std::__1::char_traits<char> >", referenced from:
                try_path(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
            "VTT for std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >", referenced from:
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                jsonnet_evaluate_snippet_aux(JsonnetVm*, char const*, char const*, int*, (anonymous namespace)::EvalKind) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                StaticError::toString() const in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                lex_number(char const*&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Location const&) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                jsonnet_lex(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                jsonnet_unparse_number(double) in libjsonnet_sys-5eeda51008f91631.rlib(parser.o)
                ...
            "vtable for std::__1::basic_ifstream<char, std::__1::char_traits<char> >", referenced from:
                try_path(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
            NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
            "vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >", referenced from:
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                jsonnet_evaluate_snippet_aux(JsonnetVm*, char const*, char const*, int*, (anonymous namespace)::EvalKind) in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                StaticError::toString() const in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                lex_number(char const*&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Location const&) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                jsonnet_lex(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                jsonnet_unparse_number(double) in libjsonnet_sys-5eeda51008f91631.rlib(parser.o)
                ...
            NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
            "vtable for std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >", referenced from:
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(libjsonnet.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(lexer.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(parser.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(desugarer.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(vm.o)
                std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream() in libjsonnet_sys-5eeda51008f91631.rlib(string_utils.o)
            NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
          ld: symbol(s) not found for architecture x86_64
          clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
          

error: could not compile `cargo-scaffold` due to previous error
error: failed to compile `cargo-scaffold v0.8.5`, intermediate artifacts can be found at `/var/folders/hn/zkgzcdkn49x3xc8ftxf408tr0000gn/T/cargo-installRZkch6`

I've tried to search for it, but could not find anything related in other issues.

Add support for using parameter values in creating directories

Let's say I have the following directory structure in a template directory -

template
 | 
 + - {{dir_name}}-00
   | 
   + - example.txt 

and my .scaffold.toml file looks like following

name = "example" 
# Omitted for brevity ...

[parameters]
  [parameters.dir_name]
  type = "string"
  message = "Enter the value for directory name."
  required = true
  default = "default-directory"

When I run cargo scaffold templates/ -n example, this should generate following directory structure -

example
  | 
  + - default-directory-00
      | 
      + - example.txt

This is supported by ffizer and cargo generate as well. May be it's already supported but then not documented properly. I quickly tried this with a simple template, but it generates the directory with {{dir_name}}-00 directory name and not the rendered name,

Welcome from an alternative (ffizer)

Hi,

I'm the author of ffizer an other template generator, and I would like to know if you were aware of it before starting cargo-scaffold, because they are have lot of common features ?
I added a link to cargo-scaffold into my single wiki page https://github.com/ffizer/ffizer/wiki/Alternatives.

Anyways thanks for using handlerbars_misc_helper (I extracted from ffizer), and feel free to open issue (bug, feature request).

Nested .scaffold.toml files are not copied

I have a project which contains nested .scaffold.toml files.

Currently these are being filtered out because of:

                if entry.file_name() == SCAFFOLD_FILENAME {
                    return false;
                }

This filter should probably only apply if the file is at the root.

Rename `example.handlebars` in template to `example` in generated project

When editing a .rs file that contains Handlebars templating, my IDE tries to parse it as Rust code and shows many errors all over the file. If instead the file were named .rs.handlebars, the IDE shows Handlebars syntax highlighting and does not try (and fail) at parsing Rust code.

I’d like to do this in the template but have the .handlebars suffix be removed in the generated file names. Do you think this kind of name mapping could be added? Should it be enabled by default or with opt-in configuration in .scaffold.toml?

project name: `-n ` flag on the command line is not honoured

This is a small issue - if we provide the project name using -n flag from the command line. During scaffold generation, the project name is prompted again.

This is generally not a problem when just using the command once. But if one wants to use this in a workflow, you want to make sure the same name is reused. Having this flag working would be useful. Also, since -h actually specifies -n option, it's better that option is working as well.

Add the ability to specify a parameter from the command line

It's be useful, especially for testing to be able to specify a parameter from the command line.
This would allow you to specify something extra for testing, but that would not be part of the general flow.

e.g.

cargo-scaffold my-template -c branch-name-override=my-branch -c something=new

Windows Support?

Might be a me issue. Just wanted to try this tool out for aoc. I run both Linux and Windows. Didn't try on Linux yet, but on Windows it spits errors about .scaffold.toml not being found and whatnot:

# in template directory
❯ cargo scaffold
Error: cannot open .scaffold.toml in scaffold

Caused by:
    The system cannot find the path specified. (os error 3)
❯ cargo scaffold .\template\
error: unexpected argument '.\template\' found

Usage: cargo-scaffold.exe [OPTIONS] <template>

For more information, try '--help'.

Thanks.

Issue with using git tags

I think there is an issue using git tags still. Also println! got left in the code for the target dir.

 ✘ bryn@amsterdam  ~/git/acme  cargo router plugin create test
    Finished dev [unoptimized + debuginfo] target(s) in 0.10s
     Running `target/debug/xtask router plugin create test`
🔄 Cloning repository…
target_dir -- "/tmp/5ca4508dd9924e1045b6b010b0e3eb9f"
Error: revspec 'v0.9.2' not found; class=Reference (4); code=NotFound (-3)

Tag v0.9.2 exists.

-n option not skipping prompt

➜ cargo-scaffold scaffold https://github.com/apollographql/router.git -n test -r apollo-router-scaffold/templates/base
🔄 Cloning repository…
What is the name of your new router project?:

append mode fails if a directory already exists

Using the following:

            let opts = cargo_scaffold::Opts::builder()
                .template_path("scaffold/plugin")
                .project_name(&name)
                .append(true)
                .build();
            ScaffoldDescription::new(opts)?.scaffold()?;

I get an error if the directory for the files already exists:

Select a plugin template: "basic"
🔄 Append to directory /home/bryn/git/acme…
🔄 Templating files…
Error: cannot create dir : File exists (os error 17)

I'd like it to create directories if they do not already exist but not overwrite files if they already exist.

Scaffold Parameter's default value is not used.

The Scaffold parameter struct Parameter has an optional default value. When this value is given this needs to be honored.

For instance for a 'select' type parameter, this is set (to value at index 0), but this can be set for other type of parameters as well - like string, integer etc.

For this we can use something like dialoguer::Input::default.

Currently setting default value on a parameter has no effect as one has to enter the value always.

Scaffold cloning mechanism not respecting git ssh configuration

My authentication with GitHub is done with SSH keys (rather than https://) and I use a Yubikey to provide my SSH keys. I assure you that my git commands work properly. 😉

To ensure I use git+ssh rather than https:// for cloning things, I have the following in my ~/.gitconfig:

[url "[email protected]:"]
  insteadOf = https://github.com/

So, proving my git works:

$ git clone https://github.com/apollographql/router.git
Cloning into 'router'...
remote: Enumerating objects: 20071, done.
remote: Counting objects: 100% (110/110), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 20071 (delta 66), reused 61 (delta 38), pack-reused 19961
Receiving objects: 100% (20071/20071), 7.17 MiB | 6.66 MiB/s, done.
Resolving deltas: 100% (14418/14418), done.

However, when I try this with cargo-scaffold using the https:// URL, I receive:

$ cargo-scaffold scaffold https://github.com/apollographql/router.git -r apollo-router-scaffold/templates/base
🔄 Cloning repository…
Error: authentication required but no callback set; class=Ssh (23); code=Auth (-16)

... and with the git+ssh approach:

$ cargo-scaffold scaffold [email protected]:apollographql/router.git -r apollo-router-scaffold/templates/base
🔄 Cloning repository…
Error: Failed to authenticate SSH session: Unable to extract public key from private key file: Unable to open private key file; class=Ssh (23)

Ultimately, I think this comes down to the same challenge that cargo ran into by trying to use an underlying git library that wasn't a full implementation of the git CLI's abilities — for example, the CARGO_NET_GIT_FETCH_WITH_CLI env variable and its corresponding setting. (For what it's worth, I tried using that env variable, but it didn't help, though I'm not surprised since that's cargo-specific behavior).

Those limitations are explained a bit in https://github.com/rust-lang/cargo/blob/9ded34a558a900563b0acf3730e223c649cf859d/src/cargo/sources/git/utils.rs#L816-L905 where you can see how they work around it.

Exclude a directory from template processing

It'd be good if in a template definition we could list directories that should be copied, but not processed by mustache.
This would enable scaffolded projects to also include templates for further scaffolding.
e.g.

  • create web app (main template)
  • add page (included in the main template directory, but only activated when calling cargo-scaffold scaffold templates/add-page)

Add builtin parameters

When the user specify the target_dir, the git_rev, the repository we should provide these values in the ScaffoldDescription parameters.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.