mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2024-09-11 12:56:03 +03:00
Compare commits
9 Commits
5502ef5e0f
...
2314c2889b
Author | SHA1 | Date | |
---|---|---|---|
|
2314c2889b | ||
|
8beb3b2d2d | ||
|
2f2fd65370 | ||
|
9d64afa4bd | ||
|
cafbf2dac3 | ||
|
f9db8c5449 | ||
|
db0db75e63 | ||
|
25ea10f50c | ||
|
24f8ae15cf |
@ -158,6 +158,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
|
||||
|
||||
|
@ -1039,7 +1039,7 @@ The different actions share some properties:
|
||||
- [ ] **askForAppToLaunch**: **Bool** - `run` and `profile` actions can define the executable set to ask to launch. This defaults to false.
|
||||
- [ ] **launchAutomaticallySubstyle**: **String** - `run` action can define the launch automatically substyle ('2' for extensions).
|
||||
- [ ] **storeKitConfiguration**: **String** - `run` action can specify a storekit configuration. See [Options](#options).
|
||||
- [ ] **macroExpansion**: **String** - `run` and `test` action can define the macro expansion from other target. This defaults to nil.
|
||||
- [ ] **macroExpansion**: **String** - `run` and `test` actions can define the macro expansion from other target. This defaults to nil.
|
||||
|
||||
### Execution Action
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user