gene_system 0.3.2 → 0.4.0
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 +4 -4
 - data/Gemfile +0 -7
 - data/Gemfile.lock +32 -18
 - data/README.md +2 -0
 - data/bin/gene_system +20 -0
 - data/bin/genesystem +11 -43
 - data/gene_system.gemspec +3 -1
 - data/lib/gene_system/cli.rb +51 -63
 - data/lib/gene_system/commands/create_manifest.rb +54 -0
 - data/lib/gene_system/commands/install_manifest.rb +86 -0
 - data/lib/gene_system/commands/print_version.rb +17 -0
 - data/lib/gene_system/commands/remove_manifest.rb +86 -0
 - data/lib/gene_system/commands.rb +14 -0
 - data/lib/gene_system/generators.rb +1 -1
 - data/lib/gene_system/manifest.rb +58 -1
 - data/lib/gene_system/platform.rb +1 -0
 - data/lib/gene_system/version.rb +1 -1
 - data/manifest.json +59 -0
 - data/spec/gene_system/cli_spec.rb +68 -46
 - data/spec/gene_system/commands/create_manifest_spec.rb +119 -0
 - data/spec/gene_system/commands/install_manifest_spec.rb +258 -0
 - data/spec/gene_system/commands/print_version_spec.rb +20 -0
 - data/spec/gene_system/commands/remove_manifest_spec.rb +258 -0
 - data/spec/gene_system/generators_spec.rb +1 -1
 - data/spec/gene_system/manifest_spec.rb +68 -0
 - metadata +47 -6
 - data/lib/gene_system/cli/commands.rb +0 -109
 - data/spec/gene_system/cli/commands_spec.rb +0 -230
 
| 
         @@ -1,230 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            RSpec.describe GeneSystem::CLI::Commands do
         
     | 
| 
       4 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       5 
     | 
    
         
            -
                let(:pwd) { 'path/to/current/dir' }
         
     | 
| 
       6 
     | 
    
         
            -
                let(:name) { 'manifest name' }
         
     | 
| 
       7 
     | 
    
         
            -
                let(:args) { [name] }
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                before do
         
     | 
| 
       10 
     | 
    
         
            -
                  allow(Dir).to receive(:pwd).and_return(pwd)
         
     | 
| 
       11 
     | 
    
         
            -
                  allow(GeneSystem::Generators).to receive(:render_empty_manifest)
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                it 'renders empty manifest at current path with given name' do
         
     | 
| 
       15 
     | 
    
         
            -
                  described_class.new(args)
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  expect(GeneSystem::Generators).to have_received(:render_empty_manifest)
         
     | 
| 
       18 
     | 
    
         
            -
                    .with(name, pwd)
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                context 'when name is not given' do
         
     | 
| 
       22 
     | 
    
         
            -
                  it 'raises no manifest name provided runtime error' do
         
     | 
| 
       23 
     | 
    
         
            -
                    expect { described_class.new([]) }.to raise_error(
         
     | 
| 
       24 
     | 
    
         
            -
                      RuntimeError,
         
     | 
| 
       25 
     | 
    
         
            -
                      'no manifest name provided'
         
     | 
| 
       26 
     | 
    
         
            -
                    )
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              describe '.install' do
         
     | 
| 
       32 
     | 
    
         
            -
                let(:manifest_name) { 'manifest.json' }
         
     | 
| 
       33 
     | 
    
         
            -
                let(:pwd) { 'path/to/current/dir' }
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                let(:args) { [manifest_name] }
         
     | 
| 
       36 
     | 
    
         
            -
                let(:file_exist) { true }
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                let(:skip_cmd) { 'check something' }
         
     | 
| 
       39 
     | 
    
         
            -
                let(:skip_result) { 1 }
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                let(:cmd) { 'do something' }
         
     | 
| 
       42 
     | 
    
         
            -
                let(:cmds) { [cmd, cmd] }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                let(:data) do
         
     | 
| 
       45 
     | 
    
         
            -
                  {
         
     | 
| 
       46 
     | 
    
         
            -
                    'name' => 'test_manifest',
         
     | 
| 
       47 
     | 
    
         
            -
                    'version' => '0.1.0',
         
     | 
| 
       48 
     | 
    
         
            -
                    'steps' => [
         
     | 
| 
       49 
     | 
    
         
            -
                      {
         
     | 
| 
       50 
     | 
    
         
            -
                        'name' => 'install',
         
     | 
| 
       51 
     | 
    
         
            -
                        'exe' => {
         
     | 
| 
       52 
     | 
    
         
            -
                          'install' => {
         
     | 
| 
       53 
     | 
    
         
            -
                            'skip' => skip_cmd,
         
     | 
| 
       54 
     | 
    
         
            -
                            'cmd' => cmds
         
     | 
| 
       55 
     | 
    
         
            -
                          }
         
     | 
| 
       56 
     | 
    
         
            -
                        }
         
     | 
| 
       57 
     | 
    
         
            -
                      }
         
     | 
| 
       58 
     | 
    
         
            -
                    ]
         
     | 
| 
       59 
     | 
    
         
            -
                  }
         
     | 
| 
       60 
     | 
    
         
            -
                end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                let(:manifest) do
         
     | 
| 
       63 
     | 
    
         
            -
                  GeneSystem::Manifest.new(
         
     | 
| 
       64 
     | 
    
         
            -
                    File.join(pwd, manifest_name),
         
     | 
| 
       65 
     | 
    
         
            -
                    data
         
     | 
| 
       66 
     | 
    
         
            -
                  )
         
     | 
| 
       67 
     | 
    
         
            -
                end
         
     | 
| 
       68 
     | 
    
         
            -
                let(:platform) { double(GeneSystem::Platform) }
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                before do
         
     | 
| 
       71 
     | 
    
         
            -
                  allow(Dir).to receive(:pwd).and_return(pwd)
         
     | 
| 
       72 
     | 
    
         
            -
                  allow(File).to receive(:exist?).and_return(file_exist)
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                  allow(GeneSystem::Manifest).to receive(:new_from_file)
         
     | 
| 
       75 
     | 
    
         
            -
                    .and_return(manifest)
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                  allow(GeneSystem::Platform).to receive(:new)
         
     | 
| 
       78 
     | 
    
         
            -
                    .and_return(platform)
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
                  allow(platform).to receive(:execute_commands)
         
     | 
| 
       81 
     | 
    
         
            -
                  allow(platform).to receive(:execute_command)
         
     | 
| 
       82 
     | 
    
         
            -
                    .with(skip_cmd)
         
     | 
| 
       83 
     | 
    
         
            -
                    .and_return(skip_result)
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
                  allow(GeneSystem::CLI).to receive(:print_message)
         
     | 
| 
       86 
     | 
    
         
            -
                end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                describe 'installing manifest' do
         
     | 
| 
       89 
     | 
    
         
            -
                  before { described_class.install(args) }
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
                  it 'loads manifest' do
         
     | 
| 
       92 
     | 
    
         
            -
                    expect(GeneSystem::Manifest)
         
     | 
| 
       93 
     | 
    
         
            -
                      .to have_received(:new_from_file)
         
     | 
| 
       94 
     | 
    
         
            -
                      .with(File.join(pwd, manifest_name))
         
     | 
| 
       95 
     | 
    
         
            -
                  end
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                  it 'executes steps on platform' do
         
     | 
| 
       98 
     | 
    
         
            -
                    expect(platform)
         
     | 
| 
       99 
     | 
    
         
            -
                      .to have_received(:execute_commands)
         
     | 
| 
       100 
     | 
    
         
            -
                      .with(cmds, {})
         
     | 
| 
       101 
     | 
    
         
            -
                  end
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
                  it 'prints success message' do
         
     | 
| 
       104 
     | 
    
         
            -
                    expect(GeneSystem::CLI).to have_received(:print_message)
         
     | 
| 
       105 
     | 
    
         
            -
                      .with("\nmanifest successfully installed")
         
     | 
| 
       106 
     | 
    
         
            -
                  end
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                  context 'when skipping step' do
         
     | 
| 
       109 
     | 
    
         
            -
                    let(:skip_result) { 0 }
         
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
                    it 'does not execute steps' do
         
     | 
| 
       112 
     | 
    
         
            -
                      expect(platform)
         
     | 
| 
       113 
     | 
    
         
            -
                        .not_to have_received(:execute_commands)
         
     | 
| 
       114 
     | 
    
         
            -
                    end
         
     | 
| 
       115 
     | 
    
         
            -
                  end
         
     | 
| 
       116 
     | 
    
         
            -
                end
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
                context 'when path is not provided' do
         
     | 
| 
       119 
     | 
    
         
            -
                  it 'raises no manifest path provided runtime error' do
         
     | 
| 
       120 
     | 
    
         
            -
                    expect { described_class.install }.to raise_error(
         
     | 
| 
       121 
     | 
    
         
            -
                      RuntimeError,
         
     | 
| 
       122 
     | 
    
         
            -
                      'no manifest path provided'
         
     | 
| 
       123 
     | 
    
         
            -
                    )
         
     | 
| 
       124 
     | 
    
         
            -
                  end
         
     | 
| 
       125 
     | 
    
         
            -
                end
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
                context 'when manifest cannot be created at specified path' do
         
     | 
| 
       128 
     | 
    
         
            -
                  let(:file_exist) { false }
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
                  it 'raises cannot find manifest RuntimeError' do
         
     | 
| 
       131 
     | 
    
         
            -
                    expect { described_class.install(args) }.to raise_error(
         
     | 
| 
       132 
     | 
    
         
            -
                      RuntimeError,
         
     | 
| 
       133 
     | 
    
         
            -
                      'cannot find manifest at path/to/current/dir/manifest.json'
         
     | 
| 
       134 
     | 
    
         
            -
                    )
         
     | 
| 
       135 
     | 
    
         
            -
                  end
         
     | 
| 
       136 
     | 
    
         
            -
                end
         
     | 
| 
       137 
     | 
    
         
            -
              end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
              describe '.remove' do
         
     | 
| 
       140 
     | 
    
         
            -
                let(:manifest_name) { 'manifest.json' }
         
     | 
| 
       141 
     | 
    
         
            -
                let(:pwd) { 'path/to/current/dir' }
         
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
                let(:args) { [manifest_name] }
         
     | 
| 
       144 
     | 
    
         
            -
                let(:file_exist) { true }
         
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
     | 
    
         
            -
                let(:cmd) { 'do something' }
         
     | 
| 
       147 
     | 
    
         
            -
                let(:cmds) { [cmd, cmd] }
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
                let(:data) do
         
     | 
| 
       150 
     | 
    
         
            -
                  {
         
     | 
| 
       151 
     | 
    
         
            -
                    'name' => 'test_manifest',
         
     | 
| 
       152 
     | 
    
         
            -
                    'version' => '0.1.0',
         
     | 
| 
       153 
     | 
    
         
            -
                    'steps' => [
         
     | 
| 
       154 
     | 
    
         
            -
                      {
         
     | 
| 
       155 
     | 
    
         
            -
                        'name' => 'remove',
         
     | 
| 
       156 
     | 
    
         
            -
                        'exe' => {
         
     | 
| 
       157 
     | 
    
         
            -
                          'remove' => {
         
     | 
| 
       158 
     | 
    
         
            -
                            'cmd' => cmds
         
     | 
| 
       159 
     | 
    
         
            -
                          }
         
     | 
| 
       160 
     | 
    
         
            -
                        }
         
     | 
| 
       161 
     | 
    
         
            -
                      }
         
     | 
| 
       162 
     | 
    
         
            -
                    ]
         
     | 
| 
       163 
     | 
    
         
            -
                  }
         
     | 
| 
       164 
     | 
    
         
            -
                end
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
                let(:manifest) do
         
     | 
| 
       167 
     | 
    
         
            -
                  GeneSystem::Manifest.new(
         
     | 
| 
       168 
     | 
    
         
            -
                    File.join(pwd, manifest_name),
         
     | 
| 
       169 
     | 
    
         
            -
                    data
         
     | 
| 
       170 
     | 
    
         
            -
                  )
         
     | 
| 
       171 
     | 
    
         
            -
                end
         
     | 
| 
       172 
     | 
    
         
            -
                let(:platform) { double(GeneSystem::Platform) }
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
                before do
         
     | 
| 
       175 
     | 
    
         
            -
                  allow(Dir).to receive(:pwd).and_return(pwd)
         
     | 
| 
       176 
     | 
    
         
            -
                  allow(File).to receive(:exist?).and_return(file_exist)
         
     | 
| 
       177 
     | 
    
         
            -
             
     | 
| 
       178 
     | 
    
         
            -
                  allow(GeneSystem::Manifest).to receive(:new_from_file)
         
     | 
| 
       179 
     | 
    
         
            -
                    .and_return(manifest)
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
                  allow(GeneSystem::Platform).to receive(:new)
         
     | 
| 
       182 
     | 
    
         
            -
                    .and_return(platform)
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
                  allow(platform).to receive(:execute_commands)
         
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
                  allow(GeneSystem::CLI).to receive(:print_message)
         
     | 
| 
       187 
     | 
    
         
            -
                end
         
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
     | 
    
         
            -
                describe 'remooving manifest' do
         
     | 
| 
       190 
     | 
    
         
            -
                  before { described_class.remove(args) }
         
     | 
| 
       191 
     | 
    
         
            -
             
     | 
| 
       192 
     | 
    
         
            -
                  it 'loads manifest' do
         
     | 
| 
       193 
     | 
    
         
            -
                    expect(GeneSystem::Manifest)
         
     | 
| 
       194 
     | 
    
         
            -
                      .to have_received(:new_from_file)
         
     | 
| 
       195 
     | 
    
         
            -
                      .with(File.join(pwd, manifest_name))
         
     | 
| 
       196 
     | 
    
         
            -
                  end
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
                  it 'executes remove on platform' do
         
     | 
| 
       199 
     | 
    
         
            -
                    expect(platform)
         
     | 
| 
       200 
     | 
    
         
            -
                      .to have_received(:execute_commands)
         
     | 
| 
       201 
     | 
    
         
            -
                      .with(cmds)
         
     | 
| 
       202 
     | 
    
         
            -
                  end
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
                  it 'prints success message' do
         
     | 
| 
       205 
     | 
    
         
            -
                    expect(GeneSystem::CLI).to have_received(:print_message)
         
     | 
| 
       206 
     | 
    
         
            -
                      .with("\nmanifest successfully removed")
         
     | 
| 
       207 
     | 
    
         
            -
                  end
         
     | 
| 
       208 
     | 
    
         
            -
                end
         
     | 
| 
       209 
     | 
    
         
            -
             
     | 
| 
       210 
     | 
    
         
            -
                context 'when path is not provided' do
         
     | 
| 
       211 
     | 
    
         
            -
                  it 'raises no manifest path provided runtime error' do
         
     | 
| 
       212 
     | 
    
         
            -
                    expect { described_class.install }.to raise_error(
         
     | 
| 
       213 
     | 
    
         
            -
                      RuntimeError,
         
     | 
| 
       214 
     | 
    
         
            -
                      'no manifest path provided'
         
     | 
| 
       215 
     | 
    
         
            -
                    )
         
     | 
| 
       216 
     | 
    
         
            -
                  end
         
     | 
| 
       217 
     | 
    
         
            -
                end
         
     | 
| 
       218 
     | 
    
         
            -
             
     | 
| 
       219 
     | 
    
         
            -
                context 'when manifest cannot be created at specified path' do
         
     | 
| 
       220 
     | 
    
         
            -
                  let(:file_exist) { false }
         
     | 
| 
       221 
     | 
    
         
            -
             
     | 
| 
       222 
     | 
    
         
            -
                  it 'raises cannot find manifest RuntimeError' do
         
     | 
| 
       223 
     | 
    
         
            -
                    expect { described_class.install(args) }.to raise_error(
         
     | 
| 
       224 
     | 
    
         
            -
                      RuntimeError,
         
     | 
| 
       225 
     | 
    
         
            -
                      'cannot find manifest at path/to/current/dir/manifest.json'
         
     | 
| 
       226 
     | 
    
         
            -
                    )
         
     | 
| 
       227 
     | 
    
         
            -
                  end
         
     | 
| 
       228 
     | 
    
         
            -
                end
         
     | 
| 
       229 
     | 
    
         
            -
              end
         
     | 
| 
       230 
     | 
    
         
            -
            end
         
     |