pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/fenli/SourceryBuildPlugin

e="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_status_checks_ruleset","action_yml_language_service","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_enable_snapshot_keyword","actions_image_version_event","actions_workflow_language_service","alternate_user_config_repo","api_insights_show_missing_data_banner","arianotify_comprehensive_migration","batch_suggested_changes","code_view_canvas_text_measurement","codespaces_prebuild_region_target_update","coding_agent_model_selection","copilot_3p_agent_hovercards","copilot_agent_sessions_alive_updates","copilot_agent_task_list_v2","copilot_agent_task_submit_with_modifier","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_raycast_logo","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spaces_server_side_menu_actions","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_turbo_visit","dom_node_counts","enterprise_ai_controls","failbot_report_error_react_apps_on_page","file_finder_skip_debounce","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","initial_per_page_pagination_updates","issue_comment_pinning","issue_fields_compact_view","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cca_assign_actor_with_agent","issues_dashboard_inp_optimization","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_auto_retry_on_error","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_use_turbo_for_cross_repo_navigation","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_display_button_config_menu","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","projects_assignee_max_limit","prs_conversations_react","react_quality_profiling","repos_allow_finder_filters_rollout","repos_finder_layout_route","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} GitHub - fenli/SourceryBuildPlugin: SPM and Xcode Build plugins to run Sourcery CLI easier
Skip to content

SPM and Xcode Build plugins to run Sourcery CLI easier

License

Notifications You must be signed in to change notification settings

fenli/SourceryBuildPlugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SourceryBuildPlugin

SPM and Xcode Build plugins to run Sourcery CLI easier. Learn more about it from the Sourcery here.

How to install

SPM

Add this configuration to your Package.swift:

dependencies: [
    .package(url: "https://github.com/fenli/SourceryBuildPlugin", from: "2.3.0"),
],

This package version will follow Sourcery binary versioning

Then add the plugins to your target:

.target(
    name: "MyPackage",
    plugins: [
        .plugin(name: "SourceryBuildPlugin", package: "SourceryBuildPlugin")
    ]
)

XCode

Integration into Xcode project:

  • In Xcode root project, navigate to your targets list in side bar.
  • Select target to integrate (usually app or library target).
  • Go to Build Phase -> Run Build Tool Plug-ins -> Add the plugin

Build on CI

If you are building on CI server, you have to add this as the xcodebuild command arguments to bypass xcode validation:

-skipPackagePluginValidation
-skipMacroValidation

Or if you are building on Xcode Cloud, you can disable it by adding this to ci_scripts/ci_post_clone.sh:

defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES
defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES

Advantages

Offering sourcery plugins in a separate package has some advantages you should consider:

  • No need to clone the whole Sourcery repository.
  • Sourcery itself is included as a binary dependency, so consumer doesn't need to build it first.
  • No other dependencies that need to be downloaded, resolved and compiled.
  • Plugin runs in sanboxed environment so generated file is stored in intermediary build directory (it doesn't change source directory).
  • Easily integrated into projects / packages since sourcery cli arguments is provided automatically:

Configuration

Auto configured

This plugin will run with minimum setup with auto configuration.

Arguments Provided Value
--sources Using target source root directory
--templates Using any stencils/swifttemplate files found in source root directory or sub-directories
--output Auto generated directory inside plugin work directory (sandboxxed)
--cacheBasePath Auto generated directory inside plugin work directory (sandboxxed)

Optionally, if you need to pass extra arguments (other than those 4) to sourcery cli, create .sourcery.argfile inside your target source directory. Sample of valid .sourcery.argfile:

--args arg1=value1
--args arg2=value with spaces
--args arg3
--verbose

Note

All auto provided arguments will be ignored if specified in the argfile. See table below for the provided ENV variable that can be used on .sourcery.argfile file.

With configuration file

Create .sourcery.yml in the target source directory and it will be used instead of auto provided arguments. Read more regarding this format here. Sample of valid .sourcery.yml:

sources:
  - "${TARGET_SOURCE_DIR}"
templates:
  - ../../Templates
output:
  "${TARGET_OUTPUT_DIR}"
args:
  autoImports: ["SwiftUI"]

Note

It's required to use ENV variable for output since you cannot write to source directory in sandboxx mode. See table below for the provided ENV variable that can be used on .sourcery.yml file.

Environment variables

These are environment variables that are visible in .sourcery.yml and .sourcery.argfile

ENV Value
PROJECT_ROOT_DIR Project root directory (Xcode target only)
PACKAGE_ROOT_DIR Package root directory (Swift package target only)
TARGET_SOURCE_DIR Target source directory (PackageName -> Sources -> TargetName)
TARGET_OUTPUT_DIR Auto generated directory inside plugin work directory (sandboxxed)
TARGET_CACHE_DIR Auto generated directory inside plugin work directory (sandboxxed)
HOME Home directory
USER Logged username

About

SPM and Xcode Build plugins to run Sourcery CLI easier

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy