slowlane 0.0.1.alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4da5cf0bb5f1067cab8ebc8ef1bb464409da21f2
4
+ data.tar.gz: bbd56b8f4170cba7a4ae99b091a77b411b17b6e7
5
+ SHA512:
6
+ metadata.gz: e3b6ecdfa0c0a8b8ad0c8e8ef6989fa57af9caf53e526791abbc8149a538134f9b5b755596dc3d639387bbe1489ed89ac62954972a1843a7a68b60f7c0f60994
7
+ data.tar.gz: 2cbfd8dff057a46dadc63c40cf9b34f39fc3da39179ac3a42af23631ccee341c2f6a22a61c75a9a5d36402af953deaeb433a7abcfcdea1690951a15d7ce24b3a
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ trial/
2
+ *.env
3
+ .ruby-*
4
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # Slowlane
2
+ ## Description
3
+ > The philosophy is never to be clever but the user in control and ask him to clarify rather than making a clever choice.
4
+
5
+ it's like [fastlane tools](https://fastlane.tools) but without the magic.
6
+
7
+ ## Why ?
8
+
9
+ Fastlane is great but it makes a lot of assumptions:
10
+ - hey let's sync all your provisioning profiles
11
+ - when you add a device, let's add it to all provisioning profiles by default
12
+ - let's use a fastfile
13
+ - let's store your user:password in your keychain
14
+ - ....
15
+
16
+ Don't get us wrong, we think fastlane is **great** , but we are one of those who don't like suprises.
17
+
18
+ We leverage 'spaceship' library and will continue to work on that to have a shared
19
+
20
+ ## Status
21
+ Real alpha , as we are still exploring the spaceship api
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require 'bundler/setup'
4
+ Bundler::GemHelper.install_tasks
5
+
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require "thor"
5
+ require_relative '../lib/slowlane/itunes/app.rb'
6
+ require_relative '../lib/slowlane/itunes/team.rb'
7
+
8
+ class SlowlaneItunes < Thor
9
+
10
+ class_option :username , :default => '<username>' , :required => true, :desc => 'username [SLOWLANE_USERNAME]'
11
+ class_option :password , :default => '<password>' , :required => true, :desc => 'password [SLOWLANE_PASSWORD]'
12
+ class_option :team , :default => '<team>' , :required => false, :desc => 'team [SLOWLANE_TEAM]'
13
+
14
+ desc "app SUBCOMMAND ...ARGS", "manage apps"
15
+ subcommand "app", Slowlane::Itunes::App
16
+
17
+ desc "team SUBCOMMAND ...ARGS", "manage teams"
18
+ subcommand "team", Slowlane::Itunes::Team
19
+
20
+ end
21
+
22
+ SlowlaneItunes.start(ARGV)
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require "thor"
5
+ require_relative '../lib/slowlane/portal/team.rb'
6
+ require_relative '../lib/slowlane/portal/app.rb'
7
+ require_relative '../lib/slowlane/portal/profile.rb'
8
+ require_relative '../lib/slowlane/portal/device.rb'
9
+
10
+ class SlowlanePortal < Thor
11
+
12
+ class_option :username , :default => '<username>' , :required => true, :desc => 'username [SLOWLANE_USERNAME]'
13
+ class_option :password , :default => '<password>' , :required => true, :desc => 'password [SLOWLANE_PASSWORD]'
14
+ class_option :team , :default => '<team>' , :required => false, :desc => 'team [SLOWLANE_TEAM]'
15
+
16
+ desc "profile SUBCOMMAND ...ARGS", "manage provisioning profiles"
17
+ option :filter ,:desc => 'pattern to filter'
18
+ subcommand "profile", Slowlane::Portal::Profile
19
+
20
+ desc "device SUBCOMMAND ...ARGS", "manage devices"
21
+ option :filter ,:desc => 'pattern to filter'
22
+ subcommand "device", Slowlane::Portal::Device
23
+
24
+ desc "app SUBCOMMAND ...ARGS", "manage apps"
25
+ option :filter ,:desc => 'pattern to filter'
26
+ subcommand "app", Slowlane::Portal::App
27
+
28
+ desc "team SUBCOMMAND ...ARGS", "manage teams"
29
+ subcommand "team", Slowlane::Portal::Team
30
+ end
31
+
32
+ SlowlanePortal.start(ARGV)
@@ -0,0 +1,33 @@
1
+ require_relative './util.rb'
2
+ require "spaceship"
3
+
4
+ module Slowlane
5
+ module Itunes
6
+ class App < Thor
7
+
8
+ desc "list", "List apps"
9
+ class_option :team , :default => '<team>' , :required => true
10
+ def list()
11
+
12
+ c=Utils.credentials(options)
13
+ Spaceship::Tunes.login(c.username,c.password)
14
+
15
+ t=Utils.team(options)
16
+ Spaceship::Tunes.client.team_id=t
17
+
18
+
19
+ Spaceship::Tunes::Application.all.collect do |app|
20
+ require 'pp'
21
+ pp app
22
+ #pp app.details
23
+ #pp app.live_version
24
+ pp app.edit_version
25
+ pp app.edit_version.candidate_builds unless app.edit_version.nil?
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ require 'spaceship'
2
+ require_relative './util.rb'
3
+
4
+ module Slowlane
5
+ module Itunes
6
+ class Team < Thor
7
+
8
+ desc "list", "List apps"
9
+ def list()
10
+ require "spaceship"
11
+
12
+ c=Utils.credentials(options)
13
+ Spaceship::Tunes.login(c.username,c.password)
14
+
15
+ Spaceship::Tunes.client.teams.each do |team|
16
+ require 'pp'
17
+ pp team
18
+ #puts "#{team['teamId']}|#{team['type']}|#{team['name']}"
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,47 @@
1
+ require 'ostruct'
2
+
3
+ class Utils
4
+ def self.credentials(options)
5
+
6
+ credentials = OpenStruct.new
7
+
8
+ if ENV['SLOWLANE_USERNAME']
9
+ credentials.username=ENV['SLOWLANE_USERNAME']
10
+ else
11
+ if options[:username] == '<username>'
12
+ puts "username is required"
13
+ exit(-1)
14
+ else
15
+ credentials.username=options[:username]
16
+ end
17
+ end
18
+
19
+ if ENV['SLOWLANE_PASSWORD']
20
+ credentials.password=ENV['SLOWLANE_PASSWORD']
21
+ else
22
+ if options[:password] == '<password>'
23
+ puts "password is required"
24
+ exit(-1)
25
+ else
26
+ credentials.password=options[:username]
27
+ end
28
+ end
29
+ return credentials
30
+ end
31
+
32
+ def self.team(options)
33
+
34
+ if ENV['SLOWLANE_TEAM']
35
+ team=ENV['SLOWLANE_TEAM']
36
+ else
37
+ if options[:team] == '<team>'
38
+ puts "team is required"
39
+ exit(-1)
40
+ else
41
+ team=options[:team]
42
+ end
43
+ end
44
+ return team
45
+ end
46
+
47
+ end
@@ -0,0 +1,35 @@
1
+ require_relative './util.rb'
2
+ require "spaceship"
3
+
4
+ module Slowlane
5
+ module Portal
6
+ class App < Thor
7
+
8
+ desc "list", "List apps"
9
+ class_option :team , :default => '<team>' , :required => true
10
+ def list()
11
+
12
+ c=Utils.credentials(options)
13
+ Spaceship::Portal.login(c.username,c.password)
14
+
15
+ t=Utils.team(options)
16
+ Spaceship::Portal.client.team_id=t
17
+
18
+ Spaceship::Portal.app.all.find_all do |app|
19
+ require 'pp'
20
+ detail=[]
21
+ detail << app.app_id
22
+ detail << app.platform
23
+ detail << app.prefix
24
+ detail << app.is_wildcard
25
+ detail << app.bundle_id
26
+ detail << app.name
27
+ puts detail.join("|")
28
+ end
29
+
30
+
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,39 @@
1
+ require_relative './util.rb'
2
+ require "spaceship"
3
+
4
+ module Slowlane
5
+ module Portal
6
+ class Device < Thor
7
+
8
+ desc "list", "List devices"
9
+ def list()
10
+
11
+ c=Utils.credentials(options)
12
+ Spaceship::Portal.login(c.username,c.password)
13
+
14
+ t=Utils.team(options)
15
+ Spaceship::Portal.client.team_id=t
16
+
17
+ Spaceship::Portal.device.all.find_all do |device|
18
+ puts "#{device.id}|#{device.udid}|#{device.name}"
19
+ end
20
+
21
+ end
22
+
23
+ desc "add", "Add a device <udid> <description>"
24
+ def add(udid, description)
25
+
26
+ c=Utils.credentials(options)
27
+ Spaceship::Portal.login(c.username,c.password)
28
+
29
+ t=Utils.team(options)
30
+ Spaceship::Portal.client.team_id=t
31
+
32
+ newdevice = Spaceship::Portal.device.create!(name: "#{description}", udid: "#{udid}")
33
+ require 'pp'
34
+ pp newdevice
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ require_relative './util.rb'
2
+ require "spaceship"
3
+
4
+
5
+ module Slowlane
6
+ module Portal
7
+ class Profile < Thor
8
+
9
+ desc "add_device","add_device <bundle_id> <device>"
10
+ def add_device(bundle_id,device)
11
+ puts bundle_id
12
+ puts device
13
+ end
14
+
15
+ desc "list", "List profiles"
16
+ def list()
17
+
18
+ c=Utils.credentials(options)
19
+ Spaceship::Portal.login(c.username,c.password)
20
+
21
+ t=Utils.team(options)
22
+ Spaceship::Portal.client.team_id=t
23
+
24
+ Spaceship::Portal.provisioning_profile.all.find_all do |profile|
25
+ unless options[:filter].nil?
26
+ if profile.name =~ /#{options[:filter]}/
27
+ puts "#{profile.uuid}|#{profile.id}|#{profile.distribution_method}|#{profile.name}"
28
+ end
29
+ else
30
+ puts "#{profile.uuid}|#{profile.id}|#{profile.distribution_method}|#{profile.name}"
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,22 @@
1
+ require_relative './util.rb'
2
+
3
+ module Slowlane
4
+ module Portal
5
+ class Team < Thor
6
+
7
+ desc "list", "List apps"
8
+ def list()
9
+ require "spaceship"
10
+
11
+ c=Utils.credentials(options)
12
+ Spaceship::Portal.login(c.username,c.password)
13
+
14
+ Spaceship::Portal.client.teams.each do |team|
15
+ puts "#{team['teamId']}|#{team['type']}|#{team['name']}"
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,47 @@
1
+ require 'ostruct'
2
+
3
+ class Utils
4
+ def self.credentials(options)
5
+
6
+ credentials = OpenStruct.new
7
+
8
+ if ENV['SLOWLANE_USERNAME']
9
+ credentials.username=ENV['SLOWLANE_USERNAME']
10
+ else
11
+ if options[:username] == '<username>'
12
+ puts "username is required"
13
+ exit(-1)
14
+ else
15
+ credentials.username=options[:username]
16
+ end
17
+ end
18
+
19
+ if ENV['SLOWLANE_PASSWORD']
20
+ credentials.password=ENV['SLOWLANE_PASSWORD']
21
+ else
22
+ if options[:password] == '<password>'
23
+ puts "password is required"
24
+ exit(-1)
25
+ else
26
+ credentials.password=options[:username]
27
+ end
28
+ end
29
+ return credentials
30
+ end
31
+
32
+ def self.team(options)
33
+
34
+ if ENV['SLOWLANE_TEAM']
35
+ team=ENV['SLOWLANE_TEAM']
36
+ else
37
+ if options[:team] == '<team>'
38
+ puts "team is required"
39
+ exit(-1)
40
+ else
41
+ team=options[:team]
42
+ end
43
+ end
44
+ return team
45
+ end
46
+
47
+ end
data/slowlane.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ #require File.expand_path("../lib/slowlane/version", __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "slowlane"
5
+ s.version = "0.0.1.alpha"
6
+ s.platform = Gem::Platform::RUBY
7
+ s.license = 'MIT'
8
+ s.authors = ["Patrick Debois"]
9
+ s.email = ["patrick.debois@jedi.be"]
10
+ s.homepage = "http://github.com/jedi4ever/slowlane/"
11
+ s.summary = %q{Fastlane without the magic - managing ios deployment}
12
+ s.description = %q{Cli version without supprises}
13
+
14
+ s.required_rubygems_version = ">= 2.0.6"
15
+ s.rubyforge_project = "slowlane"
16
+
17
+ s.add_dependency "thor"
18
+ s.add_dependency "spaceship"
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.executables = `git ls-files`.split("\n").map { |f| f =~ /^bin\/(.*)/ ? $1 : nil }.compact
22
+ s.require_path = 'lib'
23
+
24
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: slowlane
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Patrick Debois
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: spaceship
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Cli version without supprises
42
+ email:
43
+ - patrick.debois@jedi.be
44
+ executables:
45
+ - slowlane-itunes
46
+ - slowlane-portal
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - .gitignore
51
+ - Gemfile
52
+ - README.md
53
+ - Rakefile
54
+ - bin/slowlane-itunes
55
+ - bin/slowlane-portal
56
+ - lib/slowlane/itunes/app.rb
57
+ - lib/slowlane/itunes/team.rb
58
+ - lib/slowlane/itunes/util.rb
59
+ - lib/slowlane/portal/app.rb
60
+ - lib/slowlane/portal/device.rb
61
+ - lib/slowlane/portal/profile.rb
62
+ - lib/slowlane/portal/team.rb
63
+ - lib/slowlane/portal/util.rb
64
+ - slowlane.gemspec
65
+ homepage: http://github.com/jedi4ever/slowlane/
66
+ licenses:
67
+ - MIT
68
+ metadata: {}
69
+ post_install_message:
70
+ rdoc_options: []
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.0.6
83
+ requirements: []
84
+ rubyforge_project: slowlane
85
+ rubygems_version: 2.2.2
86
+ signing_key:
87
+ specification_version: 4
88
+ summary: Fastlane without the magic - managing ios deployment
89
+ test_files: []