问题标签 [sourcery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
182 浏览

swift - 使用 Stencil 删除字符串中的子字符串

我正在尝试使用Sourcery来扩展一些库。我几乎成功了,但在某些时候我有一个类型,从一个 func 返回,它是一个可选的。我想让它变成非可选的。为此,我必须了解如何删除问号,但在我看来,语言不支持它。如果它可以以某种方式提供帮助,我的脚本如下:

在这个地方,{{ method.returnTypeName }}我所有的返回类型都是可选的。我想删除问号。可能吗?

0 投票
3 回答
1939 浏览

xcode - Xcode 10、sourcery 和 swiftlint 构建阶段顺序

更新到 Xcode 10 后,初始项目配置存在一些问题。步骤如下所示:

  1. 使用Sourcery生成一些文件
  2. 使用SwiftLint进行检查
  3. 建造

配置工作如下:

在此处输入图像描述

这在 Xcode 9 中运行良好,但显然,它在 Xcode 10 构建系统下不起作用。问题是如果我下载存储库(.generated文件不是存储库的一部分)。点击build它会显示如下结果:

... 使用 '.sourcery.yml' 中的配置文件扫描源... 找到 239 种类型。正在加载模板... 已加载 9 个模板。生成代码...完成。处理时间 0.491948962211609 秒...

所以 sourcery 工作正常,然后 linting:

Linting 'FromResponse.generated.swift' (1/186)

工作正常以及过程,但最终,构建将失败:

错误:找不到构建输入文件:'/path/Generated/FromResponse.generated.swift', ...

所以这很奇怪,因为文件物理存在并且根据构建设置文件应该在生成它们之后编译。那么我应该如何在构建过程中处理 sourcery 呢?

0 投票
0 回答
199 浏览

swift-stencil - 在 Sourcery 模板/Swift-Stencil 中迭代泛型类型

有谁知道 Sourcery 中是否有办法获取对泛型继承的类型的引用?我假设这个问题没有立即意义,所以这里有一些我正在尝试做的代码:

假设我在 Swift 中有以下内容:

我想在 Sourcery 中做的是这样的:

这样它最终会打印:

“基于此泛型类型继承的协议的类型中的 genericType”部分是我试图弄清楚如何做的。感谢您的任何帮助!

0 投票
1 回答
651 浏览

swift - SwiftyMocky:ShellOut 遇到错误

我在生成模拟时面临以下问题SwiftyMocky

我已经尝试sourcery将版本更新到 0.18.0 并卸载两者sourcerySwiftyMocky重新安装。

任何帮助,将不胜感激。

更新SwiftyMocky doctor日志

此外,我的一位同事能够生成模拟。他说当他运行SwiftyMocky generate命令时它不会生成<path>/.mocky/.config.yml.tmp.

唯一的区别是macOS版本。我在跑10.15.4,他在跑10.15.3

0 投票
2 回答
140 浏览

swift - 使用 Sourcery 和 Stencil 访问随机数组元素

我正在使用 Sourcery 和 Stencil 做一些代码生成工作。

我正在尝试向我的所有枚举添加一个扩展,该扩展具有一个返回枚举的随机案例的方法。所以,就我而言,我需要一种访问随机数组元素的方法。

我知道我们可以使用以下方法之一进行数组查找:(第一个、最后一个或按索引),但我找不到访问随机元素的方法。

这是我要实现的目标的示例:

显然,前面的代码片段不起作用。我只是添加它作为表达我意图的一种方式。

有人对此有任何想法吗?

0 投票
2 回答
341 浏览

ios - 带有 Flutter 构建的 iOS Sourcery

我正在尝试为 iOS 构建我的颤振应用程序,它有一个我想要保护的谷歌地图密钥,而不是签入源代码控制它需要从 azure 构建,为了实现这一点,我将我的地图密钥存储为一个秘密变量天蓝色并作为本地系统环境变量,我正在使用 Sourcery https://github.com/krzysztofzablocki/Sourcery为我生成一个包含此密钥的类,这一切都有效,但只有我第二次构建,第一次构建总是失败。

所以我正在使用这个命令构建

第一次运行会给我错误

“亚军”

然后再次发出相同的命令

这是我的运行脚本,它在编译源代码之前和颤振运行脚本之后调用

运行脚本

这将调用我的脚本,该脚本调用另一个脚本来导出地图 api 密钥并使用 .yml 文件运行 sourcery 命令,因为它的配置继承了脚本,(它还进行一些日志记录)

这是我的配置文件

这会在第一次构建时正确生成我的类,并且似乎已正确添加到目标中(编辑了我的密钥),但只有当我再次运行构建命令时,该应用程序才会编译。

有任何想法吗?

xcode 12.5 m1 macbook pro, swift 5

0 投票
1 回答
57 浏览

swift - Swift Sourcery:如何获取特定的关联类型?

给出了以下 Swift 协议

解释只是我需要用于其他代码生成的标记协议。手头的代码生成问题是:使每个实现的类型Program都符合每个符合的协议Body。理想情况下,我还想将这种“符合每个协议”限制为仅继承自Interpretation. 为简单起见,我将自己限制在只包含实例变量和实例方法而没有输入参数的协议。

这是我尝试过的:

这是我的测试类型:

这是我得到的:

我本来希望通过 codegen自动符合Barto 。ArrayInterpretable如何解决这个问题?

0 投票
0 回答
34 浏览

swift - 使用 Sourcery 查询方法的泛型类型

使用Sourcery,对于a TypeName,可以通过属性查询类型是否为通用,isGeneric也可以查看generic属性获取generic.typeParameters数组。请参阅类型名称文档

但是,我不知道如何为方法做同样的事情。我有这样的方法:

当我生成一个存根类时,我需要知道返回类型T, 代表一个泛型类型。我可以查询isGenericMethod正确返回true),但是没有generic可以识别的属性T,所以我知道该方法是通用的并没有真正帮助我 - 因为这并不一定意味着返回类型是通用的. 请参阅方法文档

此外,查询方法的isGeneric属性returnTypeName返回false,所以这种方法也不起作用。