// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r#"(?s)desc\s*"(((?!").)*)((?!\n).)*\n{1}task\s*:(((?!\n).)*)do(((?!\nend).)*)\nend"#).unwrap();
let string = "import 'cloud2/cloud2.rb'
desc \"transfer db from current location to local and new dev\"
task :fulldbtransfer => [
:dbdown, :dbup,
:dbup_live,]
$comps_db = ['prube_yalecomps']
$tnew_dbs = [ 'prube_yaletnew_drama_prod',
'prube_yaletnew_summer_cabaret_prod',
'prube_yaletnew_cabaret_prod',
'prube_yaletnew_music_prod',
'prube_yaletnew_rep_prod']
$new_tnew_dbs = [ 'prube_yaletnew_drama',
'prube_yaletnew_summer_cabaret',
'prube_yaletnew_cabaret',
'prube_yaletnew_music',
'prube_yaletnew_rep']
all_erube_dbs = $comps_db + $tnew_dbs
desc \"Transfer Database, complete with tunnel setup and teardown\"
task :dbdown do
all_erube_dbs.each do |database_name|
cloud2_mysqldump do tunnel_host 'cumulus-www-master-pub.rs.lynch2.com'
tunnel_user 'www' db_host 'cumulus-db-master.rs.lynch2.com' skip_secure_auth true
db_user 'mysql'
db_pass 'mysql'
db_name \" file_prefix 'SOURCE_'
ignored_tables ['cache','hits','debug','sessionvars','sessions']
end
end
end
task :dbsandr do
dbname = \"prube_yalecomps\"
bucket_prefix = \"comps\"
cloud2_sed do
source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_
find_str [ ]
replace_str [ ] end
dbname = \"prube_yaletnew_drama_prod\"
bucket_prefix = \"drame\"
cloud2_sed do
source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_
find_str [
'prube_yaletnew_drama_prod', ]
replace_str [
\"prube_yaletnew_drama\", ] end
dbname = \"prube_yaletnew_summer_cabaret_prod\"
bucket_prefix = \"summer-cabaret\"
cloud2_sed do
source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_
find_str [
'prube_yaletnew_summer_cabaret_prod', ]
replace_str [
'prube_yaletnew_summer_cabaret', ] end
dbname = \"prube_yaletnew_cabaret_prod\"
bucket_prefix = \"cabaret\"
cloud2_sed do
source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_
find_str [
'prube_yaletnew_cabaret_prod', ]
replace_str [
'prube_yaletnew_cabaret', ] end
dbname = \"prube_yaletnew_music_prod\"
bucket_prefix = \"music\"
cloud2_sed do
source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_
find_str [
'prube_yaletnew_music_prod', ]
replace_str [
'prube_yaletnew_music', ] end
dbname = \"prube_yaletnew_rep_prod\"
bucket_prefix = \"rep\"
cloud2_sed do
source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_
find_str [
'prube_yaletnew_rep_prod', ]
replace_str [
'prube_yaletnew_rep', ] end
end
desc \"Send Database to tigard-dev-rds\"
task :dbup do
upload_dbs \"reston-dev-rds.aws.lynch2.com\"
end
desc \"Send Database to tigard-mail2-rds\"
task :dbup_live do
upload_dbs \"reston-live-rds.aws.lynch2.com\"
end
def upload_dbs (dbhost)
$comps_db.each do |database_name|
cloud2_mysql do db_host dbhost
db_user 'mysql'
db_pass 'mysql'
db_name \"mysql\" sql_files [\"CLOUD2_ end
cloud2_mysql do db_host dbhost
db_user 'mysql'
db_pass 'mysql'
db_name \" sql_files [\"erube_upgrade.sql\"]
end
end
$new_tnew_dbs.each do |database_name|
cloud2_mysql do db_host dbhost
db_user 'mysql'
db_pass 'mysql'
db_name \"mysql\" sql_files [\"CLOUD2_ end
cloud2_mysql do db_host dbhost
db_user 'mysql'
db_pass 'mysql'
db_name \" sql_files [\"tnew_erube_upgrade.sql\"]
end
end
end
";
// result will be a tuple containing the start and end indices for the first match in the string
let result = regex.captures(string);
let (start, end) = match result {
Some((s, e)) => (s, e),
None => {
// ...
}
};
println!("{}", &string[start, end]);
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/