This commit is contained in:
Seyed Mojtaba Hosseini Zeidabadi 2024-06-07 10:09:24 -07:00 committed by GitHub
commit 18f0125ee0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 52 additions and 0 deletions

View File

@ -143,6 +143,8 @@
- Config setting presets can now also be loaded from the main bundle when bundling XcodeGenKit #1135 @SofteqDG
- Added ability to generate multiple projects in one XcodeGen launch #1270 @skofgar
- Use memoization during recursive SpecFiles creation. This provides a drastic performance boost with lots of recursive includes #1275 @ma-oli
- Added `--render-markdowns` command flag to generate the `.xcodesamplecode.plist` inside the project container and let Xcode render the markdown files with `md` extension.
- Added `renderMarkdown` spec option generate the `.xcodesamplecode.plist` inside the project container and let Xcode render the markdown files with `md` extension.
### Fixed

View File

@ -16,6 +16,7 @@ public struct SpecOptions: Equatable {
public var carthageBuildPath: String?
public var carthageExecutablePath: String?
public var createIntermediateGroups: Bool
public var renderMarkdowns: Bool?
public var bundleIdPrefix: String?
public var settingPresets: SettingPresets
public var disabledValidations: [ValidationType]
@ -80,6 +81,7 @@ public struct SpecOptions: Equatable {
carthageBuildPath: String? = nil,
carthageExecutablePath: String? = nil,
createIntermediateGroups: Bool = createIntermediateGroupsDefault,
renderMarkdowns: Bool? = nil,
bundleIdPrefix: String? = nil,
settingPresets: SettingPresets = settingPresetsDefault,
developmentLanguage: String? = nil,
@ -106,6 +108,7 @@ public struct SpecOptions: Equatable {
self.carthageBuildPath = carthageBuildPath
self.carthageExecutablePath = carthageExecutablePath
self.createIntermediateGroups = createIntermediateGroups
self.renderMarkdowns = renderMarkdowns
self.bundleIdPrefix = bundleIdPrefix
self.settingPresets = settingPresets
self.developmentLanguage = developmentLanguage
@ -142,6 +145,7 @@ extension SpecOptions: JSONObjectConvertible {
bundleIdPrefix = jsonDictionary.json(atKeyPath: "bundleIdPrefix")
settingPresets = jsonDictionary.json(atKeyPath: "settingPresets") ?? SpecOptions.settingPresetsDefault
createIntermediateGroups = jsonDictionary.json(atKeyPath: "createIntermediateGroups") ?? SpecOptions.createIntermediateGroupsDefault
renderMarkdowns = jsonDictionary.json(atKeyPath: "renderMarkdowns")
developmentLanguage = jsonDictionary.json(atKeyPath: "developmentLanguage")
usesTabs = jsonDictionary.json(atKeyPath: "usesTabs")
xcodeVersion = jsonDictionary.json(atKeyPath: "xcodeVersion")

View File

@ -19,6 +19,9 @@ class GenerateCommand: ProjectCommand {
@Flag("--only-plists", description: "Generate only plist files")
var onlyPlists: Bool
@Flag("--render-markdowns", description: "Render markdown files with `.md` extension")
var renderMarkdowns: Bool
init(version: Version) {
super.init(version: version,
@ -119,6 +122,39 @@ class GenerateCommand: ProjectCommand {
} catch {
throw GenerationError.writingError(error)
}
switch project.options.renderMarkdowns {
case .some(true):
do {
try fileWriter.writeMarkdownRendererPlist()
success("Xcode markdown rendering enabled")
} catch {
throw GenerationError.writingError(error)
}
case .some(false):
do {
try fileWriter.deleteMarkdownRendererPlist()
success("Xcode markdown rendering disabled")
} catch {
info("Failed to disable Xcode markdown rendering: \(error.localizedDescription)")
}
case .none: break
// No need for change
}
// add markdown renderer if needed
/// - Note: this flag will override the spec option
if renderMarkdowns && project.options.renderMarkdowns != true {
do {
if project.options.renderMarkdowns == false {
info("Overriding markdown rendering option because of the given --render-markdowns flag")
}
try fileWriter.writeMarkdownRendererPlist()
success("Xcode markdown rendering enabled")
} catch {
throw GenerationError.writingError(error)
}
}
// write cache
if let cacheFile = cacheFile {

View File

@ -40,6 +40,16 @@ public class FileWriter {
}
}
}
public func writeMarkdownRendererPlist() throws {
let path = project.defaultProjectPath + ".xcodesamplecode.plist"
try writePlist([:], path: path.string)
}
public func deleteMarkdownRendererPlist() throws {
let path = project.defaultProjectPath + ".xcodesamplecode.plist"
try path.delete()
}
private func writePlist(_ plist: [String: Any], path: String) throws {
let path = project.basePath + path