urbanopt-cli 0.11.1 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/nightly_ci_build.yml +9 -6
- data/CHANGELOG.md +13 -0
- data/CMakeLists.txt +12 -7
- data/FindOpenStudioSDK.cmake +5 -0
- data/Gemfile +3 -3
- data/bin/console +0 -7
- data/example_files/Gemfile +3 -3
- data/example_files/mappers/Baseline.rb +1 -1
- data/example_files/mappers/residential/template/util.rb +0 -2
- data/example_files/mappers/residential/util.rb +0 -1
- data/example_files/measures/BuildResidentialModel/measure.rb +3 -4
- data/example_files/measures/BuildResidentialModel/tests/test_build_residential_model.rb +23 -23
- data/example_files/python_deps/dependencies.json +4 -4
- data/example_files/python_deps/install_python.ps1 +1 -1
- data/example_files/reopt/base_assumptions.json +121 -144
- data/example_files/reopt/multiPV_assumptions.json +160 -180
- data/lib/uo_cli/version.rb +1 -1
- data/lib/uo_cli.rb +89 -43
- data/scripts/setup-env-gitbash.sh +1 -2
- data/scripts/setup-env-unix.sh +1 -1
- data/scripts/setup-env.bat +3 -4
- data/scripts/setup-env.ps1 +6 -7
- data/uo_cli.gemspec +3 -3
- metadata +8 -9
- data/example_files/Gemfile.lock +0 -177
data/lib/uo_cli.rb
CHANGED
@@ -66,6 +66,8 @@ module URBANopt
|
|
66
66
|
send("opt_#{@command}") ## dispatch to command handling method
|
67
67
|
rescue NoMethodError
|
68
68
|
abort('Invalid command, please run uo --help for a list of available commands')
|
69
|
+
rescue StandardError => e
|
70
|
+
puts "\nERROR: #{e.message}"
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
@@ -288,26 +290,26 @@ module URBANopt
|
|
288
290
|
@subopts = Optimist.options do
|
289
291
|
banner "\nURBANopt #{@command}:\n \n"
|
290
292
|
|
291
|
-
opt :default, "\nStandard post-processing for your scenario"
|
293
|
+
opt :default, "\nStandard post-processing for your scenario", short: :d
|
292
294
|
|
293
|
-
opt :opendss, "\nPost-process with OpenDSS"
|
295
|
+
opt :opendss, "\nPost-process with OpenDSS", short: :o
|
294
296
|
|
295
|
-
opt :disco, "\nPost-process with DISCO"
|
297
|
+
opt :disco, "\nPost-process with DISCO", short: :i
|
296
298
|
|
297
299
|
opt :reopt_scenario, "\nOptimize for entire scenario with REopt. Used with the --reopt-scenario-assumptions-file to specify the assumptions to use.\n" \
|
298
|
-
'Example: uo process --reopt-scenario'
|
300
|
+
'Example: uo process --reopt-scenario', short: :r
|
299
301
|
|
300
302
|
opt :reopt_feature, "\nOptimize for each building individually with REopt\n" \
|
301
|
-
'Example: uo process --reopt-feature'
|
303
|
+
'Example: uo process --reopt-feature', short: :e
|
302
304
|
|
303
305
|
opt :reopt_resilience, "\nInclude resilience reporting in REopt optimization\n" \
|
304
|
-
'Example: uo process --reopt-scenario --reopt-resilience'
|
306
|
+
'Example: uo process --reopt-scenario --reopt-resilience', short: :p
|
305
307
|
|
306
308
|
opt :reopt_keep_existing, "\nKeep existing reopt feature optimizations instead of rerunning them to avoid rate limit issues.\n" \
|
307
309
|
'Example: uo process --reopt-feature --reopt-keep-existing', short: :k
|
308
310
|
|
309
311
|
opt :with_database, "\nInclude a sql database output of post-processed results\n" \
|
310
|
-
'Example: uo process --default --with-database'
|
312
|
+
'Example: uo process --default --with-database', short: :w
|
311
313
|
|
312
314
|
opt :reopt_scenario_assumptions_file, "\nPath to the scenario REopt assumptions JSON file you want to use. Use with the --reopt-scenario post-processor.\n" \
|
313
315
|
'If not specified, the reopt/base_assumptions.json file will be used', type: String, short: :a
|
@@ -362,23 +364,25 @@ module URBANopt
|
|
362
364
|
@subopts = Optimist.options do
|
363
365
|
banner "\nURBANopt #{@command}:\n \n"
|
364
366
|
|
365
|
-
opt :
|
367
|
+
opt :sys_param, "\nBuild a system parameters JSON config file for Modelica District Energy System or Ground Heat Exchanger simulation using URBANopt SDK outputs\n" \
|
366
368
|
"Provide path/name of json file to be created\n" \
|
367
|
-
'Example: uo des_params --sys-param
|
369
|
+
'Example: uo des_params --sys-param path/to/sys_params.json', type: String, required: true, short: :y
|
368
370
|
|
369
371
|
opt :scenario, "\nPath to the scenario CSV file\n" \
|
370
|
-
"Example: uo des_params --sys-param
|
372
|
+
"Example: uo des_params --sys-param path/to/sys_params.json --scenario path/to/baseline_scenario.csv\n", type: String, required: true, short: :s
|
371
373
|
|
372
374
|
opt :feature, "\nPath to the feature JSON file\n" \
|
373
|
-
"Example: uo des_params --sys-param
|
375
|
+
"Example: uo des_params --sys-param path/to/sys_params.json --feature path/to/example_project.json\n", type: String, required: true, short: :f
|
374
376
|
|
375
377
|
opt :model_type, "\nSelection for which kind of DES simulation to perform\n" \
|
376
378
|
"Valid choices: 'time_series'", type: String, default: 'time_series'
|
377
379
|
|
378
|
-
opt :
|
380
|
+
opt :district_type, "\nSelection for which kind of district system parameters to generate\n" \
|
381
|
+
"Example: uo des_params --sys-param path/to/sys_params.json --feature path/to/example_project.json --district-type 5G_ghe\n" \
|
382
|
+
'If not specified, the default 4G district type will be used', type: String, required: false, short: :t
|
379
383
|
|
380
|
-
opt :overwrite, "\
|
381
|
-
'Example: uo des_params --sys-param
|
384
|
+
opt :overwrite, "\nDelete and rebuild existing sys-param file\n", short: :o
|
385
|
+
'Example: uo des_params --sys-param path/to/sys_params.json --feature path/to/example_project.json --overwrite'
|
382
386
|
end
|
383
387
|
end
|
384
388
|
|
@@ -386,17 +390,17 @@ module URBANopt
|
|
386
390
|
@subopts = Optimist.options do
|
387
391
|
banner "\nURBANopt #{@command}:\n"
|
388
392
|
|
389
|
-
opt :sys_param, "
|
393
|
+
opt :sys_param, "\nPath to system parameters config file, possibly created with 'des_params' command in this CLI\n" \
|
390
394
|
"Example: uo des_create --sys-param system_parameters.json\n", type: String, required: true, short: :y
|
391
395
|
|
392
|
-
opt :feature, "
|
396
|
+
opt :feature, "\nPath to the feature JSON file\n" \
|
393
397
|
'Example: uo des_create --feature path/to/example_project.json', type: String, required: true, short: :f
|
394
398
|
|
395
399
|
opt :des_name, "\nPath to Modelica project dir to be created\n" \
|
396
400
|
'Example: uo des_create --des-name path/to/example_modelica_project', type: String, required: true, short: :n
|
397
401
|
|
398
402
|
opt :overwrite, "\nDelete and rebuild existing model directory\n", short: :o
|
399
|
-
|
403
|
+
'Example: uo des_create --des-name path/to/example_modelica_project --overwrite'
|
400
404
|
end
|
401
405
|
end
|
402
406
|
|
@@ -438,6 +442,8 @@ module URBANopt
|
|
438
442
|
end
|
439
443
|
rescue NoMethodError
|
440
444
|
abort('Invalid command, please run uo --help for a list of available commands')
|
445
|
+
rescue StandardError => e
|
446
|
+
puts "\nERROR: #{e.message}"
|
441
447
|
end
|
442
448
|
|
443
449
|
# FIXME: Can this be combined with the above block? This isn't very DRY
|
@@ -468,9 +474,11 @@ module URBANopt
|
|
468
474
|
|
469
475
|
feature_file = URBANopt::GeoJSON::GeoFile.from_file(featurefile)
|
470
476
|
if @opthash.subopts[:reopt] == true || @opthash.subopts[:reopt_scenario] == true || @opthash.subopts[:reopt_feature] == true
|
471
|
-
|
472
|
-
|
473
|
-
|
477
|
+
parsed_scenario_file = CSV.read(csv_file, headers: true, col_sep: ',')
|
478
|
+
# TODO: determine what to do if multiple assumptions are provided
|
479
|
+
# num_unique_reopt_assumptions = parsed_scenario_file['REopt Assumptions'].tally.size
|
480
|
+
# Use the first assumption as the default
|
481
|
+
reopt_assumptions_filename = parsed_scenario_file['REopt Assumptions'][0]
|
474
482
|
scenario_output = URBANopt::Scenario::REoptScenarioCSV.new(
|
475
483
|
@scenario_name.downcase,
|
476
484
|
@root_dir,
|
@@ -509,6 +517,8 @@ module URBANopt
|
|
509
517
|
# Rescue if file isn't json
|
510
518
|
rescue JSON::ParserError => e
|
511
519
|
abort("\nOops! You didn't provide a json file. Please provide path to the geojson feature_file")
|
520
|
+
rescue StandardError => e
|
521
|
+
puts "\nERROR: #{e.message}"
|
512
522
|
end
|
513
523
|
Dir["#{@feature_path}/mappers/*.rb"].each do |mapper_file|
|
514
524
|
mapper_name = File.basename(mapper_file, File.extname(mapper_file))
|
@@ -536,6 +546,8 @@ module URBANopt
|
|
536
546
|
# Rescue if json isn't a geojson feature_file
|
537
547
|
rescue NoMethodError
|
538
548
|
abort("\nOops! You didn't provde a valid feature_file. Please provide path to the geojson feature_file")
|
549
|
+
rescue StandardError => e
|
550
|
+
puts "\nERROR: #{e.message}"
|
539
551
|
end
|
540
552
|
end
|
541
553
|
end
|
@@ -936,7 +948,7 @@ module URBANopt
|
|
936
948
|
|
937
949
|
# Check Python
|
938
950
|
def self.check_python(python_only: false)
|
939
|
-
results = { python: false, pvars: [], message:
|
951
|
+
results = { python: false, pvars: [], message: [], python_deps: false, result: false }
|
940
952
|
puts 'Checking system.....'
|
941
953
|
pvars = setup_python_variables
|
942
954
|
results[:pvars] = pvars
|
@@ -944,7 +956,7 @@ module URBANopt
|
|
944
956
|
# check vars
|
945
957
|
if pvars[:python_path].nil? || pvars[:pip_path].nil?
|
946
958
|
# need to install
|
947
|
-
results[:message]
|
959
|
+
results[:message] << 'Python paths have not yet been initialized with URBANopt.'
|
948
960
|
puts results[:message]
|
949
961
|
return results
|
950
962
|
end
|
@@ -954,7 +966,7 @@ module URBANopt
|
|
954
966
|
if stderr.empty?
|
955
967
|
puts "...python found at #{pvars[:python_path]}"
|
956
968
|
else
|
957
|
-
results[:message]
|
969
|
+
results[:message] << "ERROR installing python: #{stderr}"
|
958
970
|
puts results[:message]
|
959
971
|
return results
|
960
972
|
end
|
@@ -964,7 +976,7 @@ module URBANopt
|
|
964
976
|
if stderr.empty?
|
965
977
|
puts "...pip found at #{pvars[:pip_path]}"
|
966
978
|
else
|
967
|
-
results[:message]
|
979
|
+
results[:message] << "ERROR finding pip: #{stderr}"
|
968
980
|
puts results[:message]
|
969
981
|
return results
|
970
982
|
end
|
@@ -984,6 +996,12 @@ module URBANopt
|
|
984
996
|
else
|
985
997
|
stdout, stderr, status = Open3.capture3("#{pvars[:pip_path]} show #{dep[:name]}")
|
986
998
|
end
|
999
|
+
if @opthash.subopts[:verbose]
|
1000
|
+
puts dep[:name]
|
1001
|
+
puts "stdout: #{stdout}"
|
1002
|
+
puts "status: #{status}"
|
1003
|
+
end
|
1004
|
+
|
987
1005
|
if stderr.empty?
|
988
1006
|
# check versions
|
989
1007
|
m = stdout.match(/^Version: (\S{3,}$)/)
|
@@ -998,14 +1016,17 @@ module URBANopt
|
|
998
1016
|
end
|
999
1017
|
end
|
1000
1018
|
if err
|
1001
|
-
results[:message]
|
1019
|
+
results[:message] << "incorrect version found for #{dep[:name]}...expecting version #{dep[:version]}"
|
1002
1020
|
puts results[:message]
|
1003
1021
|
errors << stderr
|
1004
1022
|
end
|
1005
1023
|
else
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1024
|
+
# ignore warnings
|
1025
|
+
unless stderr.include? 'WARNING:'
|
1026
|
+
results[:message] << stderr
|
1027
|
+
puts results[:message]
|
1028
|
+
errors << stderr
|
1029
|
+
end
|
1009
1030
|
end
|
1010
1031
|
end
|
1011
1032
|
if errors.empty?
|
@@ -1013,8 +1034,11 @@ module URBANopt
|
|
1013
1034
|
end
|
1014
1035
|
end
|
1015
1036
|
|
1016
|
-
# all is good
|
1017
|
-
results[:
|
1037
|
+
# all is good if messages are empty
|
1038
|
+
if results[:message].empty?
|
1039
|
+
results[:result] = true
|
1040
|
+
end
|
1041
|
+
|
1018
1042
|
return results
|
1019
1043
|
end
|
1020
1044
|
|
@@ -1113,7 +1137,7 @@ module URBANopt
|
|
1113
1137
|
if dep[:version].nil?
|
1114
1138
|
the_command = "#{pvars[:pip_path]} install #{dep[:name]}"
|
1115
1139
|
else
|
1116
|
-
the_command = "#{pvars[:pip_path]} install #{dep[:name]}
|
1140
|
+
the_command = "#{pvars[:pip_path]} install #{dep[:name]}==#{dep[:version]}"
|
1117
1141
|
end
|
1118
1142
|
|
1119
1143
|
if @opthash.subopts[:verbose]
|
@@ -1124,7 +1148,7 @@ module URBANopt
|
|
1124
1148
|
puts "status: #{status}"
|
1125
1149
|
puts "stdout: #{stdout}"
|
1126
1150
|
end
|
1127
|
-
if
|
1151
|
+
if !stderr.empty?
|
1128
1152
|
puts "Error installing: #{stderr}"
|
1129
1153
|
end
|
1130
1154
|
end
|
@@ -1293,6 +1317,8 @@ module URBANopt
|
|
1293
1317
|
end
|
1294
1318
|
rescue Errno::ENOENT # Same abort message if there is no run_dir
|
1295
1319
|
abort("ERROR: URBANopt simulations are required before using opendss. Please run and process simulations, then try again.\n")
|
1320
|
+
rescue StandardError => e
|
1321
|
+
puts "\nERROR: #{e.message}"
|
1296
1322
|
end
|
1297
1323
|
|
1298
1324
|
ditto_cli_root = "#{res[:pvars][:ditto_path]} run-opendss "
|
@@ -1336,6 +1362,8 @@ module URBANopt
|
|
1336
1362
|
rescue FileNotFoundError
|
1337
1363
|
abort("\nMust post-process results before running OpenDSS. We recommend 'process --default'." \
|
1338
1364
|
"Once OpenDSS is run, you may then 'process --opendss'")
|
1365
|
+
rescue StandardError => e
|
1366
|
+
puts "\nERROR: #{e.message}"
|
1339
1367
|
end
|
1340
1368
|
end
|
1341
1369
|
|
@@ -1441,6 +1469,8 @@ module URBANopt
|
|
1441
1469
|
runner.post_process
|
1442
1470
|
rescue StandardError => e
|
1443
1471
|
abort("\nError: #{e.message}")
|
1472
|
+
rescue StandardError => e
|
1473
|
+
puts "\nERROR: #{e.message}"
|
1444
1474
|
end
|
1445
1475
|
|
1446
1476
|
# TODO: aggregate back into scenario reports and geojson file
|
@@ -1510,6 +1540,12 @@ module URBANopt
|
|
1510
1540
|
# Ensure reopt default files are prepared
|
1511
1541
|
# create_reopt_files(@opthash.subopts[:scenario])
|
1512
1542
|
|
1543
|
+
if @opthash.subopts[:reopt_resilience] == true
|
1544
|
+
abort('The REopt API is now using open-source optimization solvers; you may experience longer solve times and' \
|
1545
|
+
' timeout errors, especially for evaluations with net metering, resilience, and/or 3+ technologies. ' \
|
1546
|
+
'We will support resilience calculations with the REopt API in a future release.')
|
1547
|
+
end
|
1548
|
+
|
1513
1549
|
scenario_base = default_post_processor.scenario_base
|
1514
1550
|
|
1515
1551
|
# see if reopt-scenario-assumptions-file was passed in, otherwise use the default
|
@@ -1526,7 +1562,8 @@ module URBANopt
|
|
1526
1562
|
if feature[:properties][:district_system_type] && (feature[:properties][:district_system_type] == 'Community Photovoltaic')
|
1527
1563
|
community_photovoltaic << feature
|
1528
1564
|
end
|
1529
|
-
rescue StandardError
|
1565
|
+
rescue StandardError => e
|
1566
|
+
puts "\nERROR: #{e.message}"
|
1530
1567
|
end
|
1531
1568
|
reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(
|
1532
1569
|
scenario_report,
|
@@ -1553,7 +1590,8 @@ module URBANopt
|
|
1553
1590
|
if feature[:properties][:district_system_type] && (feature[:properties][:district_system_type] == 'Ground Mount Photovoltaic')
|
1554
1591
|
groundmount_photovoltaic[feature[:properties][:associated_building_id]] = feature[:properties][:footprint_area]
|
1555
1592
|
end
|
1556
|
-
rescue StandardError
|
1593
|
+
rescue StandardError => e
|
1594
|
+
puts "\nERROR: #{e.message}"
|
1557
1595
|
end
|
1558
1596
|
scenario_report_features = reopt_post_processor.run_scenario_report_features(
|
1559
1597
|
scenario_report: scenario_report,
|
@@ -1739,18 +1777,15 @@ module URBANopt
|
|
1739
1777
|
end
|
1740
1778
|
|
1741
1779
|
des_cli_root = "#{res[:pvars][:gmt_path]} build-sys-param"
|
1742
|
-
if @opthash.subopts[:
|
1743
|
-
des_cli_addition = " #{@opthash.subopts[:
|
1780
|
+
if @opthash.subopts[:sys_param]
|
1781
|
+
des_cli_addition = " #{@opthash.subopts[:sys_param]}"
|
1744
1782
|
if @opthash.subopts[:scenario]
|
1745
1783
|
des_cli_addition += " #{@opthash.subopts[:scenario]}"
|
1746
1784
|
end
|
1747
1785
|
if @opthash.subopts[:feature]
|
1748
1786
|
des_cli_addition += " #{@opthash.subopts[:feature]}"
|
1749
1787
|
end
|
1750
|
-
if @opthash.subopts[:
|
1751
|
-
des_cli_addition += " #{@opthash.subopts[:model_type]}"
|
1752
|
-
end
|
1753
|
-
if @opthash.subopts[:ghe]
|
1788
|
+
if @opthash.subopts[:district_type]
|
1754
1789
|
run_dir = @root_dir / 'run' / @scenario_name.downcase
|
1755
1790
|
ghe_run_dir = run_dir / 'ghe_dir'
|
1756
1791
|
# make ghe run dir
|
@@ -1758,11 +1793,14 @@ module URBANopt
|
|
1758
1793
|
Dir.mkdir ghe_run_dir
|
1759
1794
|
puts "Creating GHE results folder #{ghe_run_dir}"
|
1760
1795
|
end
|
1761
|
-
des_cli_addition += "
|
1796
|
+
des_cli_addition += " #{@opthash.subopts[:district_type]}"
|
1797
|
+
end
|
1798
|
+
if @opthash.subopts[:model_type]
|
1799
|
+
des_cli_addition += " #{@opthash.subopts[:model_type]}"
|
1762
1800
|
end
|
1763
1801
|
if @opthash.subopts[:overwrite]
|
1764
1802
|
puts "\nDeleting and rebuilding existing sys-param file"
|
1765
|
-
des_cli_addition +=
|
1803
|
+
des_cli_addition += ' --overwrite'
|
1766
1804
|
end
|
1767
1805
|
else
|
1768
1806
|
abort("\nCommand must include new system parameter file name, ScenarioFile, & FeatureFile. Please try again")
|
@@ -1771,6 +1809,8 @@ module URBANopt
|
|
1771
1809
|
system(des_cli_root + des_cli_addition)
|
1772
1810
|
rescue FileNotFoundError
|
1773
1811
|
abort("\nMust simulate using 'uo run' before preparing Modelica models.")
|
1812
|
+
rescue StandardError => e
|
1813
|
+
puts "\nERROR: #{e.message}"
|
1774
1814
|
end
|
1775
1815
|
end
|
1776
1816
|
|
@@ -1794,7 +1834,7 @@ module URBANopt
|
|
1794
1834
|
end
|
1795
1835
|
if @opthash.subopts[:overwrite]
|
1796
1836
|
puts "\nDeleting and rebuilding existing Modelica dir"
|
1797
|
-
des_cli_addition +=
|
1837
|
+
des_cli_addition += ' --overwrite'
|
1798
1838
|
end
|
1799
1839
|
else
|
1800
1840
|
abort("\nCommand must include system parameter file name, FeatureFile, and model name. Please try again")
|
@@ -1803,6 +1843,8 @@ module URBANopt
|
|
1803
1843
|
system(des_cli_root + des_cli_addition)
|
1804
1844
|
rescue FileNotFoundError
|
1805
1845
|
abort("\nMust simulate using 'uo run' before preparing Modelica models.")
|
1846
|
+
rescue StandardError => e
|
1847
|
+
puts "\nERROR: #{e.message}"
|
1806
1848
|
end
|
1807
1849
|
end
|
1808
1850
|
|
@@ -1825,6 +1867,8 @@ module URBANopt
|
|
1825
1867
|
system(des_cli_root + des_cli_addition)
|
1826
1868
|
rescue FileNotFoundError
|
1827
1869
|
abort("\nMust simulate using 'uo run' before preparing Modelica models.")
|
1870
|
+
rescue StandardError => e
|
1871
|
+
puts "\nERROR: #{e.message}"
|
1828
1872
|
end
|
1829
1873
|
end
|
1830
1874
|
|
@@ -1872,6 +1916,8 @@ module URBANopt
|
|
1872
1916
|
system(ghe_cli_root + ghe_cli_addition)
|
1873
1917
|
rescue FileNotFoundError
|
1874
1918
|
abort("\nFile Not Found Error Holder.")
|
1919
|
+
rescue StandardError => e
|
1920
|
+
puts "\nERROR: #{e.message}"
|
1875
1921
|
end
|
1876
1922
|
|
1877
1923
|
end
|
@@ -10,7 +10,7 @@ BASE_DIR_NAME=$(dirname `which $0`)
|
|
10
10
|
|
11
11
|
GEM_HOME=${BASE_DIR_NAME}/gems/ruby/2.7.0
|
12
12
|
GEM_PATH=${BASE_DIR_NAME}/gems/ruby/2.7.0
|
13
|
-
PATH=${BASE_DIR_NAME}/ruby/bin:${BASE_DIR_NAME}/gems/ruby/2.7.0/bin:$PATH
|
13
|
+
PATH=${BASE_DIR_NAME}/ruby/bin:${BASE_DIR_NAME}/gems/ruby/2.7.0/bin:${BASE_DIR_NAME}/gems/ruby/2.7.0/gems/urbanopt-cli-0.11.1/example_files/python_deps/Miniconda-4.12.0/bin:$PATH
|
14
14
|
RUBYLIB=${BASE_DIR_NAME}/OpenStudio/Ruby
|
15
15
|
RUBY_DLL_PATH=${BASE_DIR_NAME}/OpenStudio/Ruby
|
16
16
|
|
@@ -24,4 +24,3 @@ echo "export GEM_PATH=\"${GEM_PATH}\"" >> ~/.env_uo.sh
|
|
24
24
|
echo "export PATH=\"${PATH}\"" >> ~/.env_uo.sh
|
25
25
|
echo "export RUBYLIB=\"${RUBYLIB}\"" >> ~/.env_uo.sh
|
26
26
|
echo "export RUBY_DLL_PATH=\"${RUBY_DLL_PATH}\"" >> ~/.env_uo.sh
|
27
|
-
|
data/scripts/setup-env-unix.sh
CHANGED
@@ -9,7 +9,7 @@ BASE_DIR_NAME="$(cd "$(dirname "$0")" && pwd)"
|
|
9
9
|
|
10
10
|
GEM_HOME=${BASE_DIR_NAME}/gems/ruby/2.7.0
|
11
11
|
GEM_PATH=${BASE_DIR_NAME}/gems/ruby/2.7.0
|
12
|
-
PATH=${BASE_DIR_NAME}/ruby/bin:${BASE_DIR_NAME}/gems/ruby/2.7.0/bin:$PATH
|
12
|
+
PATH=${BASE_DIR_NAME}/ruby/bin:${BASE_DIR_NAME}/gems/ruby/2.7.0/bin:${BASE_DIR_NAME}/gems/ruby/2.7.0/gems/urbanopt-cli-0.11.1/example_files/python_deps/Miniconda-4.12.0/bin:$PATH
|
13
13
|
RUBYLIB=${BASE_DIR_NAME}/OpenStudio/Ruby
|
14
14
|
RUBY_DLL_PATH=${BASE_DIR_NAME}/OpenStudio/Ruby
|
15
15
|
|
data/scripts/setup-env.bat
CHANGED
@@ -1,21 +1,20 @@
|
|
1
|
-
IF "%HOMEPATH%"=="" ECHO HOMEPATH is NOT defined. Please set this env value to your home directory before running this script.
|
1
|
+
IF "%HOMEPATH%"=="" ECHO HOMEPATH is NOT defined. Please set this env value to your home directory before running this script.
|
2
2
|
IF "%HOMEPATH%"=="" exit /B
|
3
3
|
|
4
4
|
SET BASE_DIR_NAME=%~d0%~p0
|
5
5
|
|
6
6
|
SET GEM_HOME=%BASE_DIR_NAME%\gems\ruby\2.7.0
|
7
7
|
SET GEM_PATH=%BASE_DIR_NAME%\gems\ruby\2.7.0
|
8
|
-
SET PATH=%BASE_DIR_NAME%\ruby\bin;%BASE_DIR_NAME%\gems\ruby\2.7.0\bin;%PATH%
|
8
|
+
SET PATH=%BASE_DIR_NAME%\ruby\bin;%BASE_DIR_NAME%\gems\ruby\2.7.0\bin;%BASE_DIR_NAME%\gems\ruby\2.7.0\gems\urbanopt-cli-0.11.1\example_files\python_deps\python-3.10;%PATH%
|
9
9
|
SET RUBYLIB=%BASE_DIR_NAME%\OpenStudio\Ruby
|
10
10
|
SET RUBY_DLL_PATH=%BASE_DIR_NAME%\OpenStudio\Ruby
|
11
11
|
|
12
12
|
IF EXIST %HOMEPATH%\.env_uo.bat (
|
13
13
|
del "%HOMEPATH%\.env_uo.bat"
|
14
|
-
)
|
14
|
+
)
|
15
15
|
|
16
16
|
echo SET "GEM_HOME=%GEM_HOME%">> "%HOMEPATH%\.env_uo.bat"
|
17
17
|
echo SET "GEM_PATH=%GEM_PATH%">> "%HOMEPATH%\.env_uo.bat"
|
18
18
|
echo SET "PATH=%PATH%">> "%HOMEPATH%\.env_uo.bat"
|
19
19
|
echo SET "RUBYLIB=%RUBYLIB%">> "%HOMEPATH%\.env_uo.bat"
|
20
20
|
echo SET "RUBY_DLL_PATH=%RUBY_DLL_PATH%">> "%HOMEPATH%\.env_uo.bat"
|
21
|
-
|
data/scripts/setup-env.ps1
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# This is a simple setup script that generates an enviroment file that
|
2
|
-
# is used to setup the ruby enviroment to run the urbanopt-cli tool.
|
3
|
-
# To use just run this script in powershell (e.g. ./setup-env.ps1)
|
4
|
-
# Then you can use this env.ps1 to setup the enviroment.
|
5
|
-
# (e.g. . env.ps1)
|
1
|
+
# This is a simple setup script that generates an enviroment file that
|
2
|
+
# is used to setup the ruby enviroment to run the urbanopt-cli tool.
|
3
|
+
# To use just run this script in powershell (e.g. ./setup-env.ps1)
|
4
|
+
# Then you can use this env.ps1 to setup the enviroment.
|
5
|
+
# (e.g. . env.ps1)
|
6
6
|
|
7
7
|
if (-not (Test-Path $HOME)) { echo "env HOME needs to be set before running this script" }
|
8
8
|
if (-not (Test-Path $HOME)) { exit }
|
@@ -11,7 +11,7 @@ $BASE_DIR_NAME = $PSScriptRoot
|
|
11
11
|
|
12
12
|
$env:GEM_HOME = "$BASE_DIR_NAME\gems\ruby\2.7.0"
|
13
13
|
$env:GEM_PATH = "$BASE_DIR_NAME\gems\ruby\2.7.0"
|
14
|
-
$env:PATH += ";$BASE_DIR_NAME\ruby\bin;$BASE_DIR_NAME\gems\ruby\2.7.0\bin"
|
14
|
+
$env:PATH += ";$BASE_DIR_NAME\ruby\bin;$BASE_DIR_NAME\gems\ruby\2.7.0\bin;$BASE_DIR_NAME\gems\ruby\2.7.0\gems\urbanopt-cli-0.11.1\example_files\python_deps\python-3.10"
|
15
15
|
$env:RUBYLIB = "$BASE_DIR_NAME\OpenStudio\Ruby"
|
16
16
|
$env:RUBY_DLL_PATH = "$BASE_DIR_NAME\OpenStudio\Ruby"
|
17
17
|
|
@@ -23,4 +23,3 @@ Remove-Item $HOME/.env_uo.ps1 -ErrorAction Ignore
|
|
23
23
|
'$env:PATH = "' + $env:PATH + '"' >> $HOME/.env_uo.ps1
|
24
24
|
'$env:RUBYLIB = "' + $env:RUBYLIB + '"' >> $HOME/.env_uo.ps1
|
25
25
|
'$env:RUBY_DLL_PATH = "' + $env:RUBY_DLL_PATH + '"' >> $HOME/.env_uo.ps1
|
26
|
-
|
data/uo_cli.gemspec
CHANGED
@@ -35,10 +35,10 @@ Gem::Specification.new do |spec|
|
|
35
35
|
# use specific versions of urbanopt and openstudio dependencies while under heavy development
|
36
36
|
spec.add_runtime_dependency 'optimist', '~> 3'
|
37
37
|
spec.add_runtime_dependency 'urbanopt-geojson', '~> 0.11.1'
|
38
|
-
spec.add_runtime_dependency 'urbanopt-reopt', '~> 0.
|
39
|
-
spec.add_runtime_dependency 'urbanopt-reporting', '~> 0.
|
38
|
+
spec.add_runtime_dependency 'urbanopt-reopt', '~> 0.12.0'
|
39
|
+
spec.add_runtime_dependency 'urbanopt-reporting', '~> 0.10.0'
|
40
40
|
spec.add_runtime_dependency 'urbanopt-rnm-us', '~> 0.7.0'
|
41
|
-
spec.add_runtime_dependency 'urbanopt-scenario', '~> 0.
|
41
|
+
spec.add_runtime_dependency 'urbanopt-scenario', '~> 0.12.0'
|
42
42
|
|
43
43
|
spec.add_development_dependency 'bundler', '~> 2.1'
|
44
44
|
spec.add_development_dependency 'rake', '~> 13.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanopt-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NREL URBANopt team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: optimist
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.12.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.12.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: urbanopt-reporting
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.10.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.10.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: urbanopt-rnm-us
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
89
|
+
version: 0.12.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
96
|
+
version: 0.12.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,7 +206,6 @@ files:
|
|
206
206
|
- bin/setup
|
207
207
|
- bin/uo
|
208
208
|
- example_files/Gemfile
|
209
|
-
- example_files/Gemfile.lock
|
210
209
|
- example_files/class_project_coincident.json
|
211
210
|
- example_files/class_project_diverse.json
|
212
211
|
- example_files/disco/config.json
|