specify_cli 0.0.5
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/.gitignore +4 -0
- data/.rspec +1 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +117 -0
- data/LICENSE.txt +21 -0
- data/README.rdoc +43 -0
- data/Rakefile +15 -0
- data/bin/specify_cli +248 -0
- data/lib/specify.rb +45 -0
- data/lib/specify/branch_parser.rb +85 -0
- data/lib/specify/cli.rb +11 -0
- data/lib/specify/cli/database_setup.rb +46 -0
- data/lib/specify/cli/stubs.rb +63 -0
- data/lib/specify/cli/viewset.rb +21 -0
- data/lib/specify/configuration.rb +12 -0
- data/lib/specify/configuration/config.rb +120 -0
- data/lib/specify/configuration/db_config.rb +162 -0
- data/lib/specify/configuration/host_config.rb +37 -0
- data/lib/specify/database.rb +140 -0
- data/lib/specify/models.rb +43 -0
- data/lib/specify/models/accession.rb +33 -0
- data/lib/specify/models/agent.rb +138 -0
- data/lib/specify/models/app_resource_data.rb +32 -0
- data/lib/specify/models/app_resource_dir.rb +43 -0
- data/lib/specify/models/auto_numbering_scheme.rb +94 -0
- data/lib/specify/models/collecting_event.rb +38 -0
- data/lib/specify/models/collection.rb +67 -0
- data/lib/specify/models/collection_object.rb +127 -0
- data/lib/specify/models/createable.rb +21 -0
- data/lib/specify/models/determination.rb +63 -0
- data/lib/specify/models/discipline.rb +61 -0
- data/lib/specify/models/division.rb +26 -0
- data/lib/specify/models/geography.rb +5 -0
- data/lib/specify/models/geography/administrative_division.rb +32 -0
- data/lib/specify/models/geography/geographic_name.rb +66 -0
- data/lib/specify/models/geography/geography.rb +23 -0
- data/lib/specify/models/institution.rb +13 -0
- data/lib/specify/models/locality.rb +50 -0
- data/lib/specify/models/preparation.rb +53 -0
- data/lib/specify/models/preparation_type.rb +30 -0
- data/lib/specify/models/record_set.rb +55 -0
- data/lib/specify/models/record_set_item.rb +29 -0
- data/lib/specify/models/taxonomy.rb +6 -0
- data/lib/specify/models/taxonomy/common_name.rb +14 -0
- data/lib/specify/models/taxonomy/rank.rb +31 -0
- data/lib/specify/models/taxonomy/taxon.rb +54 -0
- data/lib/specify/models/taxonomy/taxonomy.rb +21 -0
- data/lib/specify/models/tree_queryable.rb +55 -0
- data/lib/specify/models/updateable.rb +20 -0
- data/lib/specify/models/user.rb +104 -0
- data/lib/specify/models/view_set_object.rb +32 -0
- data/lib/specify/number_format.rb +60 -0
- data/lib/specify/services.rb +18 -0
- data/lib/specify/services/service.rb +51 -0
- data/lib/specify/services/stub_generator.rb +291 -0
- data/lib/specify/services/view_loader.rb +177 -0
- data/lib/specify/session.rb +77 -0
- data/lib/specify/user_type.rb +61 -0
- data/lib/specify/version.rb +19 -0
- data/man/specify_cli-database.1 +60 -0
- data/man/specify_cli-database.1.html +137 -0
- data/man/specify_cli-database.1.ronn +53 -0
- data/man/specify_cli-repository.1 +55 -0
- data/man/specify_cli-repository.1.html +128 -0
- data/man/specify_cli-repository.1.ronn +42 -0
- data/man/specify_cli-stubs.1 +177 -0
- data/man/specify_cli-stubs.1.html +239 -0
- data/man/specify_cli-stubs.1.ronn +147 -0
- data/man/specify_cli-viewset.1 +92 -0
- data/man/specify_cli-viewset.1.html +154 -0
- data/man/specify_cli-viewset.1.ronn +72 -0
- data/man/specify_cli.1 +213 -0
- data/man/specify_cli.1.html +252 -0
- data/man/specify_cli.1.ronn +157 -0
- data/spec/branch_parser_spec.rb +94 -0
- data/spec/cli/stubs_spec.rb +44 -0
- data/spec/configuration/config_spec.rb +269 -0
- data/spec/configuration/db_config_spec.rb +299 -0
- data/spec/configuration/host_config_spec.rb +64 -0
- data/spec/database_spec.rb +83 -0
- data/spec/examples.txt +217 -0
- data/spec/helpers.rb +15 -0
- data/spec/models/app_resource_data_spec.rb +38 -0
- data/spec/models/app_resource_dir_spec.rb +8 -0
- data/spec/models/auto_numbering_scheme_spec.rb +78 -0
- data/spec/models/collection_object_spec.rb +92 -0
- data/spec/models/collection_spec.rb +32 -0
- data/spec/models/discipline_spec.rb +31 -0
- data/spec/models/record_set_spec.rb +18 -0
- data/spec/models/user_spec.rb +182 -0
- data/spec/models/view_set_object_spec.rb +70 -0
- data/spec/number_format_spec.rb +43 -0
- data/spec/services/stub_generator_spec.rb +635 -0
- data/spec/services/view_loader_spec.rb +436 -0
- data/spec/session_spec.rb +105 -0
- data/spec/spec_helper.rb +116 -0
- data/spec/support/db.yml +12 -0
- data/spec/support/stub.yaml +17 -0
- data/spec/support/stub_locality.yaml +19 -0
- data/spec/support/viewsets/paleo.views.xml +30 -0
- data/spec/support/viewsets/paleo.xml +30 -0
- data/spec/user_type_spec.rb +79 -0
- data/specify_cli.gemspec +27 -0
- data/specify_cli.rdoc +1 -0
- metadata +246 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 8799a93ccc9c189a5c81529dc68373ed22ca8c073ac9589c1b2016a6cb09e352
|
|
4
|
+
data.tar.gz: 78d18d4eab1eda1afa972040348ca5d4ad0520ae26c7504f287ff165f80739ec
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: e1dfe87fffb47d79d871908591f200ba265f335cf48dad313e9e3ca84a871c1ca5109cf5c71ce852d0cdf8207e399d152d515524f708ced5c5b6262cffd9cf5c
|
|
7
|
+
data.tar.gz: e3c08eb2cb4086ea1416e396a140d5b5b28ffdc72d02f3dc12519864a1e8d1273e24a568cd255598aa27afca99a4f7a46ac03eb020672467450fcc9c246d50da
|
data/.gitignore
ADDED
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--require spec_helper
|
data/Gemfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
source 'https://rubygems.org'
|
|
4
|
+
|
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|
6
|
+
|
|
7
|
+
# testing
|
|
8
|
+
gem 'pry'
|
|
9
|
+
gem 'rspec'
|
|
10
|
+
gem 'rubocop-rspec'
|
|
11
|
+
gem 'pry-byebug'
|
|
12
|
+
|
|
13
|
+
# documentation
|
|
14
|
+
gem 'gem-man'
|
|
15
|
+
gem 'ronn'
|
|
16
|
+
|
|
17
|
+
gemspec
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
specify_cli (0.0.5)
|
|
5
|
+
gli (= 2.17.2)
|
|
6
|
+
mysql2 (= 0.5.2)
|
|
7
|
+
sequel (= 5.11.0)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
aruba (0.14.6)
|
|
13
|
+
childprocess (>= 0.6.3, < 0.10.0)
|
|
14
|
+
contracts (~> 0.9)
|
|
15
|
+
cucumber (>= 1.3.19)
|
|
16
|
+
ffi (~> 1.9.10)
|
|
17
|
+
rspec-expectations (>= 2.99)
|
|
18
|
+
thor (~> 0.19)
|
|
19
|
+
ast (2.4.0)
|
|
20
|
+
backports (3.11.4)
|
|
21
|
+
builder (3.2.3)
|
|
22
|
+
byebug (10.0.2)
|
|
23
|
+
childprocess (0.9.0)
|
|
24
|
+
ffi (~> 1.0, >= 1.0.11)
|
|
25
|
+
coderay (1.1.2)
|
|
26
|
+
contracts (0.16.0)
|
|
27
|
+
cucumber (3.1.2)
|
|
28
|
+
builder (>= 2.1.2)
|
|
29
|
+
cucumber-core (~> 3.2.0)
|
|
30
|
+
cucumber-expressions (~> 6.0.1)
|
|
31
|
+
cucumber-wire (~> 0.0.1)
|
|
32
|
+
diff-lcs (~> 1.3)
|
|
33
|
+
gherkin (~> 5.1.0)
|
|
34
|
+
multi_json (>= 1.7.5, < 2.0)
|
|
35
|
+
multi_test (>= 0.1.2)
|
|
36
|
+
cucumber-core (3.2.0)
|
|
37
|
+
backports (>= 3.8.0)
|
|
38
|
+
cucumber-tag_expressions (~> 1.1.0)
|
|
39
|
+
gherkin (>= 5.0.0)
|
|
40
|
+
cucumber-expressions (6.0.1)
|
|
41
|
+
cucumber-tag_expressions (1.1.1)
|
|
42
|
+
cucumber-wire (0.0.1)
|
|
43
|
+
diff-lcs (1.3)
|
|
44
|
+
ffi (1.9.25)
|
|
45
|
+
gem-man (0.3.0)
|
|
46
|
+
gherkin (5.1.0)
|
|
47
|
+
gli (2.17.2)
|
|
48
|
+
hpricot (0.8.6)
|
|
49
|
+
jaro_winkler (1.5.1)
|
|
50
|
+
method_source (0.9.0)
|
|
51
|
+
multi_json (1.13.1)
|
|
52
|
+
multi_test (0.1.2)
|
|
53
|
+
mustache (1.0.5)
|
|
54
|
+
mysql2 (0.5.2)
|
|
55
|
+
parallel (1.12.1)
|
|
56
|
+
parser (2.5.1.2)
|
|
57
|
+
ast (~> 2.4.0)
|
|
58
|
+
powerpack (0.1.2)
|
|
59
|
+
pry (0.11.3)
|
|
60
|
+
coderay (~> 1.1.0)
|
|
61
|
+
method_source (~> 0.9.0)
|
|
62
|
+
pry-byebug (3.6.0)
|
|
63
|
+
byebug (~> 10.0)
|
|
64
|
+
pry (~> 0.10)
|
|
65
|
+
rainbow (3.0.0)
|
|
66
|
+
rake (12.3.1)
|
|
67
|
+
rdiscount (2.2.0.1)
|
|
68
|
+
rdoc (6.0.4)
|
|
69
|
+
ronn (0.7.3)
|
|
70
|
+
hpricot (>= 0.8.2)
|
|
71
|
+
mustache (>= 0.7.0)
|
|
72
|
+
rdiscount (>= 1.5.8)
|
|
73
|
+
rspec (3.8.0)
|
|
74
|
+
rspec-core (~> 3.8.0)
|
|
75
|
+
rspec-expectations (~> 3.8.0)
|
|
76
|
+
rspec-mocks (~> 3.8.0)
|
|
77
|
+
rspec-core (3.8.0)
|
|
78
|
+
rspec-support (~> 3.8.0)
|
|
79
|
+
rspec-expectations (3.8.1)
|
|
80
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
81
|
+
rspec-support (~> 3.8.0)
|
|
82
|
+
rspec-mocks (3.8.0)
|
|
83
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
84
|
+
rspec-support (~> 3.8.0)
|
|
85
|
+
rspec-support (3.8.0)
|
|
86
|
+
rubocop (0.58.2)
|
|
87
|
+
jaro_winkler (~> 1.5.1)
|
|
88
|
+
parallel (~> 1.10)
|
|
89
|
+
parser (>= 2.5, != 2.5.1.1)
|
|
90
|
+
powerpack (~> 0.1)
|
|
91
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
92
|
+
ruby-progressbar (~> 1.7)
|
|
93
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
94
|
+
rubocop-rspec (1.29.0)
|
|
95
|
+
rubocop (>= 0.58.0)
|
|
96
|
+
ruby-progressbar (1.10.0)
|
|
97
|
+
sequel (5.11.0)
|
|
98
|
+
thor (0.20.0)
|
|
99
|
+
unicode-display_width (1.4.0)
|
|
100
|
+
|
|
101
|
+
PLATFORMS
|
|
102
|
+
ruby
|
|
103
|
+
|
|
104
|
+
DEPENDENCIES
|
|
105
|
+
aruba
|
|
106
|
+
gem-man
|
|
107
|
+
pry
|
|
108
|
+
pry-byebug
|
|
109
|
+
rake
|
|
110
|
+
rdoc
|
|
111
|
+
ronn
|
|
112
|
+
rspec
|
|
113
|
+
rubocop-rspec
|
|
114
|
+
specify_cli!
|
|
115
|
+
|
|
116
|
+
BUNDLED WITH
|
|
117
|
+
1.16.3
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018 Martin Stein
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
= specify_cli - A command line interface for _Specify_
|
|
2
|
+
|
|
3
|
+
Author:: Martin Stein
|
|
4
|
+
Copyright:: Copyright (c) 2018 by Martin Stein
|
|
5
|
+
License:: Distributes under the MIT License, see LICENSE.txt in the source
|
|
6
|
+
distribution
|
|
7
|
+
|
|
8
|
+
specify_cli is a tool that allows certain tasks in a Specify database
|
|
9
|
+
(http://www.sustain.specifysoftware.org) to be carried out from the command
|
|
10
|
+
line.
|
|
11
|
+
Currently supported tasks:
|
|
12
|
+
- upload of views to the database
|
|
13
|
+
- generation of stub records
|
|
14
|
+
|
|
15
|
+
== Install
|
|
16
|
+
|
|
17
|
+
Install:
|
|
18
|
+
|
|
19
|
+
Build with
|
|
20
|
+
|
|
21
|
+
rake package
|
|
22
|
+
|
|
23
|
+
Then install the gem.
|
|
24
|
+
|
|
25
|
+
== Use
|
|
26
|
+
|
|
27
|
+
For more help:
|
|
28
|
+
|
|
29
|
+
specify_cli --help
|
|
30
|
+
gem man specify_cli
|
|
31
|
+
|
|
32
|
+
== For developers
|
|
33
|
+
|
|
34
|
+
Install bundler:
|
|
35
|
+
|
|
36
|
+
gem install bundler
|
|
37
|
+
|
|
38
|
+
Install development dependencies
|
|
39
|
+
|
|
40
|
+
bundle install
|
|
41
|
+
|
|
42
|
+
:include:specify_cli.rdoc
|
|
43
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'rake/clean'
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'rubygems/package_task'
|
|
4
|
+
require 'rdoc/task'
|
|
5
|
+
Rake::RDocTask.new do |rd|
|
|
6
|
+
rd.main = "README.rdoc"
|
|
7
|
+
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
|
8
|
+
rd.title = 'Your application title'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
spec = eval(File.read('specify_cli.gemspec'))
|
|
12
|
+
|
|
13
|
+
Gem::PackageTask.new(spec) do |pkg|
|
|
14
|
+
end
|
|
15
|
+
task :default => :package
|
data/bin/specify_cli
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'gli'
|
|
5
|
+
require 'specify'
|
|
6
|
+
|
|
7
|
+
include GLI::App
|
|
8
|
+
|
|
9
|
+
program_desc Specify::DESCRIPTION
|
|
10
|
+
|
|
11
|
+
version Specify::VERSION
|
|
12
|
+
|
|
13
|
+
subcommand_option_handling :normal
|
|
14
|
+
arguments :strict
|
|
15
|
+
|
|
16
|
+
sessions = []
|
|
17
|
+
script_dir = Dir.pwd
|
|
18
|
+
|
|
19
|
+
desc 'Connect to host.'
|
|
20
|
+
arg_name '[name]'
|
|
21
|
+
default_value 'localhost'
|
|
22
|
+
flag %i[H host]
|
|
23
|
+
|
|
24
|
+
desc 'Port number to use for connection.'
|
|
25
|
+
arg_name '[number]'
|
|
26
|
+
default_value '3306'
|
|
27
|
+
flag %i[p port]
|
|
28
|
+
|
|
29
|
+
desc 'MySQL/MariaDB user for login.'
|
|
30
|
+
arg_name '[name]'
|
|
31
|
+
flag %i[u user]
|
|
32
|
+
|
|
33
|
+
desc 'Password to use when connecting to server. Omit for password prompt.'
|
|
34
|
+
arg_name '[name]'
|
|
35
|
+
flag %i[P password]
|
|
36
|
+
|
|
37
|
+
desc 'Database to use.'
|
|
38
|
+
arg_name '[name]'
|
|
39
|
+
flag %i[D database]
|
|
40
|
+
|
|
41
|
+
desc 'Specify User used for the session.'
|
|
42
|
+
arg_name '[name]'
|
|
43
|
+
flag %i[U specify_user]
|
|
44
|
+
|
|
45
|
+
desc 'YAML File with settings for database connections and directory mappings.'
|
|
46
|
+
arg_name '[path]'
|
|
47
|
+
default_value File.expand_path('~/.specify_dbs.rc.yaml')
|
|
48
|
+
flag %i[c db_config]
|
|
49
|
+
|
|
50
|
+
desc 'Add a database configuration.'
|
|
51
|
+
long_desc <<~HEREDOC
|
|
52
|
+
Add information to work with a Specify database. Use the global option -H to
|
|
53
|
+
provide the host.
|
|
54
|
+
HEREDOC
|
|
55
|
+
arg_name '[database]'
|
|
56
|
+
command [:database, :d] do |c|
|
|
57
|
+
c.action do |global_options, options, args|
|
|
58
|
+
host = global_options[:host]
|
|
59
|
+
database = args.shift
|
|
60
|
+
|
|
61
|
+
file = File.expand_path(global_options[:db_config])
|
|
62
|
+
|
|
63
|
+
Specify::CLI.db_config! file, global_options
|
|
64
|
+
|
|
65
|
+
db_config = Specify::Configuration::DBConfig.new host, database, file
|
|
66
|
+
|
|
67
|
+
if db_config.known?
|
|
68
|
+
STDERR.puts "#{database} on #{host} is already configured"
|
|
69
|
+
exit 0
|
|
70
|
+
else
|
|
71
|
+
unless db_config.host?
|
|
72
|
+
exit 1 unless Specify::CLI.configure_host(db_config)
|
|
73
|
+
end
|
|
74
|
+
Specify::CLI.configure_database db_config
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
desc 'Map a git repository to a host for automatic target resolution.'
|
|
80
|
+
long_desc <<~HEREDOC
|
|
81
|
+
Maps the path of a directory containing a Git repository with Specify resource
|
|
82
|
+
files to a hostname.
|
|
83
|
+
HEREDOC
|
|
84
|
+
arg_name '[repository_name]'
|
|
85
|
+
command [:repository, :r] do |c|
|
|
86
|
+
c.desc 'Map the current directory/repository to the host'
|
|
87
|
+
c.switch %i[c current]
|
|
88
|
+
|
|
89
|
+
c.action do |global_options, options, args|
|
|
90
|
+
host = global_options[:host]
|
|
91
|
+
dir = options[:current] ? Dir.pwd : File.expand_path(args.shift)
|
|
92
|
+
|
|
93
|
+
file = File.expand_path(global_options[:db_config])
|
|
94
|
+
|
|
95
|
+
Specify::CLI.db_config! file, global_options
|
|
96
|
+
|
|
97
|
+
host_config = Specify::Configuration::HostConfig.new file
|
|
98
|
+
|
|
99
|
+
unless host_config.directory? dir
|
|
100
|
+
host_config.map_directory dir, host
|
|
101
|
+
host_config.save
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
desc 'Create stub records'
|
|
107
|
+
long_desc <<~HEREDOC
|
|
108
|
+
The stubs command creates n stub records (where n is the number passed as the
|
|
109
|
+
[count] argument) in the collection passed as the [collection] argument.
|
|
110
|
+
Provide host, database, and connection information using global options.
|
|
111
|
+
HEREDOC
|
|
112
|
+
arg_name '[collection] [count]'
|
|
113
|
+
command [:stubs, :s] do |c|
|
|
114
|
+
c.desc 'Load stub record information from a YAML file.'
|
|
115
|
+
c.arg_name '[yaml_file]'
|
|
116
|
+
c.flag %i[f file]
|
|
117
|
+
|
|
118
|
+
c.desc 'Specify user appearing as cataloger and owner of the record set.'
|
|
119
|
+
c.arg_name '[name]'
|
|
120
|
+
c.flag %i[c cataloger]
|
|
121
|
+
|
|
122
|
+
c.desc 'Name of the datas set (record set) generated.'
|
|
123
|
+
c.arg_name '[name]'
|
|
124
|
+
c.flag %i[d dataset]
|
|
125
|
+
|
|
126
|
+
c.desc 'Accession number for the accession to which the stub records belong.'
|
|
127
|
+
c.arg_name '[accession_number]'
|
|
128
|
+
c.flag %i[a accession]
|
|
129
|
+
|
|
130
|
+
c.desc 'Geographic and locality information for the stub records.'
|
|
131
|
+
c.arg_name '[geography]'
|
|
132
|
+
c.flag %i[g geography]
|
|
133
|
+
|
|
134
|
+
c.desc 'Default locality name if geographic information has no locality.'
|
|
135
|
+
c.arg_name '[name]'
|
|
136
|
+
c.flag %i[l locality]
|
|
137
|
+
|
|
138
|
+
c.desc 'Taxon to which stub records are determined.'
|
|
139
|
+
c.arg_name 'taxon'
|
|
140
|
+
c.flag %i[t taxon]
|
|
141
|
+
|
|
142
|
+
c.desc 'Preparation type for the stub records, if they have preparations.'
|
|
143
|
+
c.arg_name '[name]'
|
|
144
|
+
c.flag %i[p preptype]
|
|
145
|
+
|
|
146
|
+
c.desc 'Number of preparation items (requires --preptype to be set).'
|
|
147
|
+
c.arg_name '[number]'
|
|
148
|
+
c.flag %i[n prepcount]
|
|
149
|
+
|
|
150
|
+
c.action do |global_options, options, args|
|
|
151
|
+
count = args.pop.to_i
|
|
152
|
+
params = if options[:file]
|
|
153
|
+
file = File.expand_path(options[:file])
|
|
154
|
+
Psych.load_file(file)
|
|
155
|
+
else
|
|
156
|
+
Specify::CLI.wrap_args(global_options, args, options.compact)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
stub_generator = Specify::Service::StubGenerator.unwrap params
|
|
160
|
+
|
|
161
|
+
sessions << stub_generator.session
|
|
162
|
+
|
|
163
|
+
Specify::CLI.make_stubs stub_generator, count
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
desc 'Upload a view to the database.'
|
|
168
|
+
long_desc <<~HEREDOC
|
|
169
|
+
Uploads a view definition file (.views.xml) to the database. Viewsets can be
|
|
170
|
+
uploaded to either of the following levels: discipline, collection, user type,
|
|
171
|
+
user.
|
|
172
|
+
HEREDOC
|
|
173
|
+
arg_name '[collection] [file]'
|
|
174
|
+
command [:viewset, :vs] do |c|
|
|
175
|
+
c.desc 'Use current branch to resolve target.'
|
|
176
|
+
c.switch :b
|
|
177
|
+
|
|
178
|
+
c.desc 'Resolve target from branch name.'
|
|
179
|
+
c.arg_name '[name]'
|
|
180
|
+
c.flag %i[B branch]
|
|
181
|
+
|
|
182
|
+
c.desc 'Upload to collection level.'
|
|
183
|
+
c.switch :c
|
|
184
|
+
|
|
185
|
+
c.desc 'Upload to discipline level.'
|
|
186
|
+
c.switch :d
|
|
187
|
+
|
|
188
|
+
c.desc 'Upload to specific user type [name] in the collection.'
|
|
189
|
+
c.arg_name '[name]'
|
|
190
|
+
c.flag %i[t user_type]
|
|
191
|
+
|
|
192
|
+
c.desc 'Upload to specify user [name] in the collection.'
|
|
193
|
+
c.arg_name '[name]'
|
|
194
|
+
c.flag %i[u user]
|
|
195
|
+
|
|
196
|
+
c.action do |global_options, options, args|
|
|
197
|
+
file = File.expand_path(args.pop)
|
|
198
|
+
collection = args.shift
|
|
199
|
+
config = global_options[:db_config]
|
|
200
|
+
params = { host: global_options[:host],
|
|
201
|
+
database: global_options[:database],
|
|
202
|
+
collection: collection,
|
|
203
|
+
specify_user: global_options[:specify_user],
|
|
204
|
+
config: config }
|
|
205
|
+
|
|
206
|
+
view_loader = if options[:b] || options[:B]
|
|
207
|
+
path = File.dirname(File.expand_path(file))
|
|
208
|
+
Dir.chdir path unless script_dir == path
|
|
209
|
+
Specify::Service::ViewLoader.from_branch path: path,
|
|
210
|
+
name: options[:B],
|
|
211
|
+
config: config
|
|
212
|
+
else
|
|
213
|
+
raise 'collection required' unless collection
|
|
214
|
+
params[:level] = Specify::CLI.level options
|
|
215
|
+
Specify::Service::ViewLoader.new params
|
|
216
|
+
end
|
|
217
|
+
sessions << view_loader.session
|
|
218
|
+
view_loader.import file
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
pre do |global, command, options, args|
|
|
223
|
+
# Pre logic here
|
|
224
|
+
# Return true to proceed; false to abort and not call the
|
|
225
|
+
# chosen command
|
|
226
|
+
# Use skips_pre before a command to skip this block
|
|
227
|
+
# on that command only
|
|
228
|
+
true
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
post do |global, command, options, args|
|
|
232
|
+
# Post logic here
|
|
233
|
+
# Use skips_post before a command to skip this
|
|
234
|
+
# block on that command only
|
|
235
|
+
sessions.each(&:close)
|
|
236
|
+
Dir.chdir script_dir unless script_dir == Dir.pwd
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
on_error do |exception|
|
|
240
|
+
# Error logic here
|
|
241
|
+
# return false to skip default error handling
|
|
242
|
+
|
|
243
|
+
sessions.each(&:close)
|
|
244
|
+
Dir.chdir script_dir unless script_dir == Dir.pwd
|
|
245
|
+
true
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
exit run(ARGV)
|