From a752fbbdada61f326f068aad2c974b1ea9feb0f1 Mon Sep 17 00:00:00 2001 From: Mustafa Ibrahim Date: Thu, 6 Feb 2014 11:50:49 +0200 Subject: [PATCH] Initial commit --- .gitignore | 23 +++++++ CHANGELOG.md | 5 ++ Classes/ios/.gitkeep | 0 Classes/osx/.gitkeep | 0 LICENSE | 19 ++++++ MIBadgeButton.podspec | 37 +++++++++++ Project/Podfile | 7 ++ README.md | 26 ++++++++ Rakefile | 148 ++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 265 insertions(+) create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 Classes/ios/.gitkeep create mode 100644 Classes/osx/.gitkeep create mode 100644 LICENSE create mode 100644 MIBadgeButton.podspec create mode 100644 Project/Podfile create mode 100644 README.md create mode 100644 Rakefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0ce7de --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# OS X +.DS_Store + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +profile +*.moved-aside +DerivedData +*.hmap +*.ipa + +# CocoaPods +Pods diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9ac40e5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# MIBadgeButton CHANGELOG + +## 0.1.0 + +Initial release. diff --git a/Classes/ios/.gitkeep b/Classes/ios/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Classes/osx/.gitkeep b/Classes/osx/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..eebae43 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Mustafa Ibrahim + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/MIBadgeButton.podspec b/MIBadgeButton.podspec new file mode 100644 index 0000000..7987329 --- /dev/null +++ b/MIBadgeButton.podspec @@ -0,0 +1,37 @@ +# +# Be sure to run `pod spec lint NAME.podspec' to ensure this is a +# valid spec and remove all comments before submitting the spec. +# +# To learn more about the attributes see http://guides.cocoapods.org/syntax/podspec.html +# +Pod::Spec.new do |s| + s.name = "MIBadgeButton" + s.version = "0.1.0" + s.summary = "A short description of MIBadgeButton." + s.description = <<-DESC + An optional longer description of MIBadgeButton + + * Markdown format. + * Don't worry about the indent, we strip it! + DESC + s.homepage = "http://EXAMPLE/NAME" + s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" + s.license = 'MIT' + s.author = { "Mustafa Ibrahim" => "mibrahim@youxel.com" } + s.source = { :git => "http://EXAMPLE/NAME.git", :tag => s.version.to_s } + s.social_media_url = 'https://twitter.com/NAME' + + # s.platform = :ios, '5.0' + # s.ios.deployment_target = '5.0' + # s.osx.deployment_target = '10.7' + s.requires_arc = true + + s.source_files = 'Classes' + s.resources = 'Assets' + + s.ios.exclude_files = 'Classes/osx' + s.osx.exclude_files = 'Classes/ios' + # s.public_header_files = 'Classes/**/*.h' + # s.frameworks = 'SomeFramework', 'AnotherFramework' + # s.dependency 'JSONKit', '~> 1.4' +end diff --git a/Project/Podfile b/Project/Podfile new file mode 100644 index 0000000..a56bcac --- /dev/null +++ b/Project/Podfile @@ -0,0 +1,7 @@ +pod "MIBadgeButton", :path => "../MIBadgeButton.podspec" + +target "Demo" do +end + +target "DemoTests" do +end diff --git a/README.md b/README.md new file mode 100644 index 0000000..b435122 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# MIBadgeButton + +[![Version](http://cocoapod-badges.herokuapp.com/v/MIBadgeButton/badge.png)](http://cocoadocs.org/docsets/MIBadgeButton) +[![Platform](http://cocoapod-badges.herokuapp.com/p/MIBadgeButton/badge.png)](http://cocoadocs.org/docsets/MIBadgeButton) + +## Usage + +To run the example project; clone the repo, and run `pod install` from the Project directory first. + +## Requirements + +## Installation + +MIBadgeButton is available through [CocoaPods](http://cocoapods.org), to install +it simply add the following line to your Podfile: + + pod "MIBadgeButton" + +## Author + +Mustafa Ibrahim, mibrahim@youxel.com + +## License + +MIBadgeButton is available under the MIT license. See the LICENSE file for more info. + diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..2a2fb5f --- /dev/null +++ b/Rakefile @@ -0,0 +1,148 @@ +desc "Runs the specs [EMPTY]" +task :spec do + # Provide your own implementation +end + +task :version do + git_remotes = `git remote`.strip.split("\n") + + if git_remotes.count > 0 + puts "-- fetching version number from github" + sh 'git fetch' + + remote_version = remote_spec_version + end + + if remote_version.nil? + puts "There is no current released version. You're about to release a new Pod." + version = "0.0.1" + else + puts "The current released version of your pod is " + remote_spec_version.to_s() + version = suggested_version_number + end + + puts "Enter the version you want to release (" + version + ") " + new_version_number = $stdin.gets.strip + if new_version_number == "" + new_version_number = version + end + + replace_version_number(new_version_number) +end + +desc "Release a new version of the Pod" +task :release do + + puts "* Running version" + sh "rake version" + + unless ENV['SKIP_CHECKS'] + if `git symbolic-ref HEAD 2>/dev/null`.strip.split('/').last != 'master' + $stderr.puts "[!] You need to be on the `master' branch in order to be able to do a release." + exit 1 + end + + if `git tag`.strip.split("\n").include?(spec_version) + $stderr.puts "[!] A tag for version `#{spec_version}' already exists. Change the version in the podspec" + exit 1 + end + + puts "You are about to release `#{spec_version}`, is that correct? [y/n]" + exit if $stdin.gets.strip.downcase != 'y' + end + + puts "* Running specs" + sh "rake spec" + + puts "* Linting the podspec" + sh "pod lib lint" + + # Then release + sh "git commit #{podspec_path} CHANGELOG.md -m 'Release #{spec_version}'" + sh "git tag -a #{spec_version} -m 'Release #{spec_version}'" + sh "git push origin master" + sh "git push origin --tags" + sh "pod push master #{podspec_path}" +end + +# @return [Pod::Version] The version as reported by the Podspec. +# +def spec_version + require 'cocoapods' + spec = Pod::Specification.from_file(podspec_path) + spec.version +end + +# @return [Pod::Version] The version as reported by the Podspec from remote. +# +def remote_spec_version + require 'cocoapods-core' + + if spec_file_exist_on_remote? + remote_spec = eval(`git show origin/master:#{podspec_path}`) + remote_spec.version + else + nil + end +end + +# @return [Bool] If the remote repository has a copy of the podpesc file or not. +# +def spec_file_exist_on_remote? + test_condition = `if git rev-parse --verify --quiet origin/master:#{podspec_path} >/dev/null; + then + echo 'true' + else + echo 'false' + fi` + + 'true' == test_condition.strip +end + +# @return [String] The relative path of the Podspec. +# +def podspec_path + podspecs = Dir.glob('*.podspec') + if podspecs.count == 1 + podspecs.first + else + raise "Could not select a podspec" + end +end + +# @return [String] The suggested version number based on the local and remote version numbers. +# +def suggested_version_number + if spec_version != remote_spec_version + spec_version.to_s() + else + next_version(spec_version).to_s() + end +end + +# @param [Pod::Version] version +# the version for which you need the next version +# +# @note It is computed by bumping the last component of the versino string by 1. +# +# @return [Pod::Version] The version that comes next after the version supplied. +# +def next_version(version) + version_components = version.to_s().split("."); + last = (version_components.last.to_i() + 1).to_s + version_components[-1] = last + Pod::Version.new(version_components.join(".")) +end + +# @param [String] new_version_number +# the new version number +# +# @note This methods replaces the version number in the podspec file with a new version number. +# +# @return void +# +def replace_version_number(new_version_number) + text = File.read(podspec_path) + text.gsub!(/(s.version( )*= ")#{spec_version}(")/, "\\1#{new_version_number}\\3") + File.open(podspec_path, "w") { |file| file.puts text } +end \ No newline at end of file