diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-02-11 16:09:52 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-02-11 16:09:52 +0000 |
commit | f78108598211053d41752a83e0345441bb9014ae (patch) | |
tree | dd2fc7ae0a1aea7bda4942ab0c453d1e55284b37 /net-p2p/go-ipfs-bin | |
parent | dc45b83b28fb83e9659492066e347b8dc60bc9e3 (diff) |
gentoo resync : 11.02.2018
Diffstat (limited to 'net-p2p/go-ipfs-bin')
-rw-r--r-- | net-p2p/go-ipfs-bin/Manifest | 2 | ||||
-rw-r--r-- | net-p2p/go-ipfs-bin/files/ipfs-completion.bash | 959 | ||||
-rw-r--r-- | net-p2p/go-ipfs-bin/go-ipfs-bin-0.4.13-r1.ebuild | 28 |
3 files changed, 989 insertions, 0 deletions
diff --git a/net-p2p/go-ipfs-bin/Manifest b/net-p2p/go-ipfs-bin/Manifest index 9f0fc191d9c4..cdb5a5638597 100644 --- a/net-p2p/go-ipfs-bin/Manifest +++ b/net-p2p/go-ipfs-bin/Manifest @@ -1,3 +1,4 @@ +AUX ipfs-completion.bash 20856 BLAKE2B 60370fabf7dee1f157c242fef5709b486428db4dde24388fca1a21655b44e9cbd07a523af05c66f70e8a7ac43a40cb4a439faaae856bfe52c74853e7539b4f3e SHA512 17568f42a0980734e57a6c22bab4bac149719ab4d586a5a477f4b11610c2c982c1b5c395b9244c73aa95c82bd40688b8368960bfc0fd5db2e6139660d38e6c9a DIST go-ipfs_v0.4.11_linux-386.tar.gz 10036071 BLAKE2B 58c384e2ea849748c8abf8942d48a6a418c3b2f3988f51d0c5036e58cba747f5cfd86fe7c749e29701373d2a928533daa758d91ce2ece69c1abaa0d97a9b8223 SHA512 ffeb43a7baf9f74a8be7d832105ad81e04057026a06ba33425d03804ec33429021ab7ef1f7c427426326d1b87213b867bec5ac3a96f2ada6e1f090f5b36e90a3 DIST go-ipfs_v0.4.11_linux-amd64.tar.gz 12578502 BLAKE2B 35f7021366f458bdf57365e7f59e5e6a8d7906e83d43a369d3463f95d44eee424871e8a2e3c67518501225c8d665e2817c0b0a5aebfd0f71cca942417cf82afe SHA512 b30772902c82b1ef7271e1e498133f2e605763a648674967e27e71d5c098dbcae227852da652018f6beac984371b04b9fa77b90286dbbb3f39b6efa2a181c5f0 DIST go-ipfs_v0.4.12_linux-386.tar.gz 10093462 BLAKE2B 2cb0197f84badab6f21c505acbabd271cf08c8ececc1f50c3608da3d8dd39a4dce27d42279fa56a9646de6ba08a7a2a3235710fa2c32050427775a17cd3266b2 SHA512 7d6b0b07a4536c2697c8185a252967fd239e3c61f1e0429f1893be44b19ed790721ceba0cf165bf88c58dafed37dbc5712292f0c3a04ab734f681b84907fc149 @@ -7,5 +8,6 @@ DIST go-ipfs_v0.4.13_linux-amd64.tar.gz 12635297 BLAKE2B 984dc455668fc9c5cd3b301 DIST go-ipfs_v0.4.13_linux-arm.tar.gz 9925178 BLAKE2B 735534b278838a9ea25a6d379ffa6834c2710c61901870924f60fd6849b6320271dc5af263e58140096f3dff1d0d50a8f1835364889cd4e1b3a16383ec2b5599 SHA512 2152c4d132ab753c50fc8c5f3726066d5f0d490db02f2dc344c2414cd3ea93daa88f75d38e92a33aa036fa49ac97e615320a690d7680f6a3c86604a6cd0f00cb EBUILD go-ipfs-bin-0.4.11.ebuild 654 BLAKE2B fa493a38a4ee96df8ce107ed0983b364a8f7dd187a88312c43376b280d5f5a77dfcacebc41b4f511f81bc40f1165a42b84bca3dde17b6326051a6de4bf0d115a SHA512 98ab288e3142f445de02e967608468c59979c9e437d52090059f0e08586aae5ab12ba178e999b67e56e71b4fd636f53c784925076f0916bdb04bdfa531cce650 EBUILD go-ipfs-bin-0.4.12.ebuild 654 BLAKE2B fa493a38a4ee96df8ce107ed0983b364a8f7dd187a88312c43376b280d5f5a77dfcacebc41b4f511f81bc40f1165a42b84bca3dde17b6326051a6de4bf0d115a SHA512 98ab288e3142f445de02e967608468c59979c9e437d52090059f0e08586aae5ab12ba178e999b67e56e71b4fd636f53c784925076f0916bdb04bdfa531cce650 +EBUILD go-ipfs-bin-0.4.13-r1.ebuild 718 BLAKE2B c4ccd9da7119d378e0655ab87a26a58ccfefc890c4ef42761fecb0dd555afb9afad88db575d61a973d54a37ceecf36cb40da3cf190e19b367a192f4ea22b8590 SHA512 72b4bd9e570e9683ec09c5edc19660848810154a65dbf7e196e0d63f8d44c563dd97f3197240908f7f296e481f7e3c2a84ded591c5005b7aac72db990ad24899 EBUILD go-ipfs-bin-0.4.13.ebuild 633 BLAKE2B 659a70b31522bd778aa31b41dd96226062b1dc9e05c8a5066450b7e2f43a5146255a161c52cbdac7e8d710899995da3b09930a2bf9434689355186f1c27f1010 SHA512 26d66ff0966654eb1259f97da7511725e64799e31a38a4b2c5b9cd984de974c3a2f596ee507d5666cb91f887f859b6ba9d63f09b8e7d8dab663042f139344904 MISC metadata.xml 606 BLAKE2B a6db8a5d8f57434206cbe3a8d69a3734381fdc2f13c2dd17596f2dd69fce52deca63717920ef0ff8f861451465f4702f967dbe1790916898000c7eeb858604a3 SHA512 3c0ae2eeeb423edc50a5961f9e9f040b33c0a343e77b47dafc1699eea65708df2365944338da691a637ea79680976dfc91346e6572c42cae94a429c0902c8065 diff --git a/net-p2p/go-ipfs-bin/files/ipfs-completion.bash b/net-p2p/go-ipfs-bin/files/ipfs-completion.bash new file mode 100644 index 000000000000..27f83fdef68b --- /dev/null +++ b/net-p2p/go-ipfs-bin/files/ipfs-completion.bash @@ -0,0 +1,959 @@ +_ipfs_comp() +{ + COMPREPLY=( $(compgen -W "$1" -- ${word}) ) + if [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} == "--"*"=" ]] ; then + # If there's only one option, with =, then discard space + compopt -o nospace + fi +} + +_ipfs_help_only() +{ + _ipfs_comp "--help" +} + +_ipfs_add() +{ + if [[ "${prev}" == "--chunker" ]] ; then + _ipfs_comp "placeholder1 placeholder2 placeholder3" # TODO: a) Give real options, b) Solve autocomplete bug for "=" + elif [ "${prev}" == "--pin" ] ; then + _ipfs_comp "true false" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --quiet --silent --progress --trickle --only-hash --wrap-with-directory --hidden --chunker= --pin= --raw-leaves --help " + else + _ipfs_filesystem_complete + fi +} + +_ipfs_bitswap() +{ + ipfs_comp "ledger stat unwant wantlist --help" +} + +_ipfs_bitswap_ledger() +{ + _ipfs_help_only +} + +_ipfs_bitswap_stat() +{ + _ipfs_help_only +} + +_ipfs_bitswap_unwant() +{ + _ipfs_help_only +} + +_ipfs_bitswap_wantlist() +{ + ipfs_comp "--peer= --help" +} + +_ipfs_bitswap_unwant() +{ + _ipfs_help_only +} + +_ipfs_block() +{ + _ipfs_comp "get put rm stat --help" +} + +_ipfs_block_get() +{ + _ipfs_hash_complete +} + +_ipfs_block_put() +{ + if [ "${prev}" == "--format" ] ; then + _ipfs_comp "v0 placeholder2 placeholder3" # TODO: a) Give real options, b) Solve autocomplete bug for "=" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--format= --help" + else + _ipfs_filesystem_complete + fi +} + +_ipfs_block_rm() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--force --quiet --help" + else + _ipfs_hash_complete + fi +} + +_ipfs_block_stat() +{ + _ipfs_hash_complete +} + +_ipfs_bootstrap() +{ + _ipfs_comp "add list rm --help" +} + +_ipfs_bootstrap_add() +{ + _ipfs_comp "default --help" +} + +_ipfs_bootstrap_list() +{ + _ipfs_help_only +} + +_ipfs_bootstrap_rm() +{ + _ipfs_comp "all --help" +} + +_ipfs_cat() +{ + if [[ ${prev} == */* ]] ; then + COMPREPLY=() # Only one argument allowed + elif [[ ${word} == */* ]] ; then + _ipfs_hash_complete + else + _ipfs_pinned_complete + fi +} + +_ipfs_commands() +{ + _ipfs_comp "--flags --help" +} + +_ipfs_config() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--bool --json" + elif [[ ${prev} == *.* ]] ; then + COMPREPLY=() # Only one subheader of the config can be shown or edited. + else + _ipfs_comp "show edit replace" + fi +} + +_ipfs_config_edit() +{ + _ipfs_help_only +} + +_ipfs_config_replace() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--help" + else + _ipfs_filesystem_complete + fi +} + +_ipfs_config_show() +{ + _ipfs_help_only +} + +_ipfs_daemon() +{ + if [[ ${prev} == "--routing" ]] ; then + _ipfs_comp "dht dhtclient none" # TODO: Solve autocomplete bug for "=" + elif [[ ${prev} == "--mount-ipfs" ]] || [[ ${prev} == "--mount-ipns" ]] || [[ ${prev} == "=" ]]; then + _ipfs_filesystem_complete + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--init --routing= --mount --writable --mount-ipfs= \ + --mount-ipns= --unrestricted-api --disable-transport-encryption \ + -- enable-gc --manage-fdlimit --offline --migrate --help" + fi +} + +_ipfs_dag() +{ + _ipfs_comp "get put --help" +} + +_ipfs_dag_get() +{ + _ipfs_help_only +} + +_ipfs_dag_put() +{ + if [[ ${prev} == "--format" ]] ; then + _ipfs_comp "cbor placeholder1" # TODO: a) Which format more then cbor is valid? b) Solve autocomplete bug for "=" + elif [[ ${prev} == "--input-enc" ]] ; then + _ipfs_comp "json placeholder1" # TODO: a) Which format more then json is valid? b) Solve autocomplete bug for "=" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--format= --input-enc= --help" + else + _ipfs_filesystem_complete + fi +} + +_ipfs_dht() +{ + _ipfs_comp "findpeer findprovs get provide put query --help" +} + +_ipfs_dht_findpeer() +{ + _ipfs_comp "--verbose --help" +} + +_ipfs_dht_findprovs() +{ + _ipfs_comp "--verbose --help" +} + +_ipfs_dht_get() +{ + _ipfs_comp "--verbose --help" +} + +_ipfs_dht_provide() +{ + _ipfs_comp "--recursive --verbose --help" +} + +_ipfs_dht_put() +{ + _ipfs_comp "--verbose --help" +} + +_ipfs_dht_query() +{ + _ipfs_comp "--verbose --help" +} + +_ipfs_diag() +{ + _ipfs_comp "sys cmds net --help" +} + +_ipfs_diag_cmds() +{ + if [[ ${prev} == "clear" ]] ; then + return 0 + elif [[ ${prev} =~ ^-?[0-9]+$ ]] ; then + _ipfs_comp "ns us µs ms s m h" # TODO: Trigger with out space, eg. "ipfs diag set-time 10ns" not "... set-time 10 ns" + elif [[ ${prev} == "set-time" ]] ; then + _ipfs_help_only + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--verbose --help" + else + _ipfs_comp "clear set-time" + fi +} + +_ipfs_diag_sys() +{ + _ipfs_help_only +} + +_ipfs_diag_net() +{ + if [[ ${prev} == "--vis" ]] ; then + _ipfs_comp "d3 dot text" # TODO: Solve autocomplete bug for "=" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--timeout= --vis= --help" + fi +} + +_ipfs_dns() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --help" + fi +} + +_ipfs_files() +{ + _ipfs_comp "mv rm flush read write cp ls mkdir stat" +} + +_ipfs_files_mv() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --flush" + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_rm() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --flush" + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} +_ipfs_files_flush() +{ + if [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_read() +{ + if [[ ${prev} == "--count" ]] || [[ ${prev} == "--offset" ]] ; then + COMPREPLY=() # Numbers, just keep it empty + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--offset --count --help" + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_write() +{ + if [[ ${prev} == "--count" ]] || [[ ${prev} == "--offset" ]] ; then # Dirty check + COMPREPLY=() # Numbers, just keep it empty + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--offset --count --create --truncate --help" + elif [[ ${prev} == /* ]] ; then + _ipfs_filesystem_complete + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_cp() +{ + if [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_ls() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "-l --help" + elif [[ ${prev} == /* ]] ; then + COMPREPLY=() # Path exist + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_mkdir() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--parents --help" + + elif [[ ${prev} == /* ]] ; then + COMPREPLY=() # Path exist + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_files_stat() +{ + if [[ ${prev} == /* ]] ; then + COMPREPLY=() # Path exist + elif [[ ${word} == /* ]] ; then + _ipfs_files_complete + else + COMPREPLY=( / ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_file() +{ + if [[ ${prev} == "ls" ]] ; then + _ipfs_hash_complete + else + _ipfs_comp "ls --help" + fi +} + +_ipfs_file_ls() +{ + _ipfs_help_only +} + +_ipfs_get() +{ + if [ "${prev}" == "--output" ] ; then + compopt -o default # Re-enable default file read + COMPREPLY=() + elif [ "${prev}" == "--compression-level" ] ; then + _ipfs_comp "-1 1 2 3 4 5 6 7 8 9" # TODO: Solve autocomplete bug for "=" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--output= --archive --compress --compression-level= --help" + else + _ipfs_hash_complete + fi +} + +_ipfs_id() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--format= --help" + fi +} + +_ipfs_init() +{ + _ipfs_comp "--bits --force --empty-repo --help" +} + +_ipfs_log() +{ + _ipfs_comp "level ls tail --help" +} + +_ipfs_log_level() +{ + # TODO: auto-complete subsystem and level + _ipfs_help_only +} + +_ipfs_log_ls() +{ + _ipfs_help_only +} + +_ipfs_log_tail() +{ + _ipfs_help_only +} + +_ipfs_ls() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--headers --resolve-type=false --help" + else + _ipfs_hash_complete + fi +} + +_ipfs_mount() +{ + if [[ ${prev} == "--ipfs-path" ]] || [[ ${prev} == "--ipns-path" ]] || [[ ${prev} == "=" ]] ; then + _ipfs_filesystem_complete + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--ipfs-path= --ipns-path= --help" + fi +} + +_ipfs_name() +{ + _ipfs_comp "publish resolve --help" +} + +_ipfs_name_publish() +{ + if [[ ${prev} == "--lifetime" ]] || [[ ${prev} == "--ttl" ]] ; then + COMPREPLY=() # Accept only numbers + elif [[ ${prev} =~ ^-?[0-9]+$ ]] ; then + _ipfs_comp "ns us µs ms s m h" # TODO: Trigger without space, eg. "ipfs diag set-time 10ns" not "... set-time 10 ns" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--resolve --lifetime --ttl --help" + elif [[ ${word} == */ ]]; then + _ipfs_hash_complete + else + _ipfs_pinned_complete + fi +} + +_ipfs_name_resolve() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --nocache --help" + fi +} + +_ipfs_object() +{ + _ipfs_comp "data diff get links new patch put stat --help" +} + +_ipfs_object_data() +{ + _ipfs_hash_complete +} + +_ipfs_object_diff() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--verbose --help" + else + _ipfs_hash_complete + fi +} + + +_ipfs_object_get() +{ + if [ "${prev}" == "--encoding" ] ; then + _ipfs_comp "protobuf json xml" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--encoding --help" + else + _ipfs_hash_complete + fi +} + +_ipfs_object_links() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--headers --help" + else + _ipfs_hash_complete + fi +} + +_ipfs_object_new() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--help" + else + _ipfs_comp "unixfs-dir" + fi +} + +_ipfs_object_patch() +{ + if [[ -n "${COMP_WORDS[3]}" ]] ; then # Root merkledag object exist + case "${COMP_WORDS[4]}" in + append-data) + _ipfs_help_only + ;; + add-link) + if [[ ${word} == -* ]] && [[ ${prev} == "add-link" ]] ; then # Dirty check + _ipfs_comp "--create" + #else + # TODO: Hash path autocomplete. This is tricky, can be hash or a name. + fi + ;; + rm-link) + _ipfs_hash_complete + ;; + set-data) + _ipfs_filesystem_complete + ;; + *) + _ipfs_comp "append-data add-link rm-link set-data" + ;; + esac + else + _ipfs_hash_complete + fi +} + +_ipfs_object_put() +{ + if [ "${prev}" == "--inputenc" ] ; then + _ipfs_comp "protobuf json" + elif [ "${prev}" == "--datafieldenc" ] ; then + _ipfs_comp "text base64" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--inputenc --datafieldenc --help" + else + _ipfs_hash_complete + fi +} + +_ipfs_object_stat() +{ + _ipfs_hash_complete +} + +_ipfs_pin() +{ + _ipfs_comp "rm ls add --help" +} + +_ipfs_pin_add() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive= --help" + elif [[ ${word} == */ ]] && [[ ${word} != "/ipfs/" ]] ; then + _ipfs_hash_complete + fi +} + +_ipfs_pin_ls() +{ + if [[ ${prev} == "--type" ]] || [[ ${prev} == "-t" ]] ; then + _ipfs_comp "direct indirect recursive all" # TODO: Solve autocomplete bug for + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--count --quiet --type= --help" + elif [[ ${word} == */ ]] && [[ ${word} != "/ipfs/" ]] ; then + _ipfs_hash_complete + fi +} + +_ipfs_pin_rm() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --help" + elif [[ ${word} == */ ]] && [[ ${word} != "/ipfs/" ]] ; then + COMPREPLY=() # TODO: _ipfs_hash_complete() + List local pinned hashes as default? + fi +} + +_ipfs_ping() +{ + _ipfs_comp "--count= --help" +} + +_ipfs_pubsub() +{ + _ipfs_comp "ls peers pub sub --help" +} + +_ipfs_pubsub_ls() +{ + _ipfs_help_only +} + +_ipfs_pubsub_peers() +{ + _ipfs_help_only +} + +_ipfs_pubsub_pub() +{ + _ipfs_help_only +} + +_ipfs_pubsub_sub() +{ + _ipfs_comp "--discover --help" +} + +_ipfs_refs() +{ + if [ "${prev}" == "--format" ] ; then + _ipfs_comp "src dst linkname" + elif [[ ${word} == -* ]] ; then + _ipfs_comp "local --format= --edges --unique --recursive --help" + #else + # TODO: Use "ipfs ref" and combine it with autocomplete, see _ipfs_hash_complete + fi +} + +_ipfs_refs_local() +{ + _ipfs_help_only +} + +_ipfs_repo() +{ + _ipfs_comp "fsck gc stat verify version --help" +} + +_ipfs_repo_version() +{ + _ipfs_comp "--quiet --help" +} + +_ipfs_repo_verify() +{ + _ipfs_help_only +} + +_ipfs_repo_gc() +{ + _ipfs_comp "--quiet --help" +} + +_ipfs_repo_stat() +{ + _ipfs_comp "--human --help" +} + +_ipfs_repo_fsck() +{ + _ipfs_help_only +} + +_ipfs_resolve() +{ + if [[ ${word} == /ipfs/* ]] ; then + _ipfs_hash_complete + elif [[ ${word} == /ipns/* ]] ; then + COMPREPLY=() # Can't autocomplete ipns + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--recursive --help" + else + opts="/ipns/ /ipfs/" + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + [[ $COMPREPLY = */ ]] && compopt -o nospace + fi +} + +_ipfs_stats() +{ + _ipfs_comp "bitswap bw repo --help" +} + +_ipfs_stats_bitswap() +{ + _ipfs_help_only +} + +_ipfs_stats_bw() +{ + # TODO: Which protocol is valid? + _ipfs_comp "--peer= --proto= --poll --interval= --help" +} + +_ipfs_stats_repo() +{ + _ipfs_comp "--human= --help" +} + +_ipfs_swarm() +{ + _ipfs_comp "addrs connect disconnect filters peers --help" +} + +_ipfs_swarm_addrs() +{ + _ipfs_comp "local --help" +} + +_ipfs_swarm_addrs_local() +{ + _ipfs_comp "--id --help" +} + +_ipfs_swarm_connect() +{ + _ipfs_multiaddr_complete +} + +_ipfs_swarm_disconnect() +{ + local OLDIFS="$IFS" ; local IFS=$'\n' # Change divider for iterator one line below + opts=$(for x in `ipfs swarm peers`; do echo ${x} ; done) + IFS="$OLDIFS" # Reset divider to space, ' ' + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + [[ $COMPREPLY = */ ]] && compopt -o nospace -o filenames +} + +_ipfs_swarm_filters() +{ + if [[ ${prev} == "add" ]] || [[ ${prev} == "rm" ]]; then + _ipfs_multiaddr_complete + else + _ipfs_comp "add rm --help" + fi +} + +_ipfs_swarm_filters_add() +{ + _ipfs_help_only +} + +_ipfs_swarm_filters_rm() +{ + _ipfs_help_only +} + +_ipfs_swarm_peers() +{ + _ipfs_help_only +} + +_ipfs_tar() +{ + _ipfs_comp "add cat --help" +} + +_ipfs_tar_add() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--help" + else + _ipfs_filesystem_complete + fi +} + +_ipfs_tar_cat() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--help" + else + _ipfs_filesystem_complete + fi +} + +_ipfs_update() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--version" # TODO: How does "--verbose" option work? + else + _ipfs_comp "versions version install stash revert fetch" + fi +} + +_ipfs_update_install() +{ + if [[ ${prev} == v*.*.* ]] ; then + COMPREPLY=() + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--version" + else + local OLDIFS="$IFS" ; local IFS=$'\n' # Change divider for iterator one line below + opts=$(for x in `ipfs update versions`; do echo ${x} ; done) + IFS="$OLDIFS" # Reset divider to space, ' ' + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + fi +} + +_ipfs_update_stash() +{ + if [[ ${word} == -* ]] ; then + _ipfs_comp "--tag --help" + fi +} +_ipfs_update_fetch() +{ + if [[ ${prev} == "--output" ]] ; then + _ipfs_filesystem_complete + elif [[ ${word} == -* ]] ; then + _ipfs_comp "--output --help" + fi +} + +_ipfs_version() +{ + _ipfs_comp "--number --commit --repo" +} + +_ipfs_hash_complete() +{ + local lastDir=${word%/*}/ + echo "LastDir: ${lastDir}" >> ~/Downloads/debug-ipfs.txt + local OLDIFS="$IFS" ; local IFS=$'\n' # Change divider for iterator one line below + opts=$(for x in `ipfs file ls ${lastDir}`; do echo ${lastDir}${x}/ ; done) # TODO: Implement "ipfs file ls -F" to get rid of frontslash after files. This take long time to run first time on a new shell. + echo "Options: ${opts}" >> ~/Downloads/debug-ipfs.txt + IFS="$OLDIFS" # Reset divider to space, ' ' + echo "Current: ${word}" >> ~/Downloads/debug-ipfs.txt + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + echo "Suggestion: ${COMPREPLY}" >> ~/Downloads/debug-ipfs.txt + [[ $COMPREPLY = */ ]] && compopt -o nospace -o filenames # Removing whitespace after output & handle output as filenames. (Only printing the latest folder of files.) + return 0 +} + +_ipfs_files_complete() +{ + local lastDir=${word%/*}/ + local OLDIFS="$IFS" ; local IFS=$'\n' # Change divider for iterator one line below + opts=$(for x in `ipfs files ls ${lastDir}`; do echo ${lastDir}${x}/ ; done) # TODO: Implement "ipfs files ls -F" to get rid of frontslash after files. This does currently throw "Error: /cats/foo/ is not a directory" + IFS="$OLDIFS" # Reset divider to space, ' ' + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + [[ $COMPREPLY = */ ]] && compopt -o nospace -o filenames + return 0 +} + +_ipfs_multiaddr_complete() +{ + local lastDir=${word%/*}/ + # Special case + if [[ ${word} == */"ipcidr"* ]] ; then # TODO: Broken, fix it. + opts="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32" # TODO: IPv6? + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + # "Loop" + elif [[ ${word} == /*/ ]] || [[ ${word} == /*/* ]] ; then + if [[ ${word} == /*/*/*/*/*/ ]] ; then + COMPREPLY=() + elif [[ ${word} == /*/*/*/*/ ]] ; then + word=${word##*/} + opts="ipfs/ " + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + elif [[ ${word} == /*/*/*/ ]] ; then + word=${word##*/} + opts="4001/ " + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + elif [[ ${word} == /*/*/ ]] ; then + word=${word##*/} + opts="udp/ tcp/ ipcidr/" + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + elif [[ ${word} == /*/ ]] ; then + COMPREPLY=() # TODO: This need to return something to NOT break the function. Maybe a "/" in the end as well due to -o filename option. + fi + COMPREPLY=${lastDir}${COMPREPLY} + else # start case + opts="/ip4/ /ip6/" + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) ) + fi + [[ $COMPREPLY = */ ]] && compopt -o nospace -o filenames + return 0 +} + +_ipfs_pinned_complete() +{ + local OLDIFS="$IFS" ; local IFS=$'\n' + local pinned=$(ipfs pin ls) + COMPREPLY=( $(compgen -W "${pinned}" -- ${word}) ) + IFS="$OLDIFS" + if [[ ${#COMPREPLY[*]} -eq 1 ]]; then # Only one completion, remove pretty output + COMPREPLY=( ${COMPREPLY[0]/ *//} ) #Remove ' ' and everything after + [[ $COMPREPLY = */ ]] && compopt -o nospace # Removing whitespace after output + fi +} +_ipfs_filesystem_complete() +{ + compopt -o default # Re-enable default file read + COMPREPLY=() +} + +_ipfs() +{ + COMPREPLY=() + compopt +o default # Disable default to not deny completion, see: http://stackoverflow.com/a/19062943/1216348 + + local word="${COMP_WORDS[COMP_CWORD]}" + local prev="${COMP_WORDS[COMP_CWORD-1]}" + + case "${COMP_CWORD}" in + 1) + local opts="add bitswap block bootstrap cat commands config daemon dag dht \ + diag dns file files get id init log ls mount name object pin ping pubsub \ + refs repo resolve stats swarm tar update version" + COMPREPLY=( $(compgen -W "${opts}" -- ${word}) );; + 2) + local command="${COMP_WORDS[1]}" + eval "_ipfs_$command" 2> /dev/null ;; + *) + local command="${COMP_WORDS[1]}" + local subcommand="${COMP_WORDS[2]}" + eval "_ipfs_${command}_${subcommand}" 2> /dev/null && return + eval "_ipfs_$command" 2> /dev/null ;; + esac +} +complete -F _ipfs ipfs diff --git a/net-p2p/go-ipfs-bin/go-ipfs-bin-0.4.13-r1.ebuild b/net-p2p/go-ipfs-bin/go-ipfs-bin-0.4.13-r1.ebuild new file mode 100644 index 000000000000..5771da30b8d5 --- /dev/null +++ b/net-p2p/go-ipfs-bin/go-ipfs-bin-0.4.13-r1.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit bash-completion-r1 + +DESCRIPTION="go-ipfs is the main implementation of IPFS." +HOMEPAGE="https://ipfs.io/" +SRC_URI="amd64? ( https://dist.ipfs.io/go-ipfs/v${PV}/go-ipfs_v${PV}_linux-amd64.tar.gz ) + x86? ( https://dist.ipfs.io/go-ipfs/v${PV}/go-ipfs_v${PV}_linux-386.tar.gz ) + arm? ( https://dist.ipfs.io/go-ipfs/v${PV}/go-ipfs_v${PV}_linux-arm.tar.gz )" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="-* ~amd64 ~arm ~x86" +IUSE="+fuse" + +RDEPEND="fuse? ( sys-fs/fuse )" +S="${WORKDIR}/go-ipfs" + +QA_PREBUILT="/usr/bin/ipfs" + +src_install() { + dobin ipfs + + newbashcomp "${FILESDIR}/ipfs-completion.bash" "${PN}" +} |