import Foundation import Common
do {
let options = ResourcesParser.parseOrExit() let figmaApi = Api(baseURL: "https://api.figma.com/v1") NSSetUncaughtExceptionHandler { (exception) in let stack = exception.callStackReturnAddresses print("Stack trace: \(stack)") } let deploys = try Deploy.fromTSV(options.tsv) let output = (options.output as NSString).expandingTildeInPath let outputURL = URL(fileURLWithPath: output) let metadataURL = outputURL.appendingPathComponent("metadata") let fm = FileManager.default try fm.createDirectory(at: metadataURL, withIntermediateDirectories: true, attributes: [:]) print("Process metadate at \(metadataURL)") for deploy in deploys { let locale = metadataURL.appendingPathComponent(deploy[.locale]) do { try fm.createDirectory(at: locale, withIntermediateDirectories: true, attributes: [:]) deploy.createFiles(at: locale) } catch { print("Create locale error: \(error)") } } if options.downloadScreenshots, let pageId = options.figmaPage { print("Load figma screenshots data") let pages = try figmaApi.pages(token: options.figmaToken, projectId: options.figmaProjectId, page: pageId) let screens = pages.screens(for: pageId) print("Download figma screenshots data") let downloader = ScreenshotDownloader( figmaApi: figmaApi, outputURL: outputURL, token: options.figmaToken, projectId: options.figmaProjectId ) try downloader.download(screens: screens) } if options.downloadPreview { let downloader = PreviewDownloader(outputURL: outputURL) try downloader.download(deploys: deploys) }
} catch {
print("\(error.locd)") exit(1)
} exit(0)