feat: init ios plugin (#2)
This commit is contained in:
parent
d4a16eba70
commit
ee58f96126
43
plugins/fastlane-plugin-ios_cd/.circleci/config.yml
Normal file
43
plugins/fastlane-plugin-ios_cd/.circleci/config.yml
Normal file
@ -0,0 +1,43 @@
|
||||
# Ruby CircleCI 2.0 configuration file
|
||||
#
|
||||
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
||||
#
|
||||
version: 2
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
# specify the version you desire here
|
||||
- image: circleci/ruby:2.5
|
||||
|
||||
working_directory: ~/repo
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
|
||||
# Download and cache dependencies
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v1-dependencies-{{ checksum "Gemfile" }}
|
||||
# fallback to using the latest cache if no exact match is found
|
||||
- v1-dependencies-
|
||||
|
||||
- run:
|
||||
name: install dependencies
|
||||
command: bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle
|
||||
|
||||
- save_cache:
|
||||
paths:
|
||||
- ./vendor
|
||||
key: v1-dependencies-{{ checksum "Gemfile" }}
|
||||
|
||||
# run tests!
|
||||
- run:
|
||||
name: run tests
|
||||
command: bundle exec rake
|
||||
|
||||
# collect reports
|
||||
- store_test_results:
|
||||
path: ~/repo/test-results
|
||||
- store_artifacts:
|
||||
path: ~/repo/test-results
|
||||
destination: test-results
|
29
plugins/fastlane-plugin-ios_cd/.github/workflows/test.yml
vendored
Normal file
29
plugins/fastlane-plugin-ios_cd/.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
name: Test
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/cache@v1
|
||||
with:
|
||||
path: vendor/bundle
|
||||
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gem-
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.5
|
||||
- name: Install dependencies
|
||||
run: bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle
|
||||
- name: Run tests
|
||||
run: bundle exec rake
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: test-results
|
||||
path: test-results
|
12
plugins/fastlane-plugin-ios_cd/.gitignore
vendored
Normal file
12
plugins/fastlane-plugin-ios_cd/.gitignore
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
*.gem
|
||||
Gemfile.lock
|
||||
|
||||
## Documentation cache and generated files:
|
||||
/.yardoc/
|
||||
/_yardoc/
|
||||
/doc/
|
||||
/rdoc/
|
||||
fastlane/README.md
|
||||
fastlane/report.xml
|
||||
coverage
|
||||
test-results
|
5
plugins/fastlane-plugin-ios_cd/.rspec
Normal file
5
plugins/fastlane-plugin-ios_cd/.rspec
Normal file
@ -0,0 +1,5 @@
|
||||
--require spec_helper
|
||||
--color
|
||||
--format d
|
||||
--format RspecJunitFormatter
|
||||
--out test-results/rspec/rspec.xml
|
188
plugins/fastlane-plugin-ios_cd/.rubocop.yml
Normal file
188
plugins/fastlane-plugin-ios_cd/.rubocop.yml
Normal file
@ -0,0 +1,188 @@
|
||||
---
|
||||
require:
|
||||
- rubocop/require_tools
|
||||
- rubocop-performance
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.6
|
||||
NewCops: enable
|
||||
Include:
|
||||
- "**/*.rb"
|
||||
- "**/*file"
|
||||
- "**/*.gemspec"
|
||||
- "*/lib/assets/*Template"
|
||||
- "*/lib/assets/*TemplateAndroid"
|
||||
Exclude:
|
||||
- "**/lib/assets/custom_action_template.rb"
|
||||
- "./vendor/**/*"
|
||||
- "**/lib/assets/DefaultFastfileTemplate"
|
||||
- "**/lib/assets/MatchfileTemplate"
|
||||
- "**/spec/fixtures/broken_files/broken_file.rb"
|
||||
- "**/*.provisionprofile"
|
||||
Lint/ErbNewArguments:
|
||||
Enabled: false
|
||||
Style/SlicingWithRange:
|
||||
Enabled: false
|
||||
Style/MultipleComparison:
|
||||
Enabled: false
|
||||
Style/PercentLiteralDelimiters:
|
||||
Enabled: false
|
||||
Style/ClassCheck:
|
||||
EnforcedStyle: kind_of?
|
||||
Style/FrozenStringLiteralComment:
|
||||
Enabled: false
|
||||
Style/SafeNavigation:
|
||||
Enabled: false
|
||||
Performance/RegexpMatch:
|
||||
Enabled: false
|
||||
Performance/StringReplacement:
|
||||
Enabled: false
|
||||
Style/NumericPredicate:
|
||||
Enabled: false
|
||||
Metrics/BlockLength:
|
||||
Enabled: false
|
||||
Metrics/ModuleLength:
|
||||
Enabled: false
|
||||
Naming/VariableNumber:
|
||||
Enabled: false
|
||||
Style/MissingRespondToMissing:
|
||||
Enabled: false
|
||||
Style/MultilineBlockChain:
|
||||
Enabled: false
|
||||
Style/NumericLiteralPrefix:
|
||||
Enabled: false
|
||||
Style/TernaryParentheses:
|
||||
Enabled: false
|
||||
Style/EmptyMethod:
|
||||
Enabled: false
|
||||
Lint/UselessAssignment:
|
||||
Exclude:
|
||||
- "**/spec/**/*"
|
||||
Require/MissingRequireStatement:
|
||||
Exclude:
|
||||
- "**/spec/**/*.rb"
|
||||
- "**/spec_helper.rb"
|
||||
- spaceship/lib/spaceship/babosa_fix.rb
|
||||
- fastlane_core/lib/fastlane_core/ui/disable_colors.rb
|
||||
- "**/Fastfile"
|
||||
- "**/*.gemspec"
|
||||
- rakelib/**/*
|
||||
- "**/*.rake"
|
||||
- "**/Rakefile"
|
||||
- fastlane/**/*
|
||||
- supply/**/*
|
||||
Layout/FirstHashElementIndentation:
|
||||
Enabled: false
|
||||
Layout/HashAlignment:
|
||||
Enabled: false
|
||||
Layout/DotPosition:
|
||||
Enabled: false
|
||||
Style/DoubleNegation:
|
||||
Enabled: false
|
||||
Style/SymbolArray:
|
||||
Enabled: false
|
||||
Layout/HeredocIndentation:
|
||||
Enabled: false
|
||||
Style/MixinGrouping:
|
||||
Exclude:
|
||||
- "**/spec/**/*"
|
||||
Lint/SuppressedException:
|
||||
Enabled: false
|
||||
Lint/UnusedBlockArgument:
|
||||
Enabled: false
|
||||
Lint/AmbiguousBlockAssociation:
|
||||
Enabled: false
|
||||
Style/GlobalVars:
|
||||
Enabled: false
|
||||
Style/ClassAndModuleChildren:
|
||||
Enabled: false
|
||||
Style/SpecialGlobalVars:
|
||||
Enabled: false
|
||||
Metrics/AbcSize:
|
||||
Enabled: false
|
||||
Metrics/MethodLength:
|
||||
Enabled: false
|
||||
Metrics/CyclomaticComplexity:
|
||||
Enabled: false
|
||||
Style/WordArray:
|
||||
MinSize: 19
|
||||
Style/SignalException:
|
||||
Enabled: false
|
||||
Style/RedundantReturn:
|
||||
Enabled: false
|
||||
Style/IfUnlessModifier:
|
||||
Enabled: false
|
||||
Style/AndOr:
|
||||
Enabled: true
|
||||
EnforcedStyle: conditionals
|
||||
Metrics/ClassLength:
|
||||
Max: 320
|
||||
Layout/LineLength:
|
||||
Max: 370
|
||||
Metrics/ParameterLists:
|
||||
Max: 17
|
||||
Style/GuardClause:
|
||||
Enabled: false
|
||||
Style/StringLiterals:
|
||||
Enabled: false
|
||||
Style/ConditionalAssignment:
|
||||
Enabled: false
|
||||
Style/RedundantSelf:
|
||||
Enabled: false
|
||||
Lint/UnusedMethodArgument:
|
||||
Enabled: false
|
||||
Lint/ParenthesesAsGroupedExpression:
|
||||
Exclude:
|
||||
- "**/spec/**/*"
|
||||
Naming/PredicateName:
|
||||
Enabled: false
|
||||
Style/PerlBackrefs:
|
||||
Enabled: false
|
||||
Layout/SpaceAroundOperators:
|
||||
Exclude:
|
||||
- "**/spec/actions_specs/xcodebuild_spec.rb"
|
||||
Naming/FileName:
|
||||
Exclude:
|
||||
- "**/Dangerfile"
|
||||
- "**/Brewfile"
|
||||
- "**/Gemfile"
|
||||
- "**/Podfile"
|
||||
- "**/Rakefile"
|
||||
- "**/Fastfile"
|
||||
- "**/Deliverfile"
|
||||
- "**/Snapfile"
|
||||
- "**/Pluginfile"
|
||||
- "**/*.gemspec"
|
||||
Style/Documentation:
|
||||
Enabled: false
|
||||
Style/MutableConstant:
|
||||
Enabled: false
|
||||
Style/ZeroLengthPredicate:
|
||||
Enabled: false
|
||||
Style/IfInsideElse:
|
||||
Enabled: false
|
||||
Style/CollectionMethods:
|
||||
Enabled: false
|
||||
Style/MethodCallWithArgsParentheses:
|
||||
Enabled: true
|
||||
IgnoredMethods:
|
||||
- require
|
||||
- require_relative
|
||||
- fastlane_require
|
||||
- gem
|
||||
- program
|
||||
- command
|
||||
- raise
|
||||
- attr_accessor
|
||||
- attr_reader
|
||||
- desc
|
||||
- lane
|
||||
- private_lane
|
||||
- platform
|
||||
- to
|
||||
- not_to
|
||||
- describe
|
||||
- it
|
||||
- be
|
||||
- context
|
||||
- before
|
||||
- after
|
4
plugins/fastlane-plugin-ios_cd/.travis.yml
Normal file
4
plugins/fastlane-plugin-ios_cd/.travis.yml
Normal file
@ -0,0 +1,4 @@
|
||||
# os: osx # enable this if you need macOS support
|
||||
language: ruby
|
||||
rvm:
|
||||
- 2.2.4
|
6
plugins/fastlane-plugin-ios_cd/Gemfile
Normal file
6
plugins/fastlane-plugin-ios_cd/Gemfile
Normal file
@ -0,0 +1,6 @@
|
||||
source('https://rubygems.org')
|
||||
|
||||
gemspec
|
||||
|
||||
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
21
plugins/fastlane-plugin-ios_cd/LICENSE
Normal file
21
plugins/fastlane-plugin-ios_cd/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2023 Malo Léon <malo.leon@wyatt-studio.fr>
|
||||
|
||||
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.
|
52
plugins/fastlane-plugin-ios_cd/README.md
Normal file
52
plugins/fastlane-plugin-ios_cd/README.md
Normal file
@ -0,0 +1,52 @@
|
||||
# ios_cd plugin
|
||||
|
||||
[](https://rubygems.org/gems/fastlane-plugin-ios_cd)
|
||||
|
||||
## Getting Started
|
||||
|
||||
This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-ios_cd`, add it to your project by running:
|
||||
|
||||
```bash
|
||||
fastlane add_plugin ios_cd
|
||||
```
|
||||
|
||||
## About ios_cd
|
||||
|
||||
Testflight and AppStore deployment plugin for Fastlane, simplifying the build and deployment porcess to internal, external, and production channels, and promoting builds for testing.
|
||||
|
||||
**Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
|
||||
|
||||
## Example
|
||||
|
||||
Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
|
||||
|
||||
**Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
|
||||
|
||||
## Run tests for this plugin
|
||||
|
||||
To run both the tests, and code style validation, run
|
||||
|
||||
```
|
||||
rake
|
||||
```
|
||||
|
||||
To automatically fix many of the styling issues, use
|
||||
```
|
||||
rubocop -a
|
||||
```
|
||||
|
||||
## Issues and Feedback
|
||||
|
||||
For any other issues and feedback about this plugin, please submit it to this repository.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
|
||||
|
||||
## Using _fastlane_ Plugins
|
||||
|
||||
For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
|
||||
|
||||
## About _fastlane_
|
||||
|
||||
_fastlane_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
|
9
plugins/fastlane-plugin-ios_cd/Rakefile
Normal file
9
plugins/fastlane-plugin-ios_cd/Rakefile
Normal file
@ -0,0 +1,9 @@
|
||||
require 'bundler/gem_tasks'
|
||||
|
||||
require 'rspec/core/rake_task'
|
||||
RSpec::Core::RakeTask.new
|
||||
|
||||
require 'rubocop/rake_task'
|
||||
RuboCop::RakeTask.new(:rubocop)
|
||||
|
||||
task(default: [:spec, :rubocop])
|
@ -0,0 +1,36 @@
|
||||
lib = File.expand_path("lib", __dir__)
|
||||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
||||
require 'fastlane/plugin/ios_cd/version'
|
||||
|
||||
Gem::Specification.new do |spec|
|
||||
spec.name = 'fastlane-plugin-ios_cd'
|
||||
spec.version = Fastlane::IosCd::VERSION
|
||||
spec.author = 'Malo Léon'
|
||||
spec.email = 'malo.leon@wyatt-studio.fr'
|
||||
|
||||
spec.summary = 'Testflight and AppStore deployment plugin for Fastlane, simplifying the build and deployment porcess to internal, external, and production channels, and promoting builds for testing.'
|
||||
# spec.homepage = "https://github.com/<GITHUB_USERNAME>/fastlane-plugin-ios_cd"
|
||||
spec.license = "MIT"
|
||||
|
||||
spec.files = Dir["lib/**/*"] + %w(README.md LICENSE)
|
||||
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
||||
spec.require_paths = ['lib']
|
||||
|
||||
spec.required_ruby_version = '>= 2.6'
|
||||
|
||||
# Don't add a dependency to fastlane or fastlane_re
|
||||
# since this would cause a circular dependency
|
||||
|
||||
# spec.add_dependency 'your-dependency', '~> 1.0.0'
|
||||
|
||||
spec.add_development_dependency('bundler')
|
||||
spec.add_development_dependency('fastlane', '>= 2.212.2')
|
||||
spec.add_development_dependency('pry')
|
||||
spec.add_development_dependency('rake')
|
||||
spec.add_development_dependency('rspec')
|
||||
spec.add_development_dependency('rspec_junit_formatter')
|
||||
spec.add_development_dependency('rubocop', '1.12.1')
|
||||
spec.add_development_dependency('rubocop-performance')
|
||||
spec.add_development_dependency('rubocop-require_tools')
|
||||
spec.add_development_dependency('simplecov')
|
||||
end
|
3
plugins/fastlane-plugin-ios_cd/fastlane/Fastfile
Normal file
3
plugins/fastlane-plugin-ios_cd/fastlane/Fastfile
Normal file
@ -0,0 +1,3 @@
|
||||
lane :test do
|
||||
ios_cd
|
||||
end
|
1
plugins/fastlane-plugin-ios_cd/fastlane/Pluginfile
Normal file
1
plugins/fastlane-plugin-ios_cd/fastlane/Pluginfile
Normal file
@ -0,0 +1 @@
|
||||
# Autogenerated by fastlane
|
16
plugins/fastlane-plugin-ios_cd/lib/fastlane/plugin/ios_cd.rb
Normal file
16
plugins/fastlane-plugin-ios_cd/lib/fastlane/plugin/ios_cd.rb
Normal file
@ -0,0 +1,16 @@
|
||||
require 'fastlane/plugin/ios_cd/version'
|
||||
|
||||
module Fastlane
|
||||
module IosCd
|
||||
# Return all .rb files inside the "actions" and "helper" directory
|
||||
def self.all_classes
|
||||
Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# By default we want to import all available actions and helpers
|
||||
# A plugin can contain any number of actions and plugins
|
||||
Fastlane::IosCd.all_classes.each do |current|
|
||||
require current
|
||||
end
|
@ -0,0 +1,47 @@
|
||||
require 'fastlane/action'
|
||||
require_relative '../helper/ios_cd_helper'
|
||||
|
||||
module Fastlane
|
||||
module Actions
|
||||
class IosCdAction < Action
|
||||
def self.run(params)
|
||||
UI.message("The ios_cd plugin is working!")
|
||||
end
|
||||
|
||||
def self.description
|
||||
"Testflight and AppStore deployment plugin for Fastlane, simplifying the build and deployment porcess to internal, external, and production channels, and promoting builds for testing."
|
||||
end
|
||||
|
||||
def self.authors
|
||||
["Malo Léon"]
|
||||
end
|
||||
|
||||
def self.return_value
|
||||
# If your method provides a return value, you can describe here what it does
|
||||
end
|
||||
|
||||
def self.details
|
||||
# Optional:
|
||||
"The Fastlane Testflight / Appstore deloyment action streamlines the build and deployment to internal, external and production channels. Allow you to promote builds on testflight beta tests."
|
||||
end
|
||||
|
||||
def self.available_options
|
||||
[
|
||||
# FastlaneCore::ConfigItem.new(key: :your_option,
|
||||
# env_name: "IOS_CD_YOUR_OPTION",
|
||||
# description: "A description of your option",
|
||||
# optional: false,
|
||||
# type: String)
|
||||
]
|
||||
end
|
||||
|
||||
def self.is_supported?(platform)
|
||||
# Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
|
||||
# See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
|
||||
#
|
||||
# [:ios, :mac, :android].include?(platform)
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,16 @@
|
||||
require 'fastlane_core/ui/ui'
|
||||
|
||||
module Fastlane
|
||||
UI = FastlaneCore::UI unless Fastlane.const_defined?("UI")
|
||||
|
||||
module Helper
|
||||
class IosCdHelper
|
||||
# class methods that you define here become available in your action
|
||||
# as `Helper::IosCdHelper.your_method`
|
||||
#
|
||||
def self.show_message
|
||||
UI.message("Hello from the ios_cd plugin helper!")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
module Fastlane
|
||||
module IosCd
|
||||
VERSION = "0.1.0"
|
||||
end
|
||||
end
|
@ -0,0 +1,9 @@
|
||||
describe Fastlane::Actions::IosCdAction do
|
||||
describe '#run' do
|
||||
it 'prints a message' do
|
||||
expect(Fastlane::UI).to receive(:message).with("The ios_cd plugin is working!")
|
||||
|
||||
Fastlane::Actions::IosCdAction.run(nil)
|
||||
end
|
||||
end
|
||||
end
|
15
plugins/fastlane-plugin-ios_cd/spec/spec_helper.rb
Normal file
15
plugins/fastlane-plugin-ios_cd/spec/spec_helper.rb
Normal file
@ -0,0 +1,15 @@
|
||||
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
||||
|
||||
require 'simplecov'
|
||||
|
||||
# SimpleCov.minimum_coverage 95
|
||||
SimpleCov.start
|
||||
|
||||
# This module is only used to check the environment is currently a testing env
|
||||
module SpecHelper
|
||||
end
|
||||
|
||||
require 'fastlane' # to import the Action super class
|
||||
require 'fastlane/plugin/ios_cd' # import the actual plugin
|
||||
|
||||
Fastlane.load_actions # load other actions (in case your plugin calls other actions or shared values)
|
Loading…
x
Reference in New Issue
Block a user