slowlane 0.0.1.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/Gemfile +2 -0
- data/README.md +21 -0
- data/Rakefile +5 -0
- data/bin/slowlane-itunes +22 -0
- data/bin/slowlane-portal +32 -0
- data/lib/slowlane/itunes/app.rb +33 -0
- data/lib/slowlane/itunes/team.rb +25 -0
- data/lib/slowlane/itunes/util.rb +47 -0
- data/lib/slowlane/portal/app.rb +35 -0
- data/lib/slowlane/portal/device.rb +39 -0
- data/lib/slowlane/portal/profile.rb +37 -0
- data/lib/slowlane/portal/team.rb +22 -0
- data/lib/slowlane/portal/util.rb +47 -0
- data/slowlane.gemspec +24 -0
- metadata +89 -0
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
data/Gemfile
ADDED
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
data/bin/slowlane-itunes
ADDED
@@ -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)
|
data/bin/slowlane-portal
ADDED
@@ -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: []
|