Skip to content

Instantly share code, notes, and snippets.

Working on @fastlane 💪

Josh Holtz joshdholtz

Working on @fastlane 💪
Block or report user

Report or block joshdholtz

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
joshdholtz / Fastfile
Created May 29, 2019
Restart Fastlane::BuildWatcher and call
View Fastfile
# fastlane watch_and_dist
# or
# fastlane watch_and_dist username:"" team_name:"Team Name" app_identifier:"com.your_app" version:"1.1" build_number:"239" groups:"Group1,Group2"
lane :watch_and_dist do |options|
# Set ENVs for Spaceship and Pilot
ENV['FASTLANE_USER'] ||= options[:username]
# Prompt for needed app/build info
app_identifier = options[:app_identifier] || UI.input("App Identifier")
joshdholtz / Fastfile
Last active Dec 30, 2018
Execute fastlane for multiple schemes based off of ".env.scheme_" dotenv files
View Fastfile
# fastlane do_task
# fastlane do_task envs:"scheme_1,scheme_2"
lane :do_task do |options|
# Execute this lane for all schemes if no
# 'SCHEME` environment variable
if ENV['SCHEME'] == nil
envs = options[:envs].to_s.split(",")
execute_for_all_scheme_envs(envs) { do_task }
joshdholtz / Fastfile
Created Sep 20, 2017
Add/configure new entitlements to project
View Fastfile
def ios_add_push_entitlements(project_path)
entitlements_template_name = "app-template.entitlements"
entitlements_template_path = File.absolute_path entitlements_template_name
entitlements_template =
# Replacing entitlement template with debug info
debug_file_name = "app-debug.entitlements"
debug_file =, "w")
debug_file.puts entitlements_template
.gsub("REPLACE_ENVIRONMENT", "debug")
View keymap_josh.c
// Differences from defaults
// 1. Tab instead of backspace on left hand
// 2. Control was taken off of Z
// 3. LGui (CMD/Windows) on bottom left left hand
// 4. AlfShf replaced with Alt on left hand (for hots)
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
View Fastfile
# Get provisioning profile and write to xcconfig for use with gym
profile_uuid = sigh(
app_identifier: bundle_identifier,
adhoc: is_ad_hoc
profile_config_path = File.absolute_path(File.join(path, "./CustomConfig.xcconfig"))
profile_config_content = "PROVISIONING_PROFILE_SPECIFIER = #{profile_uuid}
PRODUCT_BUNDLE_IDENTIFIER = #{bundle_identifier}
joshdholtz / .env
Last active Nov 6, 2019
Using Dotenv and environment variables with fastlane
View .env
STUFF = this is some stuff
joshdholtz / .env
Last active Oct 10, 2019
Integrate fastlane into your Ionic/Cordova build process
View .env
FASTLANE_TEAM_ID = <your team id>
FASTLANE_USER = <your user email>
PRODUCE_APP_IDENTIFIER = com.fastlanescreencast.FastlaneScreencast
CERT_APP_IDENTIFIER = com.fastlanescreencast.FastlaneScreencast
SIGH_APP_IDENTIFIER = com.fastlanescreencast.FastlaneScreencast
ANDROID_KEYSTORE_KEYSTORE_NAME = FastlaneScreencast.keystore
ANDROID_KEYSTORE_ALIAS_NAME = fastlanescreencast

Keybase proof

I hereby claim:

  • I am joshdholtz on github.
  • I am joshdholtz ( on keybase.
  • I have a public key ASDSc6Oy31AQQMq1Fvzx1MJZhYbTN_2WRGDLZ9M5VHXFnwo

To claim this, I am signing this object:

joshdholtz / homebrew.mxcl.jenkins.plist
Created Oct 12, 2016
jenkins launch daemon configuration
View homebrew.mxcl.jenkins.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "">
<plist version="1.0">
joshdholtz / HistoricalObservableExtension.swift
Last active Oct 5, 2016
RxSwift - Create historical observable to see how the data changed
View HistoricalObservableExtension.swift
extension Observable {
func asHistoricalObservable() -> Observable<(previous: Element, next: Element)> {
return makeHistoricalObservable(observable: self)
extension Variable {
func asHistoricalObservable() -> Observable<(previous: Element, next: Element)> {
return makeHistoricalObservable(observable: self.asObservable())
You can’t perform that action at this time.