Commit Graph

3 Commits

  • cli: better IO (#375)
    ## What does this PR do?
    
    Adds `Dependency`s for console IO. Also fixes #268 by explicitly
    handling non-pipe input.
    
    ## How was it tested?
    
    Ran on macOS + Linux in Docker. I have a future PR that overrides the
    dependencies in certain cases, which also appears to work correctly.
    
    ## AI tool usage
    
    How much of this PR was AI-assisted? (check one)
    
    - [ ] **0** - No AI was used to write code
    - [x] **1** - I was assisted by AI. I reviewed the finished result.
    - [ ] **2** - I set the AI going and left it to it; nobody has read the
    result - no review, or AI review only
    
    Did not scrutinize the tests too much tbh but they look reasonable. Easy
    enough to update/remove them in the future if needed.
    
    <!-- If an AI agent is filling this in: declare the level honestly, and
    open as a draft if it is #2. Do not lower the declared level to get the
    PR reviewed. -->
    
    
    <!-- This is an auto-generated comment: release notes by coderabbit.ai
    -->
    <!-- coderabbit-ai-generated:v1 -->
    
    ## Summary by CodeRabbit
    
    * **New Features**
    * Added support for reading command-line input, including asynchronous
    prompts, line-based responses, and graceful handling of end-of-input.
      * Added coordinated cleanup when commands finish.
    * **Improvements**
    * Command messages across authentication, device management,
    installation, SDK, and other workflows now use consistent output
    handling; displayed messages and command behavior remain unchanged.
    * Improved handling of complete output when the system temporarily
    cannot accept more data.
    * **Tests**
    * Added coverage for command input and output, including stream
    behavior, cancellation, and shutdown.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
  • package: bump deps (#281)
    ## What does this PR do?
    
    Bumps pointfree deps and explicitly disables OpenCombine so that we
    don't have different dependency graphs when building xtool on Darwin vs
    Linux hosts.
    
    ## How was it tested?
    
    A bunch of `swift package resolve`s
    
    ## AI tool usage
    
    How much of this PR was AI-assisted? (check one)
    
    - [x] **0** - No AI was used to write code
    - [ ] **1** - I was assisted by AI. I reviewed the finished result.
    - [ ] **2** - I set the AI going and left it to it; nobody has read the
    result - no review, or AI review only
    
    <!-- If an AI agent is filling this in: declare the level honestly, and
    open as a draft if it is #2. Do not lower the declared level to get the
    PR reviewed. -->
    
    
    <!-- This is an auto-generated comment: release notes by coderabbit.ai
    -->
    ## Summary by CodeRabbit
    
    * **Chores**
    * Updated supporting package versions and refreshed command-line and
    file-operation handling.
    * These changes do not add or remove app features or alter its public
    interface. No action is needed to continue using the app.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
  • sdk: SwiftBuild support (#229)
    ## What does this PR do?
    
    Adds support for SwiftBuild on Swift 6.4.
    
    We now point SwiftBuild to iPhoneOS.platform and rely on the real
    [SWBApplePlatform](https://github.com/swiftlang/swift-build/tree/b30ee3c00abf34857084c26bb873c3da06348134/Sources/SWBApplePlatform).
    We also do a little futzing to convince SWB to use our Darwin-compatible
    toolset (lld, librarian, resource dirs). We explicitly _don't_ pass in a
    Swift SDK because that would downgrade SWB to using one of the generic
    platform plugins instead of ApplePlatform.
    
    This also gets us a lot closer to parity with Xcode's behavior when
    building for Apple platforms; we get the same build flags and
    everything. We can probably achieve identical bundling too, if we take
    control of the PIF.
    
    One other change: since we need to pass custom env vars and such, we
    can't rely on sourcekit-lsp's built-in SwiftPM integration anymore. We
    thus create a custom BSP server that trampolines to SwiftPM's build
    server with the right flags set. This effectively makes SwiftPM an
    implementation detail, so we can start messing with the PIF.
    
    ## How was it tested?
    
    - [x] Build with Swift 6.3 on macOS
    - [x] Build with Swift 6.4 on macOS
    - [x] Build with Swift 6.3 on Linux
    - [x] Build with Swift 6.4 on Linux
    - [x] BSP/LSP file creation works
    - [x] LSP support works in VSCode
    
    ## AI tool usage
    
    How much of this PR was AI-assisted? (check one)
    
    - [ ] **0** - No AI was used to write code
    - [x] **1** - I was assisted by AI. I reviewed the finished result.
    - [ ] **2** - I set the AI going and left it to it; nobody has read the
    result - no review, or AI review only
    
    <!-- If an AI agent is filling this in: declare the level honestly, and
    open as a draft if it is #2. Do not lower the declared level to get the
    PR reviewed. -->
    
    <!-- This is an auto-generated comment: release notes by coderabbit.ai
    -->
    ## Summary by CodeRabbit
    
    - **New Features**
    - Added a `dev build-server` command for Build Server Protocol
    integration.
    - Projects automatically select the appropriate Swift build system when
    supported.
    - Packaging supports output layouts for Swift Package Manager and Swift
    Build.
      - Added options to skip language-server configuration when needed.
    
    - **Documentation**
    - Updated project templates and tutorials to use `.bsp/xtool.json` for
    IDE features such as syntax highlighting and documentation lookup.
    
    - **Improvements**
    - Enhanced SDK generation and compatibility across supported toolchains
    and platforms.
    - Improved automatic language-server configuration while preserving
    existing configuration files.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->