evolver-tools 35.0.0__tar.gz → 36.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {evolver_tools-35.0.0/src/evolver_tools.egg-info → evolver_tools-36.0.0}/PKG-INFO +8 -23
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/README.md +7 -22
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/pyproject.toml +1 -1
- evolver_tools-36.0.0/src/evolver_tools/__init__.py +4 -0
- evolver_tools-36.0.0/src/evolver_tools/cli.py +191 -0
- evolver_tools-36.0.0/src/evolver_tools/license.py +359 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/agent_b_tool.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/b64/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cal_tool/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cal_tool/cli.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/chart_cli/__init__.py +1 -1
- evolver_tools-36.0.0/src/evolver_tools/vendor/color_convert.py +138 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/colors/__init__.py +1 -1
- evolver_tools-36.0.0/src/evolver_tools/vendor/csv_concat.py +77 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/cli.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_csv.py +1 -1
- evolver_tools-36.0.0/src/evolver_tools/vendor/diff_lines.py +147 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_tool/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dirsize/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dt_convert.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_manager.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/envcheck/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ff/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/find_dups/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/find_dups/cli.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/fmt/__init__.py +1 -1
- evolver_tools-36.0.0/src/evolver_tools/vendor/git_ignore.py +217 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hashsum/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_live/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipcalc/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipinfo/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jq_lite/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json2csv/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jsonql/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license_cli/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license_cli/cli.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/log_analyzer.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_check/__init__.py +1 -1
- evolver_tools-36.0.0/src/evolver_tools/vendor/mime_type.py +138 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/nb/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/passgen/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/portcheck/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/portcheck/__main__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/project_doctor/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ren/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/siege_lite/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/smellfinder/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sqlite_cli/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sysmon/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/treedir/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/treedir/__main__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/urlparse_tool/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/urlparse_tool/cli.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uuid_tool/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/web_summary/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/wordcount/__init__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/wordcount/__main__.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/xml2json.py +1 -1
- {evolver_tools-35.0.0 → evolver_tools-36.0.0/src/evolver_tools.egg-info}/PKG-INFO +8 -23
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/SOURCES.txt +5 -9
- evolver_tools-35.0.0/src/evolver_tools/__init__.py +0 -4
- evolver_tools-35.0.0/src/evolver_tools/cli.py +0 -66
- evolver_tools-35.0.0/src/evolver_tools/vendor/ansi_to_txt.py +0 -89
- evolver_tools-35.0.0/src/evolver_tools/vendor/chrono.py +0 -275
- evolver_tools-35.0.0/src/evolver_tools/vendor/csv_schema.py +0 -174
- evolver_tools-35.0.0/src/evolver_tools/vendor/diff_lines.py +0 -166
- evolver_tools-35.0.0/src/evolver_tools/vendor/emoji_cli.py +0 -465
- evolver_tools-35.0.0/src/evolver_tools/vendor/html_strip.py +0 -143
- evolver_tools-35.0.0/src/evolver_tools/vendor/json_patch.py +0 -319
- evolver_tools-35.0.0/src/evolver_tools/vendor/markdown_format.py +0 -246
- evolver_tools-35.0.0/src/evolver_tools/vendor/merge_json.py +0 -87
- evolver_tools-35.0.0/src/evolver_tools/vendor/validate.py +0 -197
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/LICENSE +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/setup.cfg +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/autoreg.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ansi_strip.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/api_tester.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ascii_banner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ascii_gen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/audit_log.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/b64/b64.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/backup.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/banner/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/banner/banner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/base32.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/base58.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/bookmark.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/calendar_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/case_convert.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cert_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cert_info.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/changelog_gen/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/changelog_gen/changelog_gen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/changelog_gen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/chart_cli/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/checksum_dir.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/clipboard/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/clipboard/clipboard.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/code_auditor.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/code_review.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/code_stats.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/colorize.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/colors/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/config_validator.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/config_vault.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cowsay.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crc_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/cron_pretty.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crontab_helper.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crypto_box.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/crypto_price.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv2json.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_dedup.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_filter.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_head.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_merge.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_pretty.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_slice.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_sort.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_stats/analyzer.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_to_table.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_validate.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/csv_view.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/date_diff.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/db_mate.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/db_schema.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dedup_files.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dep_graph.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dev_dashboard.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dice_roll.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_files.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_tool/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/diff_yaml.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/disk_cleanup.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/disk_usage/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/disk_usage/disk_usage.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/dns_lookup.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/docker_helper.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_diff.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_sorter.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/env_template.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/epoch.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/excel2csv.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/factor.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ff/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/figlet_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/figlet_tool.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_encrypt.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_find.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_joiner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_patch.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_splitter.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_type.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/file_watch.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/find_empty.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/firewall_rule.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/fmt/fmt.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/fold.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/geo_ip.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/git_branch_cleaner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/git_log_pretty.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/git_stats.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/gzip_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hash_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hash_file.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hashsum/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hex_tool.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hexdec.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/hexdump.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/html2markdown.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/html2md.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_headers.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_live/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_server.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/http_status.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/humanize.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/image_meta.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ini2json.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ini_parser/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ini_parser/ini_parser.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ip_info.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ip_location.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipcalc/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ipinfo/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/join.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/joke.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jq_lite/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json2csv/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json2ini.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_diff.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_flatten.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_keys.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_merge.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_path.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_pretty/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_pretty/json_pretty.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_schema_validate.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_sort.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_to_table.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/json_to_yaml.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jsonql/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/jwt_decode.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/key_value_store.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/license_cli/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/link_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/log_hawk.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/log_tail.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/mac_address.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/macrogen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_lint.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_preview.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_to_html.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/markdown_toc.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/math_eval.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/media_studio.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/morse.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/nb/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/net_analyzer.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/net_speed.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/network_scan.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/nl.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/note_taker.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/otp_gen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/password_strength.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pdf_info.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pdf_text.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pipe_viewer.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pomodoro.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/port_scan.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pr_tool/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/pr_tool/pr_tool.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/process_kill.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/progress_bar.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/project_doctor/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qc_calc.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qc_report.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qc_sample.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qr_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/qrcode.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/quote.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/quote_tool/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/quote_tool/quote.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/rainbow.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/random.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/random_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/random_string.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/reminder.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ren/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/replace_text.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/restore.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/rot13.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/route_trace.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/scan_open_ports.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/scan_ports.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/screen_recorder.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/screenshot_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/search_files.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/search_history.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/secret_scanner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/seq.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/service_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/shuffle.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/siege_lite/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/slugify.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/smellfinder/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sort/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sort/sort.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/spinner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/split.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/split_tool/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/split_tool/split.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sql2csv.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sqlite_cli/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ssh_key_gen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/ssl_check.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/stopwatch.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/subnet.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sysmon/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/sysmon_pro.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/system_info.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/temp_cleaner.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/template.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/text_dedent.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/text_stats.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/text_wrap.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/time_duration.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timeout.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer_pro/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer_pro/timer_pro.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/timer_pro.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/todo_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/toml2json.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/tr.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/tree.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/tsv2csv.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uniq_tool/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uniq_tool/uniq.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/unit_convert.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uri_encode.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/url_parser.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uuid_gen.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/uuid_tool/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/watch.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/weather_cli.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/web_download.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/web_summary/__main__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/whois_lookup.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/world_clock.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/xml_format.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml2json/__init__.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml2json/yaml2json.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml2toml.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yaml_validate.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools/vendor/yes.py +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/dependency_links.txt +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/entry_points.txt +0 -0
- {evolver_tools-35.0.0 → evolver_tools-36.0.0}/src/evolver_tools.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: evolver-tools
|
|
3
|
-
Version:
|
|
3
|
+
Version: 36.0.0
|
|
4
4
|
Summary: 244 CLI tools + 9 flagship projects — one pip install
|
|
5
5
|
Author: EVOLVER
|
|
6
6
|
License-Expression: MIT
|
|
@@ -22,17 +22,17 @@ Dynamic: license-file
|
|
|
22
22
|
|
|
23
23
|
# EVOLVER Tools
|
|
24
24
|
|
|
25
|
-
**
|
|
25
|
+
**244 CLI tools + 9 flagship projects — one `pip install`.**
|
|
26
26
|
|
|
27
|
-
Zero-dependency
|
|
27
|
+
Zero-dependency, cross-platform, production-ready. Version **36.0.0**.
|
|
28
28
|
Systems ops, data processing, text manipulation, security, dev tooling, and creative utilities.
|
|
29
|
-
All in a single install — not
|
|
29
|
+
All in a single install — not 238 separate packages.
|
|
30
30
|
|
|
31
31
|
## Quick Start
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
pip install evolver-tools
|
|
35
|
-
evtool list # Show all
|
|
35
|
+
evtool list # Show all 233+ tools
|
|
36
36
|
evtool sysmon # Launch system monitor
|
|
37
37
|
evtool ff < data.txt # Fuzzy search through data
|
|
38
38
|
evtool csv-stats data.csv # Analyze CSV columns
|
|
@@ -281,7 +281,8 @@ Nine flagship projects ship as integrated CLI+TUI suites within evolver-tools:
|
|
|
281
281
|
## Requirements
|
|
282
282
|
|
|
283
283
|
- Python 3.8+
|
|
284
|
-
- No external dependencies for
|
|
284
|
+
- No external dependencies for 230 of 233 tools (stdlib only)
|
|
285
|
+
- A few tools (sysmon, sysmon-pro, etc.) optionally use psutil
|
|
285
286
|
- Network-dependent tools (ipinfo, weather, etc.) use public APIs
|
|
286
287
|
|
|
287
288
|
## Pricing
|
|
@@ -290,7 +291,7 @@ evolver-tools is **MIT open source** and free forever for all tools.
|
|
|
290
291
|
|
|
291
292
|
| Tier | Price | What you get |
|
|
292
293
|
|------|-------|-------------|
|
|
293
|
-
| **Free (MIT)** | ¥0 | All
|
|
294
|
+
| **Free (MIT)** | ¥0 | All 233+ tools, full source, forever |
|
|
294
295
|
| **Full Suite** | ¥79 one-time | All tools + priority support + early access + name in credits |
|
|
295
296
|
| **Sponsor** | ¥5/month | GitHub Sponsors badge + Discord + vote on priorities |
|
|
296
297
|
| **Enterprise Basic** | ¥500/year | Custom tool development |
|
|
@@ -299,22 +300,6 @@ evolver-tools is **MIT open source** and free forever for all tools.
|
|
|
299
300
|
|
|
300
301
|
👉 [View full pricing page](https://evolver-dev.github.io/evolver-tools/pricing/) — feature comparison, testimonials, and FAQ.
|
|
301
302
|
|
|
302
|
-
## Changelog
|
|
303
|
-
|
|
304
|
-
### v35.0.0 — 2026-06-01 (+5 tools, 249 total)
|
|
305
|
-
- **merge-json** — Deep merge multiple JSON files (arrays concatenate, dicts recurse)
|
|
306
|
-
- **validate** — Generic file validator (JSON/YAML/CSV/TOML/XML auto-detect)
|
|
307
|
-
- **diff-lines** — Line-by-line diff between two files (color, side-by-side)
|
|
308
|
-
- **csv-schema** — Infer CSV schema (column types, nulls, stats, samples)
|
|
309
|
-
- **chrono** — Advanced date/time calculator (durations, workdays, ranges, age)
|
|
310
|
-
|
|
311
|
-
### v34.0.0 — 2026-06-01 (+5 tools, 244 total)
|
|
312
|
-
- **emoji-cli** — Search and display emoji (230+ emoji, categories, --random)
|
|
313
|
-
- **html-strip** — Strip HTML tags, extract plain text (stdin/file, --preserve-links)
|
|
314
|
-
- **json-patch** — Apply JSON Patch (RFC 6902) operations to JSON files
|
|
315
|
-
- **markdown-format** — Format/beautify Markdown tables and lists
|
|
316
|
-
- **ansi-to-txt** — Strip ANSI escape codes, convert to plain text
|
|
317
|
-
|
|
318
303
|
Support the project via one-time purchase (¥79) or monthly sponsorship on [GitHub Sponsors](https://github.com/sponsors/evolver-dev).
|
|
319
304
|
|
|
320
305
|
## Links
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# EVOLVER Tools
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**244 CLI tools + 9 flagship projects — one `pip install`.**
|
|
4
4
|
|
|
5
|
-
Zero-dependency
|
|
5
|
+
Zero-dependency, cross-platform, production-ready. Version **36.0.0**.
|
|
6
6
|
Systems ops, data processing, text manipulation, security, dev tooling, and creative utilities.
|
|
7
|
-
All in a single install — not
|
|
7
|
+
All in a single install — not 238 separate packages.
|
|
8
8
|
|
|
9
9
|
## Quick Start
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
pip install evolver-tools
|
|
13
|
-
evtool list # Show all
|
|
13
|
+
evtool list # Show all 233+ tools
|
|
14
14
|
evtool sysmon # Launch system monitor
|
|
15
15
|
evtool ff < data.txt # Fuzzy search through data
|
|
16
16
|
evtool csv-stats data.csv # Analyze CSV columns
|
|
@@ -259,7 +259,8 @@ Nine flagship projects ship as integrated CLI+TUI suites within evolver-tools:
|
|
|
259
259
|
## Requirements
|
|
260
260
|
|
|
261
261
|
- Python 3.8+
|
|
262
|
-
- No external dependencies for
|
|
262
|
+
- No external dependencies for 230 of 233 tools (stdlib only)
|
|
263
|
+
- A few tools (sysmon, sysmon-pro, etc.) optionally use psutil
|
|
263
264
|
- Network-dependent tools (ipinfo, weather, etc.) use public APIs
|
|
264
265
|
|
|
265
266
|
## Pricing
|
|
@@ -268,7 +269,7 @@ evolver-tools is **MIT open source** and free forever for all tools.
|
|
|
268
269
|
|
|
269
270
|
| Tier | Price | What you get |
|
|
270
271
|
|------|-------|-------------|
|
|
271
|
-
| **Free (MIT)** | ¥0 | All
|
|
272
|
+
| **Free (MIT)** | ¥0 | All 233+ tools, full source, forever |
|
|
272
273
|
| **Full Suite** | ¥79 one-time | All tools + priority support + early access + name in credits |
|
|
273
274
|
| **Sponsor** | ¥5/month | GitHub Sponsors badge + Discord + vote on priorities |
|
|
274
275
|
| **Enterprise Basic** | ¥500/year | Custom tool development |
|
|
@@ -277,22 +278,6 @@ evolver-tools is **MIT open source** and free forever for all tools.
|
|
|
277
278
|
|
|
278
279
|
👉 [View full pricing page](https://evolver-dev.github.io/evolver-tools/pricing/) — feature comparison, testimonials, and FAQ.
|
|
279
280
|
|
|
280
|
-
## Changelog
|
|
281
|
-
|
|
282
|
-
### v35.0.0 — 2026-06-01 (+5 tools, 249 total)
|
|
283
|
-
- **merge-json** — Deep merge multiple JSON files (arrays concatenate, dicts recurse)
|
|
284
|
-
- **validate** — Generic file validator (JSON/YAML/CSV/TOML/XML auto-detect)
|
|
285
|
-
- **diff-lines** — Line-by-line diff between two files (color, side-by-side)
|
|
286
|
-
- **csv-schema** — Infer CSV schema (column types, nulls, stats, samples)
|
|
287
|
-
- **chrono** — Advanced date/time calculator (durations, workdays, ranges, age)
|
|
288
|
-
|
|
289
|
-
### v34.0.0 — 2026-06-01 (+5 tools, 244 total)
|
|
290
|
-
- **emoji-cli** — Search and display emoji (230+ emoji, categories, --random)
|
|
291
|
-
- **html-strip** — Strip HTML tags, extract plain text (stdin/file, --preserve-links)
|
|
292
|
-
- **json-patch** — Apply JSON Patch (RFC 6902) operations to JSON files
|
|
293
|
-
- **markdown-format** — Format/beautify Markdown tables and lists
|
|
294
|
-
- **ansi-to-txt** — Strip ANSI escape codes, convert to plain text
|
|
295
|
-
|
|
296
281
|
Support the project via one-time purchase (¥79) or monthly sponsorship on [GitHub Sponsors](https://github.com/sponsors/evolver-dev).
|
|
297
282
|
|
|
298
283
|
## Links
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""evolver CLI - Unified interface for all EVOLVER tools.
|
|
3
|
+
|
|
4
|
+
Tools are auto-discovered via TOOL_META in each vendor module.
|
|
5
|
+
Free/PRO tier management via evolver_tools.license module.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
evolver list # List all tools (FREE/PRO tagged)
|
|
9
|
+
evolver <toolname> [args...] # Run a tool
|
|
10
|
+
evolver license <key> # Install a PRO license key
|
|
11
|
+
evolver status # Show licensing status
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import sys
|
|
15
|
+
import importlib
|
|
16
|
+
|
|
17
|
+
from evolver_tools.autoreg import auto_discover
|
|
18
|
+
|
|
19
|
+
# Try to import license module — degrade gracefully on failure
|
|
20
|
+
try:
|
|
21
|
+
from evolver_tools.license import (
|
|
22
|
+
tool_is_pro,
|
|
23
|
+
tool_is_free,
|
|
24
|
+
get_tier,
|
|
25
|
+
require_pro,
|
|
26
|
+
install_key,
|
|
27
|
+
status_text,
|
|
28
|
+
FREE_TOOLS,
|
|
29
|
+
PRO_TOOLS_CATEGORIES,
|
|
30
|
+
)
|
|
31
|
+
_LICENSE_AVAILABLE = True
|
|
32
|
+
except ImportError:
|
|
33
|
+
_LICENSE_AVAILABLE = False
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def list_tools():
|
|
37
|
+
"""Display all available tools with FREE/PRO tags."""
|
|
38
|
+
tools = auto_discover()
|
|
39
|
+
print('\x1b[1;36m===== EVOLVER Tools v31.0.0 =====\x1b[0m')
|
|
40
|
+
print()
|
|
41
|
+
|
|
42
|
+
free_count = 0
|
|
43
|
+
pro_count = 0
|
|
44
|
+
unknown_count = 0
|
|
45
|
+
|
|
46
|
+
for name, info in sorted(tools.items()):
|
|
47
|
+
if _LICENSE_AVAILABLE:
|
|
48
|
+
tier = get_tier(name)
|
|
49
|
+
if tier == "FREE":
|
|
50
|
+
tag = "\x1b[1;32mFREE\x1b[0m"
|
|
51
|
+
free_count += 1
|
|
52
|
+
elif tier == "PRO":
|
|
53
|
+
tag = "\x1b[1;33mPRO \x1b[0m"
|
|
54
|
+
pro_count += 1
|
|
55
|
+
else:
|
|
56
|
+
tag = " "
|
|
57
|
+
unknown_count += 1
|
|
58
|
+
else:
|
|
59
|
+
tag = " "
|
|
60
|
+
unknown_count += 1
|
|
61
|
+
|
|
62
|
+
print(f' {tag} \033[1;36m{name:<18}\033[0m {info["desc"]}')
|
|
63
|
+
|
|
64
|
+
print()
|
|
65
|
+
if _LICENSE_AVAILABLE:
|
|
66
|
+
print(f' Total: {len(tools)} tools | \x1b[1;32m{free_count} FREE\x1b[0m | '
|
|
67
|
+
f'\x1b[1;33m{pro_count} PRO\x1b[0m')
|
|
68
|
+
print()
|
|
69
|
+
print(' Usage: evolver <toolname> [args...]')
|
|
70
|
+
print(' evolver list')
|
|
71
|
+
print(' evolver license <key> (install PRO license)')
|
|
72
|
+
print(' evolver status')
|
|
73
|
+
else:
|
|
74
|
+
print(f' Total: {len(tools)} tools')
|
|
75
|
+
print()
|
|
76
|
+
print('Usage: evolver <toolname> [args...]')
|
|
77
|
+
print(' evolver list')
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def run_tool(tool_name, args):
|
|
81
|
+
"""Run a tool by name with args, checking license if applicable."""
|
|
82
|
+
tools = auto_discover()
|
|
83
|
+
|
|
84
|
+
if tool_name not in tools:
|
|
85
|
+
print(f'Unknown tool: {tool_name}')
|
|
86
|
+
sys.exit(1)
|
|
87
|
+
|
|
88
|
+
# License gate for PRO tools
|
|
89
|
+
if _LICENSE_AVAILABLE:
|
|
90
|
+
if not require_pro(tool_name):
|
|
91
|
+
sys.exit(1)
|
|
92
|
+
|
|
93
|
+
info = tools[tool_name]
|
|
94
|
+
mod_path = info["module"]
|
|
95
|
+
func_name = info["func"]
|
|
96
|
+
old_argv = sys.argv
|
|
97
|
+
sys.argv = [tool_name] + args
|
|
98
|
+
try:
|
|
99
|
+
mod = importlib.import_module(mod_path)
|
|
100
|
+
func = getattr(mod, func_name)
|
|
101
|
+
result = func()
|
|
102
|
+
if result is not None:
|
|
103
|
+
print(result)
|
|
104
|
+
except KeyboardInterrupt:
|
|
105
|
+
pass
|
|
106
|
+
except Exception as e:
|
|
107
|
+
print(f'Error running {tool_name}: {e}', file=sys.stderr)
|
|
108
|
+
sys.exit(1)
|
|
109
|
+
finally:
|
|
110
|
+
sys.argv = old_argv
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def cmd_install_license(args):
|
|
114
|
+
"""Install a PRO license key from argument or stdin."""
|
|
115
|
+
if args:
|
|
116
|
+
key = args[0]
|
|
117
|
+
else:
|
|
118
|
+
# Read from stdin (pipe)
|
|
119
|
+
key = sys.stdin.read().strip()
|
|
120
|
+
if not key:
|
|
121
|
+
print('Usage: evolver license <key>')
|
|
122
|
+
print(' or: echo "<key>" | evolver license')
|
|
123
|
+
sys.exit(1)
|
|
124
|
+
|
|
125
|
+
if not _LICENSE_AVAILABLE:
|
|
126
|
+
print('License module not available — cannot install key.')
|
|
127
|
+
sys.exit(1)
|
|
128
|
+
|
|
129
|
+
from evolver_tools.license import validate_key, install_key
|
|
130
|
+
|
|
131
|
+
# Validate first
|
|
132
|
+
if not validate_key(key):
|
|
133
|
+
print('\x1b[1;31m✗ Invalid license key.\x1b[0m')
|
|
134
|
+
print(' Get a valid key at https://evolver.dev/pro')
|
|
135
|
+
sys.exit(1)
|
|
136
|
+
|
|
137
|
+
# Install
|
|
138
|
+
if install_key(key):
|
|
139
|
+
print('\x1b[1;32m✓ License key installed successfully!\x1b[0m')
|
|
140
|
+
try:
|
|
141
|
+
import json
|
|
142
|
+
payload = json.loads(key)
|
|
143
|
+
print(f' Owner: {payload.get("owner", "unknown")}')
|
|
144
|
+
except Exception:
|
|
145
|
+
pass
|
|
146
|
+
else:
|
|
147
|
+
print('\x1b[1;31m✗ Failed to write license key.\x1b[0m')
|
|
148
|
+
sys.exit(1)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def cmd_status():
|
|
152
|
+
"""Show licensing status."""
|
|
153
|
+
if not _LICENSE_AVAILABLE:
|
|
154
|
+
print('\x1b[1;33m===== EVOLVER Tools Status =====\x1b[0m')
|
|
155
|
+
print()
|
|
156
|
+
print(' License module not available.')
|
|
157
|
+
print(' All tools available as FREE.')
|
|
158
|
+
return
|
|
159
|
+
|
|
160
|
+
print('\x1b[1;36m===== EVOLVER Tools Status =====\x1b[0m')
|
|
161
|
+
print()
|
|
162
|
+
print(status_text())
|
|
163
|
+
tools = auto_discover()
|
|
164
|
+
free_actual = sum(1 for n in tools if get_tier(n) == "FREE")
|
|
165
|
+
pro_actual = sum(1 for n in tools if get_tier(n) == "PRO")
|
|
166
|
+
print(f' FREE tools available: {free_actual}')
|
|
167
|
+
print(f' PRO tools available: {pro_actual}')
|
|
168
|
+
print()
|
|
169
|
+
print(f' Get PRO: https://evolver.dev/pro')
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def main():
|
|
173
|
+
if len(sys.argv) < 2 or sys.argv[1] in ("-h", "--help"):
|
|
174
|
+
list_tools()
|
|
175
|
+
return
|
|
176
|
+
|
|
177
|
+
cmd = sys.argv[1]
|
|
178
|
+
args = sys.argv[2:]
|
|
179
|
+
|
|
180
|
+
if cmd == "list":
|
|
181
|
+
list_tools()
|
|
182
|
+
elif cmd == "license":
|
|
183
|
+
cmd_install_license(args)
|
|
184
|
+
elif cmd == "status":
|
|
185
|
+
cmd_status()
|
|
186
|
+
else:
|
|
187
|
+
run_tool(cmd, args)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
if __name__ == "__main__":
|
|
191
|
+
main()
|