Skip to content

Commit 16ad822

Browse files
Update
1 parent 2bbe461 commit 16ad822

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,17 @@
55

66
<p align="center"><a href="https://github.com/TheAcharya/pipeline-neo/blob/main/LICENSE"><img src="http://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat" alt="license"/></a>&nbsp;<a href="https://github.com/TheAcharya/pipeline-neo"><img src="https://img.shields.io/badge/platform-macOS-lightgrey.svg?style=flat" alt="platform"/></a>&nbsp;<a href="https://github.com/TheAcharya/pipeline-neo/actions/workflows/build.yml"><img src="https://github.com/TheAcharya/pipeline-neo/actions/workflows/build.yml/badge.svg" alt="build"/></a>&nbsp;<img src="https://img.shields.io/badge/Swift-6.0-orange.svg?style=flat" alt="Swift"/>&nbsp;<img src="https://img.shields.io/badge/Xcode-16+-blue.svg?style=flat" alt="Xcode"/></p>
77

8-
A modern Swift 6 framework for working with Final Cut Pro's FCPXML with full concurrency support and TimecodeKit integration. Pipeline Neo provides a comprehensive API for parsing, creating, and manipulating FCPXML files with advanced timecode operations, async/await patterns, and robust error handling. Built with Swift 6.0 and targeting macOS 12+, it offers type-safe operations, comprehensive test coverage, and seamless integration with TimecodeKit for professional video editing workflows.
8+
A modern Swift 6 framework for working with Final Cut Pro's FCPXML with full concurrency support and TimecodeKit integration. Pipeline Neo is a spiritual successor to the original [Pipeline framework](https://github.com/reuelk/pipeline) by Reuel Kim, modernized for Swift 6.0 and contemporary development practices.
9+
10+
Pipeline Neo provides a comprehensive API for parsing, creating, and manipulating FCPXML files with advanced timecode operations, async/await patterns, and robust error handling. Built with Swift 6.0 and targeting macOS 12+, it offers type-safe operations, comprehensive test coverage, and seamless integration with TimecodeKit for professional video editing workflows.
11+
12+
Pipeline Neo is currently in an experimental stage and does not yet cover the full range of FCPXML attributes and parameters. It focuses on core functionality while providing a foundation for future expansion and feature completeness.
913

1014
This codebase is developed using AI agents.
1115

16+
> [!IMPORTANT]
17+
> Pipeline Neo has yet to be extensively tested in production environments, real-world workflows, or enterprise scenarios. This library serves as a modernized foundation for AI-assisted development and experimentation with FCPXML processing capabilities.
18+
1219
## Table of Contents
1320

1421
- [Core Features](#core-features)
@@ -274,7 +281,7 @@ Pipeline Neo is a modernized fork of the original Pipeline library. Key changes
274281

275282
## Credits
276283

277-
Original Work by [Reuel Kim](https://github.com/reuelk) ([0.5 ... 0.6](https://github.com/reuelk/pipeline))
284+
Created by [Vigneswaran Rajkumar](https://bsky.app/profile/vigneswaranrajkumar.com)
278285

279286
Icon Design by [Bor Jen Goh](https://www.artstation.com/borjengoh)
280287

Tests/PipelineNeoTests/PipelineNeoTests.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ final class PipelineNeoTests: XCTestCase {
7474
XCTAssertNotNil(utility)
7575
}
7676

77-
func testFilterFCPXElements() async throws {
77+
func testFilterFCPXElements() throws {
7878
let utility = FCPXMLUtility()
7979

8080
// Create test elements
@@ -85,13 +85,13 @@ final class PipelineNeoTests: XCTestCase {
8585
let elements = [eventElement, clipElement, audioElement]
8686

8787
// Test filtering
88-
let filtered = await utility.filter(fcpxElements: elements, ofTypes: [.event, .clip])
88+
let filtered = utility.filter(fcpxElements: elements, ofTypes: [.event, .clip])
8989
XCTAssertEqual(filtered.count, 2)
9090
XCTAssertTrue(filtered.contains { $0.name == "event" })
9191
XCTAssertTrue(filtered.contains { $0.name == "clip" })
9292
}
9393

94-
func testCMTimeFromTimecode() async throws {
94+
func testCMTimeFromTimecode() throws {
9595
let utility = FCPXMLUtility()
9696

9797
// Test 24fps timecode conversion
@@ -108,7 +108,7 @@ final class PipelineNeoTests: XCTestCase {
108108
XCTAssertEqual(cmTime.seconds, 5415.5, accuracy: 0.1)
109109
}
110110

111-
func testCMTimeFromFCPXMLTime() async throws {
111+
func testCMTimeFromFCPXMLTime() throws {
112112
let utility = FCPXMLUtility()
113113

114114
// Test FCPXML time string conversion
@@ -117,15 +117,15 @@ final class PipelineNeoTests: XCTestCase {
117117
XCTAssertEqual(cmTime.timescale, 30000)
118118
}
119119

120-
func testFCPXMLTimeFromCMTime() async throws {
120+
func testFCPXMLTimeFromCMTime() throws {
121121
let utility = FCPXMLUtility()
122122

123123
let cmTime = CMTime(value: 1500, timescale: 30000)
124124
let fcpxmlTime = utility.fcpxmlTime(fromCMTime: cmTime)
125125
XCTAssertEqual(fcpxmlTime, "1500/30000s")
126126
}
127127

128-
func testConformTimeToFrameDuration() async throws {
128+
func testConformTimeToFrameDuration() throws {
129129
let utility = FCPXMLUtility()
130130

131131
let time = CMTime(value: 1501, timescale: 30000) // 0.050033... seconds
@@ -137,7 +137,7 @@ final class PipelineNeoTests: XCTestCase {
137137
XCTAssertEqual(conformed.seconds, 0.041666666666666664, accuracy: 0.0001)
138138
}
139139

140-
func testTimecodeKitIntegration() async throws {
140+
func testTimecodeKitIntegration() throws {
141141
let utility = FCPXMLUtility()
142142

143143
// Test CMTime to Timecode conversion
@@ -510,7 +510,7 @@ final class PipelineNeoTests: XCTestCase {
510510
group.addTask {
511511
let utility = FCPXMLUtility()
512512
let frameDuration = CMTime(value: 1, timescale: 24)
513-
_ = await utility.CMTimeFrom(
513+
_ = utility.CMTimeFrom(
514514
timecodeHours: 1,
515515
timecodeMinutes: 30,
516516
timecodeSeconds: 15,

0 commit comments

Comments
 (0)