Giter Site home page Giter Site logo

appcastautomation's Introduction

TWO VERSIONS

Master branch is for OS versions before Snow Leopard
SnowLeopard branch is for Snow Leopard. All future revisions will be done on this branch.

INTRO

This script is expanding on Marc Liyanage’s excellent post Sparkle Appcast Automation in Xcode.
Very cool!

In his article, Marc uses a bash script to automate the process of signing your Sparkle enabled app and explains how to put your private and public keys in your keychain. I wrote a Ruby version that extends this functionality to include a few more options…

IMPORTANT: You will need to read Marc's article first before moving forward.

Here is a quick list of added features:

1. config.yml file for configuration information
2. build_now option - when set to 'NO' will not run during Release style build
3. Creates project release folder if it does not exist
4. Creates sub-folders based on version number
5. Creates css file
6. Creates xml file containing the '<item>' info generated by the script
7. Creates an html template file
8. Copies the newly created archive to the project folder

The project release folder is not the 'Release' folder Xcode creates. This is a folder that contains this and future Sparkle release builds. See 'appcast_basefolder' below.

INSTRUCTIONS:

Config YAML file
A YAML file is easily editable and is a good place for us to set up our
configuration information. It also enables us not to have to change the
script once we have it the way we want it.

Create a 'config.yml' file and place it where you wish. Set the following variable to the location of the config.yml file.

YAML_FOLDER_PATH = "/path/to/config.yml"

---
build_now:              'YES'  
download_base_url:      'http://www.your_website.com/app_folder/'  
appcast_basefolder:     '/users/user_name/desktop/app_name/'  
appcast_xml_name:       'appcast.xml'  
keychain_privkey_name:  'Sparkle Private Key'  
css_file_name:          'rnotes.css'  

IMPORTANT: If you change the variable names here you also need to change them in the script.

VARIABLE EXPLANATION

build_now: 
  Will only include this script in the build process if this is set to 'YES'
  The script automatically checks that the build style is 'Release'

download_base_url:      
  Your website url where you will place your updated project

appcast_basefolder:   
  The base file is created for you and a project folder inside that with
  the name of your project and version number. 
	eg  - ProjectName 
  		  - ProjectName 1.0
			    - appcast.xml (contains the '<item>' info)
			    - 1.0.html
			    - rnotes.css
  			  - ProjectName 1.0.zip
  		  - ProjectName 1.1
  			  - appcast.xml (contains the '<item>' info)
  			  - 1.1.html
  			  - rnotes.css
  			  - ProjectName 1.1.zip


The following files are created for you if they do not already exist.
    appcast_xml_name:
    css_file_name:
    version_number.html

Your archived project file is also copied to the project folder
    AppName 1.1.zip

appcast_xml_name:
  This file holds the results of the script. What is between the '' tags that
  you will copy into your complete appcast.xml file.
  Name to your liking.

keychain_privkey_name:
  You should understand this after reading Marc's article.
  Name to your liking.

css_file_name:
This name will be used to create your css file and the link in the xml file. 
If you change this after these are created make sure also change the xml file 
or if you created the css file first use that name here.

  The css is at the bottom of the script and is in 'flat' form. One liners.
  When written to file it is expanded to standard format for easy editing.

Once your config.yml file is created and placed in your projects 'Release' folder,
add this script as a 'Run Script' build phase. Set the bash to /usr/bin/ruby
and you are finished!

If you have questions, ideas or bug reports please post them here

CHANGE LOG

2010-04-17 Changes made by Stefan Klieme - Thanks Stefan!
Using ditto instead of zip
Added @build_number

appcastautomation's People

Contributors

craigwilliams avatar lid avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.