Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
一个用于管理项目及相关开发的工具
keywords: tool,project_manager
要支持grpc或者protobuf需要安装相关依赖
grpcio
,grpcio-tools
@grpc/proto-loader
,async
,google-protobuf
,grpc
,lodash
,minimist
python -m pip install pmfp
pmfp现在被设计为两个部分:
项目管理部分
用于快速根据托管在git仓库上的模板仓库项目构造项目调用功能部分
用于为不同的项目提供特定功能项目管理使用的子命令为project
,其整体设计思路是这样:
.pmfp_template.json
文件.其具体schema可以查看项目的protocol.py
文件中的TEMPLATE_INFO_SCHEMA
对象定义template_type
不为components
则说明这是一个模板资源包,我们就可以根据其作为模板构造项目.source
字段,这个字段用于声明组件的位置,如果其中有//
则说明它是引用的另一个资源项目的组件[[{host}::]{repo_namespace}::]{repo_name}[@{tag}]
[[{host}::]{repo_namespace}::]{repo_name}[@{tag}]//{component_path_str}
github.com
,默认的repo_namespace为Project-Manager-With-Git
,默认的tag为latest
,如果tag为latest它会拉取master分支的head.默认的资源仓库可以通过修改~/.pmfprc/config.json
来修改,另外我们还可以使用cache
子命令管理资源包缓存
本项目将所有资源仓库类型分为如下几种:
socket
,专指基于网络的通讯程序,包括http服务,websocket客户端与服务,各种rpc客户端与服务,以及zeromq,webrtc等GUI
,专指图形界面task
专指主动执行的任务,比如一般脚本,定时任务watcher
监听器,被动监听事件的任务,比如监听文件系统的任务,监听消息中间件的任务module
模块,必须被其他程序调用的程序components
组件集合,本身并不能执行doc
文档型组件资源仓库的分支和tag名都可以作为版本标签,但有两个特殊标签会进行更新操作,其他标签一旦下载到本地就不会更新了.因此构造资源仓库时建议使用git的tag维护稳定版本模板.
两个特殊标签为:
latest
会拉取master或者main分支.这个标签应该保证为最新的可用版本dev
会拉取dev分支,这个标签意为开发版本,并不需要保证是可用版本本项目目前之前如下语言和执行环境组合:
language为py
venv
,即python的标准库venv生成的c python虚拟环境conda
,即anaconda/miniconda生成的c python虚拟环境pypy
,即python的标准库venv生成的pypy虚拟环境language为js
node
,即以node为执行环境的javascript的babel标准环境webpack
,即以浏览器为执行环境,使用webpack编译项目的javascript的babel标准环境language为cython
venv
,即python的标准库venv生成的c python虚拟环境conda
,即anaconda/miniconda生成的c python虚拟环境language为go
gomod
,即golang的gomod模式管理项目language为C
cmake
,即使用cmake作为c语言的项目管理工具language为CXX
cmake
,即使用cmake作为c语言的项目管理工具language为md
http
,即使用markdown作为目标语言托管到http服务器上的纯文档环境支持直接调用功能的子命令包括:
build
打包项目到可分发状态.doc
快速构造项目的文档docker image
快速构造docker镜像docker compose
快速构造docker部署配置env
快速构建项目的独立执行环境grpc
快速构造了grpc的客户端和服务端http
用于构造静态http服务和构造http请求和压测proto
用于快速构建和编译protobuf文件schema
用于校验jsonschema
test
用于对项目进行测试requires
用于管理依赖build
打包项目到可分发状态这条命令的含义为--打包项目到可以分发的状态.不同编程语言可以打包到的状态并不相同:
golang:
exec
可执行文件alib
静态库dlib
动态库(linux专用)zip
源码压缩归档python:
exec
,可执行的.pyz
文件zip
,wheel归档grpc build
子功能添加对grpc-gateway的支持,在--language设置为go时如果web设置为True则会编译grpc-gateway的支持文件修复go 1.18+后require(
会有多个的bug
doc build
中doc_source_dir
参数现在有了默认值""
现在没装node或者go也可以使用了
doc new
针对go语言的接口参数修正了字段含义弄混的bugdoc build
针对go语言的接口参数修正了字段含义弄混的bugproject add
和project new
中会处理模板文件夹中文件或文件夹名中含有_ref_
和_fre_
的对象,将他们的名字也作为jinja模板处理doc new
新增一个参数is_web
,当language为go且is_web为真时执行swag init --parseDependency --parseInternal
doc build
新增一个参数is_web
,当language为go且is_web为真时执行swag init --parseDependency --parseInternal
grpc build
针对go语言的的接口更新到满足protobuf-go@1.26+
和protoc-gen-go-grpc@v1.1+
grpc build
针对C++的方式行为修改为类似python的方式,to
会被自动加上指定proto文件的文件名,当路径不存在时会创建grpc listservice
删除了无效参数service
grpc build
针对C++的方式行为修改为类似python的方式,to
会被自动加上指定proto文件的文件名proto build
和grpc build
因为source_relative
字段改动造成无法使用的问题proto build
命令针对js语言增加了参数js_import_style
proto build
命令针对go语言增参数source_relative
改为go_source_relative
grpc build
命令针对js语言增加了参数js_import_style
,web
,web_import_style
和web_mode
来细化js模块的使用环境grpc build
命令针对go语言增参数source_relative
改为go_source_relative
grpc build
命令现在加回了对c++的支持grpc build
接口变动,新增字段serv_file
用于指定定义rpc接口的文件.针对python的编译会将两个文件放在{serv_file}_pb
模块下grpc build
使用的jinja2模板grpc build
对c++的支持grpc build
对python时会一直往__init__.py
中写东西的bugtemplate_keys
字段支持新字段ask(boolean)
,用于让pmfp提示用户输入key的取值env new
可以指定依赖了require install
命令当不指定-n
时使用go mod tidy
更新依赖docker image build --push
报错的问题docker image build
逻辑错误project new
时参数覆盖顺序的问题,现在越浅层会覆盖深层-d/--payload
现在指向一个写着请求json的地址,默认为query.json
,新增-s/--service
,用户不再需要记怎么将service和method组合了env new
无法给已经初始化过的项目创建执行环境的bugproject as_temp
无法转换dockerfile和docker-compose的问题project as_temp
转换文件后source字段不加.jinja
的问题project new
和project add
不会将项目信息作为参数的问题install
相当于requires install
uninstall
相当于requires uninstall
build
和pack
合并,重新整理,这条命令现在用于打包项目到可分发状态env new
针对python,当对应参数没有填时会添加默认的tests_require
和setup_requires
env new
针对cython,当对应参数没有填时会添加默认的tests_require
和setup_requires
project new
现在当组件不存在时会提示是什么组件project as_template
子命令现在也会生成测试依赖了env new
的参数,改为必须有language而非envproject new
,现在env不是必填的参数,如果指定了template则可以不再指定language,如果没有则必须指定language4.0.0版本在整体架构和使用方式上都做出了大规模修改,现在多数功能都可以脱离pmfprc.json
单独执行.pmfprc.json
的作用现在只是一个存储默认参数的特殊文件,没有也可以执行.同时改用git仓库作为模板保存工具,从而增强扩展性同时减小pmfp的大小
pmfprc.json
MIT License
Copyright (c) 2020 Python-Tools
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
FAQs
A simple package manager and scaffold for python & some other languages.
We found that pmfp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.