From d55efffedc19704b4377fb29e28a0a0d225ece5b Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 15 May 2023 08:48:53 +0000 Subject: automatic import of python-a-api-server --- python-a-api-server.spec | 826 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 826 insertions(+) create mode 100644 python-a-api-server.spec (limited to 'python-a-api-server.spec') diff --git a/python-a-api-server.spec b/python-a-api-server.spec new file mode 100644 index 0000000..f951529 --- /dev/null +++ b/python-a-api-server.spec @@ -0,0 +1,826 @@ +%global _empty_manifest_terminate_build 0 +Name: python-A-Api-Server +Version: 1.1.5 +Release: 1 +Summary: 自建一个Resful风格的接口自助服务,方便API自动化测试工具的开发与调试! +License: MIT +URL: https://github.com/zhuifengshen/a-api-server +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b8/09/e79f7c02b7ed55f76cbd2f47c6c0c2c40603b2bf0e99db502f703477a2f0/A_Api_Server-1.1.5.tar.gz +BuildArch: noarch + +Requires: python3-flask + +%description +### 2. 具体接口说明 +#### 2.1. 获取令牌 +- 请求路径:/api/get-token +- 请求方法:post +- 请求头 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ----------- | -------- | ---------- | ---- | +| User-Agent | String | 用户代理 | | +| device_sn | String | 设备序列号 | | +| os_platform | String | 系统平台 | | +| app_version | String | 应用版本 | | +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------ | -------- | -------- | ------------------------ | +| sign | String | 加密签名 | 根据请求头和密钥加密生成 | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---------- | +| success | Boolean | 是否成功 | | +| token | String | 访问令牌 | 长度 16 位 | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'token': "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aW" +} +``` +- 失败返回 +``` +状态码:403 +响应体: +{ + 'success': false, + 'msg': "Authorization failed!" +} +``` +- 签名生成算法 +```python +def get_sign(*args): + SECRECT_KEY = 'YouMi' + content = ''.join(args).encode('ascii') + sign_key = SECRECT_KEY.encode('ascii') + sign = hmac.new(sign_key, content, hashlib.sha1).hexdigest() + return sign +sign = get_sign(user_agent, device_sn, os_platform, app_version) +``` +#### 2.2. 新建用户 +- 请求路径:/api/users/:id +- 请求方法:post +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| id | Int | 用户 ID | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| msg | String | 说明信息 | | +- 成功返回 +``` +状态码:201 +响应体: +{ + 'success': true, + 'msg': "user created successfully." +} +``` +- 失败返回 +``` +状态码:422 +响应体: +{ + 'success': false, + 'msg': "user already existed." +} +``` +#### 2.3. 根据 ID 查询用户信息 +- 请求路径:/api/users/:id +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.4. 更新用户信息 +- 请求路径:/api/users/:id +- 请求方法:put +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| id | Int | 用户 ID | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| data | Dict | 用户信息 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.5. 删除用户信息 +- 请求路径:/api/users/:id +- 请求方法:delete +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------ | -------- | -------- | ---- | +| id | Int | 用户 ID | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| data | Dict | 用户信息 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.6. 用户数据列表 +- 请求路径:/api/users +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | ------------ | ---- | +| success | Boolean | 是否成功 | | +| count | Int | 用户总数 | | +| items | Array | 用户数据集合 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'count': 3, + 'items': [ + {'name': 'admin1', 'password': '123456'}, + {'name': 'admin2', 'password': '123456'}, + {'name': 'admin3', 'password': '123456'} + ] +} +``` +#### 2.7. 清空用户数据 +- 请求路径:/api/reset-all +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true +} +``` +## 三、自动化发布:一键打 Tag 并上传至 PYPI +每次在 ** about **.py 更新版本号后,运行以下命令,实现自动化更新打包上传至 [PYPI](https://pypi.org/) ,同时根据其版本号自动打 Tag 并推送到仓库: +``` +python3 setup.py pypi +``` +注意:上传前需提前在 twine 工具中配置自己的 Pypi 的账号信息!!! +### 四、CHANGELOG +``` +v1.0.0 +1、实现对用户账号进行增删改查功能的 API 服务,包含了接口的签名校验机制; +2、完善了 API 使用文档; +3、添加了自动化打包脚本; +``` +## 五、致谢 +**A-Api-Server** 工具的产生和打包,主要参考了开源项目 [HttpRunner](https://github.com/httprunner/httprunner),受益多多,感谢! +## LICENSE +``` +MIT License +Copyright (c) 2019 Devin https://zhangchuzhao.site +Copyright (c) 2017 Toby Qin +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. +``` + +%package -n python3-A-Api-Server +Summary: 自建一个Resful风格的接口自助服务,方便API自动化测试工具的开发与调试! +Provides: python-A-Api-Server +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-A-Api-Server +### 2. 具体接口说明 +#### 2.1. 获取令牌 +- 请求路径:/api/get-token +- 请求方法:post +- 请求头 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ----------- | -------- | ---------- | ---- | +| User-Agent | String | 用户代理 | | +| device_sn | String | 设备序列号 | | +| os_platform | String | 系统平台 | | +| app_version | String | 应用版本 | | +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------ | -------- | -------- | ------------------------ | +| sign | String | 加密签名 | 根据请求头和密钥加密生成 | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---------- | +| success | Boolean | 是否成功 | | +| token | String | 访问令牌 | 长度 16 位 | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'token': "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aW" +} +``` +- 失败返回 +``` +状态码:403 +响应体: +{ + 'success': false, + 'msg': "Authorization failed!" +} +``` +- 签名生成算法 +```python +def get_sign(*args): + SECRECT_KEY = 'YouMi' + content = ''.join(args).encode('ascii') + sign_key = SECRECT_KEY.encode('ascii') + sign = hmac.new(sign_key, content, hashlib.sha1).hexdigest() + return sign +sign = get_sign(user_agent, device_sn, os_platform, app_version) +``` +#### 2.2. 新建用户 +- 请求路径:/api/users/:id +- 请求方法:post +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| id | Int | 用户 ID | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| msg | String | 说明信息 | | +- 成功返回 +``` +状态码:201 +响应体: +{ + 'success': true, + 'msg': "user created successfully." +} +``` +- 失败返回 +``` +状态码:422 +响应体: +{ + 'success': false, + 'msg': "user already existed." +} +``` +#### 2.3. 根据 ID 查询用户信息 +- 请求路径:/api/users/:id +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.4. 更新用户信息 +- 请求路径:/api/users/:id +- 请求方法:put +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| id | Int | 用户 ID | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| data | Dict | 用户信息 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.5. 删除用户信息 +- 请求路径:/api/users/:id +- 请求方法:delete +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------ | -------- | -------- | ---- | +| id | Int | 用户 ID | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| data | Dict | 用户信息 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.6. 用户数据列表 +- 请求路径:/api/users +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | ------------ | ---- | +| success | Boolean | 是否成功 | | +| count | Int | 用户总数 | | +| items | Array | 用户数据集合 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'count': 3, + 'items': [ + {'name': 'admin1', 'password': '123456'}, + {'name': 'admin2', 'password': '123456'}, + {'name': 'admin3', 'password': '123456'} + ] +} +``` +#### 2.7. 清空用户数据 +- 请求路径:/api/reset-all +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true +} +``` +## 三、自动化发布:一键打 Tag 并上传至 PYPI +每次在 ** about **.py 更新版本号后,运行以下命令,实现自动化更新打包上传至 [PYPI](https://pypi.org/) ,同时根据其版本号自动打 Tag 并推送到仓库: +``` +python3 setup.py pypi +``` +注意:上传前需提前在 twine 工具中配置自己的 Pypi 的账号信息!!! +### 四、CHANGELOG +``` +v1.0.0 +1、实现对用户账号进行增删改查功能的 API 服务,包含了接口的签名校验机制; +2、完善了 API 使用文档; +3、添加了自动化打包脚本; +``` +## 五、致谢 +**A-Api-Server** 工具的产生和打包,主要参考了开源项目 [HttpRunner](https://github.com/httprunner/httprunner),受益多多,感谢! +## LICENSE +``` +MIT License +Copyright (c) 2019 Devin https://zhangchuzhao.site +Copyright (c) 2017 Toby Qin +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. +``` + +%package help +Summary: Development documents and examples for A-Api-Server +Provides: python3-A-Api-Server-doc +%description help +### 2. 具体接口说明 +#### 2.1. 获取令牌 +- 请求路径:/api/get-token +- 请求方法:post +- 请求头 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ----------- | -------- | ---------- | ---- | +| User-Agent | String | 用户代理 | | +| device_sn | String | 设备序列号 | | +| os_platform | String | 系统平台 | | +| app_version | String | 应用版本 | | +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------ | -------- | -------- | ------------------------ | +| sign | String | 加密签名 | 根据请求头和密钥加密生成 | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---------- | +| success | Boolean | 是否成功 | | +| token | String | 访问令牌 | 长度 16 位 | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'token': "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aW" +} +``` +- 失败返回 +``` +状态码:403 +响应体: +{ + 'success': false, + 'msg': "Authorization failed!" +} +``` +- 签名生成算法 +```python +def get_sign(*args): + SECRECT_KEY = 'YouMi' + content = ''.join(args).encode('ascii') + sign_key = SECRECT_KEY.encode('ascii') + sign = hmac.new(sign_key, content, hashlib.sha1).hexdigest() + return sign +sign = get_sign(user_agent, device_sn, os_platform, app_version) +``` +#### 2.2. 新建用户 +- 请求路径:/api/users/:id +- 请求方法:post +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| id | Int | 用户 ID | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| msg | String | 说明信息 | | +- 成功返回 +``` +状态码:201 +响应体: +{ + 'success': true, + 'msg': "user created successfully." +} +``` +- 失败返回 +``` +状态码:422 +响应体: +{ + 'success': false, + 'msg': "user already existed." +} +``` +#### 2.3. 根据 ID 查询用户信息 +- 请求路径:/api/users/:id +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.4. 更新用户信息 +- 请求路径:/api/users/:id +- 请求方法:put +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| -------- | -------- | -------- | ---- | +| id | Int | 用户 ID | | +| name | String | 用户名 | | +| password | String | 密码 | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| data | Dict | 用户信息 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.5. 删除用户信息 +- 请求路径:/api/users/:id +- 请求方法:delete +- 请求参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------ | -------- | -------- | ---- | +| id | Int | 用户 ID | | +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +| data | Dict | 用户信息 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'data': { + 'name': 'admin', + 'password': '123456' + } +} +``` +- 失败返回 +``` +状态码:404 +响应体: +{ + 'success': fasle, + 'data': {} +} +``` +#### 2.6. 用户数据列表 +- 请求路径:/api/users +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | ------------ | ---- | +| success | Boolean | 是否成功 | | +| count | Int | 用户总数 | | +| items | Array | 用户数据集合 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true, + 'count': 3, + 'items': [ + {'name': 'admin1', 'password': '123456'}, + {'name': 'admin2', 'password': '123456'}, + {'name': 'admin3', 'password': '123456'} + ] +} +``` +#### 2.7. 清空用户数据 +- 请求路径:/api/reset-all +- 请求方法:get +- 响应参数 +| 参数名 | 参数类型 | 参数说明 | 备注 | +| ------- | -------- | -------- | ---- | +| success | Boolean | 是否成功 | | +- 成功返回 +``` +状态码:200 +响应体: +{ + 'success': true +} +``` +## 三、自动化发布:一键打 Tag 并上传至 PYPI +每次在 ** about **.py 更新版本号后,运行以下命令,实现自动化更新打包上传至 [PYPI](https://pypi.org/) ,同时根据其版本号自动打 Tag 并推送到仓库: +``` +python3 setup.py pypi +``` +注意:上传前需提前在 twine 工具中配置自己的 Pypi 的账号信息!!! +### 四、CHANGELOG +``` +v1.0.0 +1、实现对用户账号进行增删改查功能的 API 服务,包含了接口的签名校验机制; +2、完善了 API 使用文档; +3、添加了自动化打包脚本; +``` +## 五、致谢 +**A-Api-Server** 工具的产生和打包,主要参考了开源项目 [HttpRunner](https://github.com/httprunner/httprunner),受益多多,感谢! +## LICENSE +``` +MIT License +Copyright (c) 2019 Devin https://zhangchuzhao.site +Copyright (c) 2017 Toby Qin +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. +``` + +%prep +%autosetup -n A-Api-Server-1.1.5 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-A-Api-Server -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 15 2023 Python_Bot - 1.1.5-1 +- Package Spec generated -- cgit v1.2.3