forj 0.0.31 → 0.0.32
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 +7 -0
- data/README.md +26 -3
- data/bin/forj +17 -18
- data/lib/boot.rb +51 -37
- data/lib/{catalog.yaml → defaults.yaml} +4 -12
- data/lib/repositories.rb +2 -1
- data/lib/setup.rb +4 -3
- data/lib/yaml_parse.rb +1 -1
- metadata +59 -29
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9b005cfdf0378f6542960384a955b0178b6fba87
|
4
|
+
data.tar.gz: 36c3649b97b76407bec1ea5abcc7a56b56df89df
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c04216e0b8ebf47678739a6d926ad00e30160d53648432cb2bf9c175da4b5bc90e86ca0e8f48d906248ea8a8f89a1f4c29e9840b6bba56038d377d519b67556a
|
7
|
+
data.tar.gz: 092c8482f8bd958e6fbdbbe12b39866755b43a600895e00b15301ca5925385b9da9e697f8431a31e004f251af8326306d6a5ddc9e48a0ce250dd69ccb1efd398
|
data/README.md
CHANGED
@@ -5,11 +5,14 @@ Forj cli
|
|
5
5
|
Installation
|
6
6
|
=====================
|
7
7
|
For ruby 2.0
|
8
|
-
|
8
|
+
|
9
|
+
Fedora/CentOS/Redhat/rpm like system
|
10
|
+
|
9
11
|
sudo yum install ruby-dev build-essential libopenssl-ruby libssl-dev zlib1g-dev -y
|
10
12
|
sudo gem install forj
|
11
13
|
|
12
|
-
|
14
|
+
Ubuntu/Debian/debian like system (not tested)
|
15
|
+
|
13
16
|
sudo apt-get install ruby-dev build-essential libopenssl-ruby1.9.1 libssl-dev zlib1g-dev -y
|
14
17
|
sudo gem install forj
|
15
18
|
|
@@ -53,7 +56,27 @@ Optional arguments
|
|
53
56
|
-x --box_name # Defines the name of the box or box image to build.
|
54
57
|
-k --key_name # Key pair name to import.
|
55
58
|
-p --key_path # Public key pair data.
|
56
|
-
|
59
|
+
-y --catalog # A path for the yaml file data about the blueprint
|
60
|
+
|
61
|
+
Catalog.yaml example
|
62
|
+
|
63
|
+
redstone:
|
64
|
+
image: proto2b
|
65
|
+
flavor: standard.xsmall
|
66
|
+
ports: [22, 80, 443, 3131, 3000, 3132, 3133, 3134, 3135, 4505, 4506, 5000, 5666, 8000, 8080, 8081, 8083, 8125, 8139, 8140, 8773, 8774, 8776, 9292, 29418, 35357]
|
67
|
+
keypair_path: ~/.hpcloud/keypairs/nova
|
68
|
+
keypair_name: nova
|
69
|
+
router: private-ext
|
70
|
+
security_group: default
|
71
|
+
network: private
|
72
|
+
# at this point you have to clone the infra project manually
|
73
|
+
build_config_dir: ~/forj/infra/build/boxes/maestro
|
74
|
+
build_config: box-13.5
|
75
|
+
branch: master
|
76
|
+
box_name: maestro
|
77
|
+
infra: ~/.forj/infra
|
78
|
+
default:
|
79
|
+
maestro: https://github.com/forj-oss/maestro.git
|
57
80
|
To ssh into a server
|
58
81
|
|
59
82
|
forj ssh <name> <node>
|
data/bin/forj
CHANGED
@@ -34,24 +34,23 @@ class Forj < Thor
|
|
34
34
|
def help
|
35
35
|
puts 'Forj cli help'
|
36
36
|
puts ''
|
37
|
-
puts ' forj setup # Set the credentials for forj.'
|
38
|
-
puts '
|
37
|
+
puts ' forj setup # Set the credentials for forj. Currently supports only hpcloud provider.'
|
38
|
+
puts ' Several data will be requested like:'
|
39
39
|
puts ' access_key: access key from hpcloud'
|
40
40
|
puts ' secret_key: secret key from hpcloud'
|
41
41
|
puts ' auth_uri: identity endpoint'
|
42
42
|
puts ' tenant_id: id for the tenant you want to use'
|
43
43
|
puts ' availability_zone: which availability zone will be deployed'
|
44
44
|
puts ''
|
45
|
-
puts ' forj boot
|
46
|
-
puts '
|
47
|
-
puts ' blueprint: name of the blueprint (currently cli only supports redstone)'
|
48
|
-
puts '
|
49
|
-
puts '
|
50
|
-
puts '
|
51
|
-
puts '
|
52
|
-
puts '
|
53
|
-
puts '
|
54
|
-
puts ' optional:'
|
45
|
+
puts ' forj boot <Blueprint> on <Provider> as <InstanceName> [options] # Boot a new forge with the following options'
|
46
|
+
puts ' where:'
|
47
|
+
puts ' blueprint : Is the name of the blueprint (currently cli only supports redstone)'
|
48
|
+
puts ' Provider : in which cloud provider to deploy the forge'
|
49
|
+
puts ' InstanceName : name of the forge'
|
50
|
+
puts ''
|
51
|
+
puts ' Ex: forj boot redstone on hpcloud as maestro_test'
|
52
|
+
puts ''
|
53
|
+
puts ' [Options] are:'
|
55
54
|
puts ' -b build: replace the default build.sh'
|
56
55
|
puts ' -bcd build_config_dir: defines the build configuration directory to load the build configuration file'
|
57
56
|
puts ' -bc build_config: the build config file to load <confdir>/<BoxName>.<Config>.env.'
|
@@ -61,12 +60,12 @@ class Forj < Thor
|
|
61
60
|
puts ' -bh boothook: by default, boothook file used is build/bin/build-tools/boothook.sh. Use this option to set another one.'
|
62
61
|
puts ' -bn box_name: defines the name of the box or box image to build.'
|
63
62
|
puts ''
|
64
|
-
puts ' forj ssh
|
65
|
-
puts '
|
66
|
-
puts '
|
67
|
-
puts '
|
63
|
+
puts ' forj ssh <Name> <Node> # Connect through ssh to an existing instance'
|
64
|
+
puts ' where'
|
65
|
+
puts ' InstanceName: is the name of the forge (maestro_test)'
|
66
|
+
puts ' Node : is the name of the node (maestro, ci, etc...)'
|
68
67
|
puts ''
|
69
|
-
puts ' forj down
|
68
|
+
puts ' forj down <InstanceName> # Delete a forge and create a backup of your data'
|
70
69
|
puts ' not yet implemented'
|
71
70
|
puts ''
|
72
71
|
puts ' forj help # Display this help'
|
@@ -75,7 +74,7 @@ class Forj < Thor
|
|
75
74
|
desc 'boot', 'boot a Maestro box and instruct it to provision the blueprint'
|
76
75
|
|
77
76
|
method_option :build, :aliases => '-u', :desc => 'Replace the default build.sh'
|
78
|
-
method_option :
|
77
|
+
method_option :infra, :aliases => '-I', :desc => 'Defines the Infra directory to load the build configuration file. You can set FORJ_INFRA_DIR. By default, it will look in your current directory.'
|
79
78
|
method_option :build_config, :aliases => '-c', :desc => 'The build config file to load <confdir>/<BoxName>.<Config>.env. By default, uses "master" as Config.'
|
80
79
|
method_option :branch, :aliases => '-b', :desc => 'The build will extract from git branch name. It sets the configuration build <config> to the branch name <branch>.'
|
81
80
|
method_option :test_box, :aliases => '-t', :desc => 'Create test.rb-box meta from the repository path provided.'
|
data/lib/boot.rb
CHANGED
@@ -15,8 +15,8 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
|
19
|
+
|
20
20
|
|
21
21
|
require_relative 'network.rb'
|
22
22
|
include Network
|
@@ -36,58 +36,72 @@ include Helpers
|
|
36
36
|
#
|
37
37
|
module Boot
|
38
38
|
def boot(blueprint, cloud_provider, name,
|
39
|
-
build,
|
39
|
+
build, infra_dir, build_config,
|
40
40
|
branch, git_repo, boothook, box_name,
|
41
41
|
key_name, key_path, region, catalog,
|
42
42
|
test = false)
|
43
43
|
begin
|
44
|
-
initial_msg = 'booting %s on %s' % [blueprint , cloud_provider]
|
44
|
+
initial_msg = 'booting %s on %s (~/.forj/forj.log)' % [blueprint , cloud_provider]
|
45
45
|
|
46
46
|
Logging.info(initial_msg)
|
47
|
-
puts (
|
47
|
+
puts ('INFO: Reading default configuration...')
|
48
48
|
|
49
49
|
forj_dir = File.expand_path(File.dirname(__FILE__))
|
50
50
|
Dir.chdir(forj_dir)
|
51
51
|
|
52
|
+
#TODO: Consider defaults.yaml as default variables, and load more from ~/.forj/forj-config.yaml, to change defaults on user need.
|
52
53
|
if catalog
|
53
54
|
definitions = YamlParse.get_values(catalog)
|
54
55
|
else
|
55
|
-
definitions = YamlParse.get_values('
|
56
|
+
definitions = YamlParse.get_values('defaults.yaml')
|
56
57
|
end
|
58
|
+
|
59
|
+
# Initialize defaults
|
60
|
+
maestro_url = definitions['default']['maestro_url']
|
57
61
|
|
58
|
-
|
59
|
-
|
60
|
-
Repositories.clone_repo(maestro_url)
|
61
|
-
infra_exists = nil
|
62
|
+
infra_dir = definitions['default']['infra_repo'] unless infra_dir
|
62
63
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
64
|
+
# Ask information if needed.
|
65
|
+
bBuildInfra=false
|
66
|
+
if not Dir.exist?(File.expand_path(infra_dir))
|
67
|
+
sAsk = 'Your \'%s\' infra directory doesn\'t exist. Do you want to create a new one from Maestro(repo github)/templates/infra (yes/no)?' % [infra_dir]
|
68
|
+
bBuildInfra=agree(sAsk)
|
69
|
+
else
|
70
|
+
puts('INFO: Re-using your infra... in \'%s\'' % [infra_dir])
|
71
|
+
end
|
72
|
+
if not Dir.exist?(File.expand_path(infra_dir)) and not bBuildInfra
|
73
|
+
puts ('Exiting.')
|
74
|
+
return
|
72
75
|
end
|
73
76
|
|
77
|
+
# Step Maestro Clone
|
78
|
+
puts('INFO: cloning maestro repo from \'%s\'...' % maestro_url)
|
79
|
+
Repositories.clone_repo(maestro_url)
|
80
|
+
|
81
|
+
if bBuildInfra
|
82
|
+
puts('INFO: Building your infra... in \'%s\'' % [infra_dir])
|
83
|
+
Repositories.create_infra
|
84
|
+
end
|
74
85
|
|
75
|
-
network
|
86
|
+
puts('INFO: Configuring network \'%s\'' % [definitions['default']['network']])
|
87
|
+
network = Network.get_or_create_network(definitions['default']['network'])
|
76
88
|
begin
|
77
89
|
subnet = Network.get_or_create_subnet(network.id, name)
|
78
|
-
router = Network.get_router(definitions[
|
90
|
+
router = Network.get_router(definitions['default']['router'])
|
79
91
|
Network.create_router_interface(subnet.id, router)
|
80
92
|
rescue => e
|
81
93
|
puts e.message
|
82
94
|
end
|
83
95
|
|
84
|
-
security_group = SecurityGroup.get_or_create_security_group(definitions[blueprint]['security_group'])
|
85
96
|
|
86
|
-
|
87
|
-
|
97
|
+
puts('INFO: Configuring keypair \'%s\'' % [definitions['default']['keypair_name']])
|
98
|
+
key_name = definitions['default']['keypair_name'] unless key_name
|
99
|
+
key_path = definitions['default']['keypair_path'] unless key_path
|
88
100
|
SecurityGroup.upload_existing_key(key_name, key_path)
|
89
101
|
|
90
|
-
|
102
|
+
puts('INFO: Configuring Security Group \'%s\'' % [definitions['default']['security_group']])
|
103
|
+
security_group = SecurityGroup.get_or_create_security_group(definitions['default']['security_group'])
|
104
|
+
ports = definitions['default']['ports']
|
91
105
|
|
92
106
|
ports.each do|port|
|
93
107
|
Network.get_or_create_rule(security_group.id, 'tcp', port, port)
|
@@ -102,6 +116,7 @@ module Boot
|
|
102
116
|
end
|
103
117
|
|
104
118
|
# run build.sh to boot maestro
|
119
|
+
puts
|
105
120
|
current_dir = Dir.pwd
|
106
121
|
home = Helpers.get_home_path
|
107
122
|
build_path = home + '/.forj/maestro/build'
|
@@ -109,23 +124,19 @@ module Boot
|
|
109
124
|
|
110
125
|
build = 'bin/build.sh' unless build
|
111
126
|
|
112
|
-
|
113
|
-
build_config_dir = definitions[blueprint]['infra'] unless build_config_dir
|
114
|
-
else
|
115
|
-
build_config_dir = definitions[blueprint]['build_config_dir'] unless build_config_dir
|
116
|
-
end
|
117
|
-
|
118
|
-
build_config = definitions[blueprint]['build_config'] unless build_config
|
127
|
+
build_config = definitions['default']['build_config'] unless build_config
|
119
128
|
|
120
|
-
branch = definitions[
|
129
|
+
branch = definitions['default']['branch'] unless branch
|
121
130
|
|
122
|
-
box_name = definitions[
|
131
|
+
box_name = definitions['default']['box_name'] unless box_name
|
123
132
|
|
124
|
-
meta = '--meta blueprint=%s
|
133
|
+
meta = '--meta blueprint=%s' % [blueprint]
|
125
134
|
|
126
|
-
command = '%s --build_ID %s --box-name %s --build-conf-dir %s --build-config %s --gitBranch %s --debug-box %s' % [build, name, box_name,
|
135
|
+
command = '%s --build_ID %s --box-name %s --build-conf-dir %s --build-config %s --gitBranch %s --debug-box %s' % [build, name, box_name, infra_dir, build_config, branch, meta]
|
127
136
|
|
128
|
-
Logging.info('
|
137
|
+
Logging.info('Calling build.sh')
|
138
|
+
Logging.info(command)
|
139
|
+
|
129
140
|
Kernel.system(command)
|
130
141
|
Dir.chdir(current_dir)
|
131
142
|
|
@@ -142,6 +153,9 @@ module Boot
|
|
142
153
|
Logging.info(msg)
|
143
154
|
rescue StandardError => e
|
144
155
|
Logging.error(e.message)
|
156
|
+
puts e.backtrace.join("\n")
|
157
|
+
|
158
|
+
puts e.message
|
145
159
|
end
|
146
160
|
end
|
147
161
|
end
|
@@ -12,7 +12,9 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
|
15
|
+
default:
|
16
|
+
maestro_url: https://github.com/forj-oss/maestro.git
|
17
|
+
infra_repo: ~/.forj/infra
|
16
18
|
image: proto2b
|
17
19
|
flavor: standard.xsmall
|
18
20
|
ports: [22, 80, 443, 3131, 3000, 3132, 3133, 3134, 3135, 4505, 4506, 5000, 5666, 8000, 8080, 8081, 8083, 8125, 8139, 8140, 8773, 8774, 8776, 9292, 29418, 35357]
|
@@ -23,16 +25,6 @@ redstone:
|
|
23
25
|
network: private
|
24
26
|
# at this point you have to clone the infra project manually
|
25
27
|
build_config_dir: ~/forj/infra/build/boxes/maestro
|
26
|
-
build_config: box
|
28
|
+
build_config: box
|
27
29
|
branch: master
|
28
30
|
box_name: maestro
|
29
|
-
infra: ~/.forj/infra
|
30
|
-
|
31
|
-
|
32
|
-
modus:
|
33
|
-
ports: []
|
34
|
-
keypair: nova
|
35
|
-
router: private-ext
|
36
|
-
|
37
|
-
default:
|
38
|
-
maestro: https://github.com/forj-oss/maestro.git
|
data/lib/repositories.rb
CHANGED
@@ -50,6 +50,7 @@ module Repositories
|
|
50
50
|
end
|
51
51
|
Dir.chdir(current_dir)
|
52
52
|
end
|
53
|
+
|
53
54
|
def create_infra
|
54
55
|
home = File.expand_path('~')
|
55
56
|
path = home + '/.forj/'
|
@@ -68,4 +69,4 @@ module Repositories
|
|
68
69
|
fill_template = 'python build-env.py -p ~/.forj/infra --maestro-path ~/.forj/maestro'
|
69
70
|
Kernel.system(fill_template)
|
70
71
|
end
|
71
|
-
end
|
72
|
+
end
|
data/lib/setup.rb
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
|
18
18
|
require 'rubygems'
|
19
19
|
require 'require_relative'
|
20
|
+
require 'highline/import'
|
20
21
|
|
21
22
|
require_relative 'yaml_parse.rb'
|
22
23
|
include YamlParse
|
@@ -36,14 +37,14 @@ end
|
|
36
37
|
|
37
38
|
def setup_credentials
|
38
39
|
puts 'Enter hpcloud username: '
|
39
|
-
hpcloud_os_user =
|
40
|
-
|
41
|
-
hpcloud_os_key = $stdin.gets
|
40
|
+
hpcloud_os_user = ask('Enter hpcloud username: ')
|
41
|
+
hpcloud_os_key = ask('Enter hpcloud password: ') { |q| q.echo = '*'}
|
42
42
|
|
43
43
|
home = File.expand_path('~')
|
44
44
|
creds = '%s/.cache/forj/creds' % [home]
|
45
45
|
File.open(creds, 'w') {|file|
|
46
46
|
file.write('HPCLOUD_OS_USER=%s' % [hpcloud_os_user])
|
47
|
+
file.write("\n")
|
47
48
|
file.write('HPCLOUD_OS_KEY=%s' % [hpcloud_os_key])
|
48
49
|
}
|
49
50
|
end
|
data/lib/yaml_parse.rb
CHANGED
@@ -26,7 +26,7 @@ include Logging
|
|
26
26
|
module YamlParse
|
27
27
|
def get_values(path_to_yaml)
|
28
28
|
begin
|
29
|
-
Logging.info('getting values from
|
29
|
+
Logging.info('getting values from defaults.yaml, this will be a service catalog.forj.io')
|
30
30
|
YAML.load_file(path_to_yaml)
|
31
31
|
rescue => e
|
32
32
|
Logging.error(e.message)
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.32
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- forj team
|
@@ -13,70 +12,102 @@ date: 2014-06-12 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: thor
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.16.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.16.0
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: nokogiri
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ~>
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: 1.5.11
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.5.11
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: fog
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
45
|
- - ~>
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: 1.19.0
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.19.0
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: hpcloud
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: 2.0.8
|
55
62
|
type: :runtime
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.0.8
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: git
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - '>='
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: 1.2.7
|
66
76
|
type: :runtime
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.2.7
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rbx-require-relative
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
87
|
- - ~>
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: 0.0.7
|
77
90
|
type: :runtime
|
78
91
|
prerelease: false
|
79
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.0.7
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: highline
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.6.21
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.6.21
|
80
111
|
description: forj command line
|
81
112
|
email:
|
82
113
|
- forj@forj.io
|
@@ -91,7 +122,7 @@ files:
|
|
91
122
|
- lib/network.rb
|
92
123
|
- lib/security.rb
|
93
124
|
- lib/yaml_parse.rb
|
94
|
-
- lib/
|
125
|
+
- lib/defaults.yaml
|
95
126
|
- lib/down.rb
|
96
127
|
- lib/boot.rb
|
97
128
|
- lib/setup.rb
|
@@ -116,26 +147,25 @@ files:
|
|
116
147
|
homepage: https://forj.io
|
117
148
|
licenses:
|
118
149
|
- Apache License, Version 2.0.
|
150
|
+
metadata: {}
|
119
151
|
post_install_message: Go to docs.forj.io for more information on how to use forj cli
|
120
152
|
rdoc_options: []
|
121
153
|
require_paths:
|
122
154
|
- lib
|
123
155
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
156
|
requirements:
|
126
|
-
- -
|
157
|
+
- - '>='
|
127
158
|
- !ruby/object:Gem::Version
|
128
159
|
version: 1.8.5
|
129
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
161
|
requirements:
|
132
|
-
- -
|
162
|
+
- - '>='
|
133
163
|
- !ruby/object:Gem::Version
|
134
164
|
version: '0'
|
135
165
|
requirements: []
|
136
166
|
rubyforge_project:
|
137
|
-
rubygems_version: 1.
|
167
|
+
rubygems_version: 2.1.11
|
138
168
|
signing_key:
|
139
|
-
specification_version:
|
169
|
+
specification_version: 4
|
140
170
|
summary: forj command line
|
141
171
|
test_files: []
|