From f174ed7147e568890d4df1958455976ae004181f Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 05:55:08 +0000 Subject: [PATCH 01/24] Update ckan-compose repository URL and branch --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 43e0607..92bb898 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,7 +55,7 @@ fn main() -> Result<()> { let default_config_text = r#" The default configuration for ckan-devstaller does the following: - Install openssh-server to enable SSH access - - Install ckan-compose (https://github.com/tino097/ckan-compose) which sets up the CKAN backend (PostgreSQL, SOLR, Redis) + - Install ckan-compose (https://github.com/a5dur/ckan-compose) which sets up the CKAN backend (PostgreSQL, SOLR, Redis) - Install CKAN v2.11.3 - Install the DataStore extension - Install the ckanext-scheming extension @@ -200,7 +200,7 @@ fn main() -> Result<()> { step_text("5."), ); if !std::fs::exists(format!("/home/{username}/ckan-compose"))? { - cmd!(sh, "git clone https://github.com/tino097/ckan-compose.git").run()?; + cmd!(sh, "git clone --branch solr-9-impl https://github.com/a5dur/ckan-compose.git").run()?; } sh.change_dir(format!("/home/{username}/ckan-compose")); cmd!(sh, "git switch ckan-devstaller").run()?; From c50734e1da0dae82c0c88a5f2d21728c6f62c424 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 06:24:21 +0000 Subject: [PATCH 02/24] Change Ahoy installation for ARM architecture --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 92bb898..362bf49 100644 --- a/src/main.rs +++ b/src/main.rs @@ -190,8 +190,8 @@ fn main() -> Result<()> { println!("\n{} Installing Ahoy...", step_text("4."),); sh.change_dir(format!("/home/{username}")); - cmd!(sh, "sudo curl -LO https://github.com/ahoy-cli/ahoy/releases/download/v2.5.0/ahoy-bin-linux-amd64").run()?; - cmd!(sh, "mv ./ahoy-bin-linux-amd64 ./ahoy").run()?; + cmd!(sh, "sudo curl -LO https://github.com/ahoy-cli/ahoy/releases/download/v2.5.0/ahoy-bin-linux-arm64").run()?; + cmd!(sh, "mv ./ahoy-bin-linux-arm64 ./ahoy").run()?; cmd!(sh, "sudo chmod +x ./ahoy").run()?; println!("{}", success_text("✅ 4. Successfully installed Ahoy.")); From c488e4ecb73510c1ee4468f8bfa87afa4e1f8103 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 06:41:46 +0000 Subject: [PATCH 03/24] Remove git switch command for ckan-devstaller branch Removed the command to switch to the 'ckan-devstaller' branch in the ckan-compose repository. --- src/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 362bf49..52cdc03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -194,7 +194,7 @@ fn main() -> Result<()> { cmd!(sh, "mv ./ahoy-bin-linux-arm64 ./ahoy").run()?; cmd!(sh, "sudo chmod +x ./ahoy").run()?; println!("{}", success_text("✅ 4. Successfully installed Ahoy.")); - + println!( "\n{} Downloading, installing, and starting ckan-compose...", step_text("5."), @@ -203,10 +203,10 @@ fn main() -> Result<()> { cmd!(sh, "git clone --branch solr-9-impl https://github.com/a5dur/ckan-compose.git").run()?; } sh.change_dir(format!("/home/{username}/ckan-compose")); - cmd!(sh, "git switch ckan-devstaller").run()?; + // Remove this line: cmd!(sh, "git switch ckan-devstaller").run()?; let env_data = "PROJECT_NAME=ckan-devstaller-project -DATASTORE_READONLY_PASSWORD=pass -POSTGRES_PASSWORD=pass"; + DATASTORE_READONLY_PASSWORD=pass + POSTGRES_PASSWORD=pass"; std::fs::write(format!("/home/{username}/ckan-compose/.env"), env_data)?; cmd!(sh, "sudo ../ahoy up").run()?; println!("{}", success_text("✅ 5. Successfully ran ckan-compose.")); From 4aab934857a064dbdaa21a5a4d85ac2df19441af Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 06:44:51 +0000 Subject: [PATCH 04/24] Update main.rs --- src/main.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main.rs b/src/main.rs index 52cdc03..8ec4746 100644 --- a/src/main.rs +++ b/src/main.rs @@ -208,6 +208,9 @@ fn main() -> Result<()> { DATASTORE_READONLY_PASSWORD=pass POSTGRES_PASSWORD=pass"; std::fs::write(format!("/home/{username}/ckan-compose/.env"), env_data)?; + cmd!(sh, "sudo ../ahoy down").run()?; + cmd!(sh, "sudo docker system prune -f").run()?; + cmd!(sh, "sudo ../ahoy up").run()?; cmd!(sh, "sudo ../ahoy up").run()?; println!("{}", success_text("✅ 5. Successfully ran ckan-compose.")); From bc0910b4cd8603cdd5a58d0707911a6723abfa60 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 06:48:11 +0000 Subject: [PATCH 05/24] Remove mailcatcher container before ckan-compose up Added command to remove mailcatcher container before starting ckan-compose. --- src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 8ec4746..919b6c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -210,7 +210,8 @@ fn main() -> Result<()> { std::fs::write(format!("/home/{username}/ckan-compose/.env"), env_data)?; cmd!(sh, "sudo ../ahoy down").run()?; cmd!(sh, "sudo docker system prune -f").run()?; - cmd!(sh, "sudo ../ahoy up").run()?; + // Replace the `sudo ../ahoy up` line with: + cmd!(sh, "sudo docker container rm -f ckan-compose_mailcatcher_1").run().ok(); // ok() to ignore if it doesn't exist cmd!(sh, "sudo ../ahoy up").run()?; println!("{}", success_text("✅ 5. Successfully ran ckan-compose.")); From dc1bf9bcfaacd47faa9a8ec29e7c3ab1f6ab0827 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 06:50:48 +0000 Subject: [PATCH 06/24] Remove existing CKAN installation if present Add command to remove existing CKAN installation --- src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.rs b/src/main.rs index 919b6c6..6f70cc4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -221,6 +221,7 @@ fn main() -> Result<()> { config.ckan_version ); cmd!(sh, "sudo apt install python3-dev libpq-dev python3-pip python3-venv git-core redis-server -y").run()?; + cmd!(sh, "sudo rm -rf /usr/lib/ckan").run().ok(); // Remove whatever exists (ok() to ignore if nothing exists) cmd!(sh, "sudo mkdir -p /usr/lib/ckan/default").run()?; cmd!(sh, "sudo chown {username} /usr/lib/ckan/default").run()?; let venv_path = PathBuf::from_str("/usr/lib/ckan/default")?; From aaf465569088d35a25dbe8bd26811fdef71a0aa6 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 06:54:24 +0000 Subject: [PATCH 07/24] Remove existing CKAN directory if it exists Add command to remove existing CKAN directory before creating a new one. --- src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.rs b/src/main.rs index 6f70cc4..98f693d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -234,6 +234,7 @@ fn main() -> Result<()> { ) .as_str(), )?; + cmd!(sh, "sudo rm -rf /etc/ckan").run().ok(); // Remove whatever exists cmd!(sh, "sudo mkdir -p /etc/ckan/default").run()?; cmd!(sh, "sudo chown -R {username} /etc/ckan/").run()?; cmd!( From 88f03cee9ba6d92ecce68ecb0c04a57668e1cf7c Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:12:14 +0000 Subject: [PATCH 08/24] Refactor permissions handling for DataStore plugin Updated permissions handling for DataStore plugin by using an absolute path for the permissions.sql file and removed unnecessary change directory command. --- src/main.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 98f693d..3bc20f7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -268,7 +268,7 @@ fn main() -> Result<()> { "{}", success_text(format!("✅ 6. Installed CKAN {}.", config.ckan_version).as_str()) ); - + if config.extension_datapusher_plus { println!( "\n{} Enabling DataStore plugin, adding config URLs in /etc/ckan/default/ckan.ini and updating permissions...", @@ -299,17 +299,20 @@ fn main() -> Result<()> { "ckan -c /etc/ckan/default/ckan.ini datastore set-permissions" ) .read()?; - std::fs::write("permissions.sql", set_permissions_output)?; + + // Use absolute path for permissions.sql file + let permissions_file = format!("/home/{username}/ckan-compose/permissions.sql"); + std::fs::write(&permissions_file, set_permissions_output)?; loop { std::thread::sleep(std::time::Duration::from_secs(2)); - if std::fs::exists("permissions.sql")? { + if std::fs::exists(&permissions_file)? { break; } } - sh.change_dir(format!("/home/{username}")); + // Removed sh.change_dir line - no longer needed cmd!( sh, - "sudo docker cp permissions.sql {postgres_container_id}:/permissions.sql" + "sudo docker cp {permissions_file} {postgres_container_id}:/permissions.sql" ) .run()?; cmd!(sh, "sudo docker exec {postgres_container_id} psql -U ckan_default --set ON_ERROR_STOP=1 -f permissions.sql").run()?; @@ -319,6 +322,8 @@ fn main() -> Result<()> { "✅ 7. Enabled DataStore plugin, set DataStore URLs in /etc/ckan/default/ckan.ini, and updated permissions." ) ); + } + println!( "{}", From d46114e302bf2bea5d112e3d6468d29c4ca3cf4d Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:15:29 +0000 Subject: [PATCH 09/24] Add logging for DataStore plugin and extensions installation --- src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.rs b/src/main.rs index 3bc20f7..7db9d8f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -269,6 +269,7 @@ fn main() -> Result<()> { success_text(format!("✅ 6. Installed CKAN {}.", config.ckan_version).as_str()) ); + if config.extension_datapusher_plus { println!( "\n{} Enabling DataStore plugin, adding config URLs in /etc/ckan/default/ckan.ini and updating permissions...", @@ -325,6 +326,7 @@ fn main() -> Result<()> { } + println!( "{}", step_text("\n{} Installing ckanext-scheming and DataPusher+ extensions..."), From a02565cdd8848d9c2c97c446e8eb0884d2726951 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:19:54 +0000 Subject: [PATCH 10/24] Fix formatting in main.rs --- src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 7db9d8f..1e2aba4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -323,7 +323,7 @@ fn main() -> Result<()> { "✅ 7. Enabled DataStore plugin, set DataStore URLs in /etc/ckan/default/ckan.ini, and updated permissions." ) ); - } + From bb0c3d36a9cf235c9897de5d4153f94323d7484e Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:34:44 +0000 Subject: [PATCH 11/24] Add user removal before sysadmin addition Attempt to remove existing user before adding new sysadmin. --- src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.rs b/src/main.rs index 1e2aba4..6f5f7a2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -258,6 +258,7 @@ fn main() -> Result<()> { let sysadmin_username = config.sysadmin.username; let sysadmin_password = config.sysadmin.password; let sysadmin_email = config.sysadmin.email; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove {username}").run().ok(); // Try to remove the existing user (use .ok() so it doesn't fail if user doesn't exist) cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {sysadmin_username} password={sysadmin_password} email={sysadmin_email}").run()?; cmd!( sh, From bfb6bc2f7278140e2f14e81c5d91d47f65ed735c Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:43:06 +0000 Subject: [PATCH 12/24] Enhance user management in main.rs Added logic to list existing users and add a new admin user. --- src/main.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6f5f7a2..77cbd24 100644 --- a/src/main.rs +++ b/src/main.rs @@ -258,11 +258,13 @@ fn main() -> Result<()> { let sysadmin_username = config.sysadmin.username; let sysadmin_password = config.sysadmin.password; let sysadmin_email = config.sysadmin.email; - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove {username}").run().ok(); // Try to remove the existing user (use .ok() so it doesn't fail if user doesn't exist) - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {sysadmin_username} password={sysadmin_password} email={sysadmin_email}").run()?; + let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; + println!("Existing users: {}", existing_users); + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_user password=password email=admin@localhost").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user").run()?; cmd!( sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add {sysadmin_username}" + "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user" ) .run()?; println!( From d20d2bfec761d93be600a9d9adbc6bf2d8a374a8 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:52:58 +0000 Subject: [PATCH 13/24] Install GDAL and geospatial dependencies Added installation commands for GDAL and geospatial dependencies, including setting GDAL environment variables. --- src/main.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main.rs b/src/main.rs index 77cbd24..bf0f67f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -357,6 +357,14 @@ fn main() -> Result<()> { // Install DataPusher+ cmd!(sh, "sudo apt install python3-virtualenv python3-dev python3-pip python3-wheel build-essential libxslt1-dev libxml2-dev zlib1g-dev git libffi-dev libpq-dev uchardet -y").run()?; sh.change_dir("/usr/lib/ckan/default/src"); + // Install GDAL and other geospatial dependencies + cmd!(sh, "sudo apt update").run()?; + cmd!(sh, "sudo apt install -y gdal-bin libgdal-dev libproj-dev libgeos-dev").run()?; + + // Set GDAL environment variables for the build + let gdal_version = cmd!(sh, "gdal-config --version").read()?; + std::env::set_var("GDAL_VERSION", gdal_version.trim()); + cmd!(sh, "pip install -e git+https://github.com/dathere/datapusher-plus.git@main#egg=datapusher-plus").run()?; sh.change_dir("/usr/lib/ckan/default/src/datapusher-plus"); cmd!(sh, "pip install -r requirements.txt").run()?; From f686bd7b2ec8df47509f39ad447515a021b54405 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 07:54:49 +0000 Subject: [PATCH 14/24] Refactor GDAL installation and version handling Updated GDAL installation commands and added explicit version handling. --- src/main.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index bf0f67f..49d6f9d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -357,15 +357,16 @@ fn main() -> Result<()> { // Install DataPusher+ cmd!(sh, "sudo apt install python3-virtualenv python3-dev python3-pip python3-wheel build-essential libxslt1-dev libxml2-dev zlib1g-dev git libffi-dev libpq-dev uchardet -y").run()?; sh.change_dir("/usr/lib/ckan/default/src"); - // Install GDAL and other geospatial dependencies + // Install GDAL dependencies cmd!(sh, "sudo apt update").run()?; - cmd!(sh, "sudo apt install -y gdal-bin libgdal-dev libproj-dev libgeos-dev").run()?; - - // Set GDAL environment variables for the build - let gdal_version = cmd!(sh, "gdal-config --version").read()?; - std::env::set_var("GDAL_VERSION", gdal_version.trim()); - - cmd!(sh, "pip install -e git+https://github.com/dathere/datapusher-plus.git@main#egg=datapusher-plus").run()?; + cmd!(sh, "sudo apt install -y gdal-bin libgdal-dev libproj-dev libgeos-dev python3-gdal").run()?; + + // Get GDAL version and export it + let gdal_version_output = cmd!(sh, "gdal-config --version").read()?; + let gdal_version = gdal_version_output.trim(); + + // Install with explicit GDAL version + cmd!(sh, "GDAL_VERSION={gdal_version} pip install -e git+https://github.com/dathere/datapusher-plus.git@main#egg=datapusher-plus").run()?; sh.change_dir("/usr/lib/ckan/default/src/datapusher-plus"); cmd!(sh, "pip install -r requirements.txt").run()?; sh.change_dir(format!("/home/{username}")); From 2d897b9546e16015732086ed510f4da6028114f1 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 08:01:11 +0000 Subject: [PATCH 15/24] Refactor user management for CKAN installation --- src/main.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 49d6f9d..17f268d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -259,13 +259,19 @@ fn main() -> Result<()> { let sysadmin_password = config.sysadmin.password; let sysadmin_email = config.sysadmin.email; let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; - println!("Existing users: {}", existing_users); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_user password=password email=admin@localhost").run()?; - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user").run()?; - cmd!( - sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user" - ) + let user_check = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user show {username}").run(); + match user_check { + Ok(_) => { + // User exists, just make sure they're a sysadmin + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}").run().ok(); + println!("User {username} already exists, ensured sysadmin privileges."); + }, + Err(_) => { + // User doesn't exist, create them + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {username} password=password email={username}@localhost").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}").run()?; + } + } .run()?; println!( "{}", From 3b76862c0a2de8c1693da8fca1635842ecef0125 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 08:05:51 +0000 Subject: [PATCH 16/24] Simplify user creation and sysadmin assignment Refactored user management logic to always add user and sysadmin privileges. --- src/main.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index 17f268d..ebaa606 100644 --- a/src/main.rs +++ b/src/main.rs @@ -259,19 +259,12 @@ fn main() -> Result<()> { let sysadmin_password = config.sysadmin.password; let sysadmin_email = config.sysadmin.email; let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; - let user_check = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user show {username}").run(); - match user_check { - Ok(_) => { - // User exists, just make sure they're a sysadmin - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}").run().ok(); - println!("User {username} already exists, ensured sysadmin privileges."); - }, - Err(_) => { - // User doesn't exist, create them - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {username} password=password email={username}@localhost").run()?; - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}").run()?; - } - } + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {username} password=password email={username}@localhost").run()?; + cmd!( + sh, + "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user" + ) .run()?; println!( "{}", From 34f761a2d72354360e920a41d2de8a3924b50e95 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 08:11:27 +0000 Subject: [PATCH 17/24] Change username for user addition to 'admin_user' --- src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index ebaa606..6ca34eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -259,8 +259,9 @@ fn main() -> Result<()> { let sysadmin_password = config.sysadmin.password; let sysadmin_email = config.sysadmin.email; let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; + println!("Existing users: {}", existing_users); cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {username} password=password email={username}@localhost").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_user password=password email=admin_user@localhost").run()?; cmd!( sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user" From 7cc41fef7abe101b83a5878dd5d29ee5ee4cc276 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 08:18:29 +0000 Subject: [PATCH 18/24] Update main.rs --- src/main.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6ca34eb..b8d521e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -260,11 +260,12 @@ fn main() -> Result<()> { let sysadmin_email = config.sysadmin.email; let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; println!("Existing users: {}", existing_users); + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove existing_users").run().ok(); cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_user password=password email=admin_user@localhost").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add ckan_admin password=password email=ckan_admin@localhost").run()?; cmd!( sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user" + "ckan -c /etc/ckan/default/ckan.ini sysadmin add ckan_admin" ) .run()?; println!( From 258cfa55c1711c1ef89cc94487674cedf841a348 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 08:41:18 +0000 Subject: [PATCH 19/24] Update installation commands and GDAL version handling --- src/main.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index b8d521e..17b0c6d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -359,22 +359,21 @@ fn main() -> Result<()> { cmd!(sh, "sudo apt install python3-virtualenv python3-dev python3-pip python3-wheel build-essential libxslt1-dev libxml2-dev zlib1g-dev git libffi-dev libpq-dev uchardet -y").run()?; sh.change_dir("/usr/lib/ckan/default/src"); // Install GDAL dependencies - cmd!(sh, "sudo apt update").run()?; - cmd!(sh, "sudo apt install -y gdal-bin libgdal-dev libproj-dev libgeos-dev python3-gdal").run()?; + //cmd!(sh, "sudo apt install -y gdal-bin libgdal-dev libproj-dev libgeos-dev python3-gdal").run()?; // Get GDAL version and export it - let gdal_version_output = cmd!(sh, "gdal-config --version").read()?; - let gdal_version = gdal_version_output.trim(); + //let gdal_version_output = cmd!(sh, "gdal-config --version").read()?; + //let gdal_version = gdal_version_output.trim(); // Install with explicit GDAL version - cmd!(sh, "GDAL_VERSION={gdal_version} pip install -e git+https://github.com/dathere/datapusher-plus.git@main#egg=datapusher-plus").run()?; + cmd!(sh, "pip install -e git+https://github.com/dathere/datapusher-plus.git@2.0.0#egg=datapusher-plus").run()?; sh.change_dir("/usr/lib/ckan/default/src/datapusher-plus"); cmd!(sh, "pip install -r requirements.txt").run()?; sh.change_dir(format!("/home/{username}")); - cmd!(sh, "wget https://github.com/dathere/qsv/releases/download/4.0.0/qsv-4.0.0-x86_64-unknown-linux-gnu.zip").run()?; + cmd!(sh, "wget https://github.com/dathere/qsv/releases/download/4.0.0/qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; cmd!(sh, "sudo apt install unzip -y").run()?; - cmd!(sh, "unzip qsv-4.0.0-x86_64-unknown-linux-gnu.zip").run()?; - cmd!(sh, "sudo rm -rf qsv-4.0.0-x86_64-unknown-linux-gnu.zip").run()?; + cmd!(sh, "unzip qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; + cmd!(sh, "sudo rm -rf qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; cmd!(sh, "sudo mv ./qsvdp_glibc-2.31 /usr/local/bin/qsvdp").run()?; let mut conf = ini::Ini::load_from_file("/etc/ckan/default/ckan.ini")?; let app_main_section = conf.section_mut(Some("app:main")).unwrap(); From f150a6b9225849188398114a11106cb7203083ac Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 11:59:30 +0000 Subject: [PATCH 20/24] Comment out user removal and index clear commands Comment out user removal and index clearing commands while adding a new sysadmin user. --- src/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 17b0c6d..785ab25 100644 --- a/src/main.rs +++ b/src/main.rs @@ -260,12 +260,12 @@ fn main() -> Result<()> { let sysadmin_email = config.sysadmin.email; let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; println!("Existing users: {}", existing_users); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove existing_users").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add ckan_admin password=password email=ckan_admin@localhost").run()?; + //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove existing_users").run().ok(); + //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add sysadmin_username password=password email=sysadmin_username@localhost").run()?; cmd!( sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add ckan_admin" + "ckan -c /etc/ckan/default/ckan.ini sysadmin add sysadmin_username" ) .run()?; println!( From 8e4f764a6205b242768e537ebbe8e2ecfdd4ff65 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 12:25:28 +0000 Subject: [PATCH 21/24] Refactor user addition and update command execution --- src/main.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 785ab25..bb7fc84 100644 --- a/src/main.rs +++ b/src/main.rs @@ -262,10 +262,10 @@ fn main() -> Result<()> { println!("Existing users: {}", existing_users); //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove existing_users").run().ok(); //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add sysadmin_username password=password email=sysadmin_username@localhost").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {sysadmin_username} password={sysadmin_password} email={sysadmin_email}").run()?; cmd!( sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add sysadmin_username" + "ckan -c /etc/ckan/default/ckan.ini sysadmin add {sysadmin_username}" ) .run()?; println!( @@ -374,7 +374,8 @@ fn main() -> Result<()> { cmd!(sh, "sudo apt install unzip -y").run()?; cmd!(sh, "unzip qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; cmd!(sh, "sudo rm -rf qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; - cmd!(sh, "sudo mv ./qsvdp_glibc-2.31 /usr/local/bin/qsvdp").run()?; + //cmd!(sh, "sudo mv ./qsvdp_glibc-2.31 /usr/local/bin/qsvdp").run()?; + cmd!(sh, "sudo mv ./qsvdp /usr/local/bin/qsvdp").run()?; let mut conf = ini::Ini::load_from_file("/etc/ckan/default/ckan.ini")?; let app_main_section = conf.section_mut(Some("app:main")).unwrap(); let mut ckan_plugins = app_main_section.get("ckan.plugins").unwrap().to_string(); From 581d326e3825e3559694ebf29be46509d462845f Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Fri, 5 Sep 2025 03:53:52 +0000 Subject: [PATCH 22/24] Change sysadmin user creation to admin_ckan --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index bb7fc84..1293a9b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -262,10 +262,10 @@ fn main() -> Result<()> { println!("Existing users: {}", existing_users); //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove existing_users").run().ok(); //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {sysadmin_username} password={sysadmin_password} email={sysadmin_email}").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_ckan password=password email=admin@local").run()?; cmd!( sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add {sysadmin_username}" + "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_ckan" ) .run()?; println!( From f452482d1232c9516458d29fe1272e34a69b2718 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Fri, 5 Sep 2025 04:40:29 +0000 Subject: [PATCH 23/24] Update path for dpp_default_config.ini --- src/main.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1293a9b..63f3da9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -441,12 +441,15 @@ ckanext.datapusher_plus.file_bin = /usr/bin/file ckanext.datapusher_plus.enable_druf = false ckanext.datapusher_plus.enable_form_redirect = true "#; - std::fs::write("dpp_default_config.ini", dpp_default_config)?; + + let dpp_config_path = format!("/home/{username}/dpp_default_config.ini"); + std::fs::write(&dpp_config_path, dpp_default_config)?; cmd!( sh, - "ckan config-tool /etc/ckan/default/ckan.ini -f dpp_default_config.ini" + "ckan config-tool /etc/ckan/default/ckan.ini -f {dpp_config_path}" ) .run()?; + let resource_formats_str = std::fs::read_to_string( "/usr/lib/ckan/default/src/ckan/config/resource_formats.json", )?; From 02edf6466c944112ceb09e3c857badfa61f4e56f Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Wed, 10 Sep 2025 21:13:21 +0000 Subject: [PATCH 24/24] Comment out user addition and update unzip command Comment out CKAN user and sysadmin addition commands, and modify unzip command to suppress output. --- src/main.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 63f3da9..9019819 100644 --- a/src/main.rs +++ b/src/main.rs @@ -262,12 +262,12 @@ fn main() -> Result<()> { println!("Existing users: {}", existing_users); //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user remove existing_users").run().ok(); //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini search-index clear").run().ok(); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_ckan password=password email=admin@local").run()?; - cmd!( - sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_ckan" - ) - .run()?; + //cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_ckan password=password email=admin@local").run()?; + //cmd!( + // sh, + // "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_ckan" + //) + //.run()?; println!( "{}", success_text(format!("✅ 6. Installed CKAN {}.", config.ckan_version).as_str()) @@ -372,7 +372,7 @@ fn main() -> Result<()> { sh.change_dir(format!("/home/{username}")); cmd!(sh, "wget https://github.com/dathere/qsv/releases/download/4.0.0/qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; cmd!(sh, "sudo apt install unzip -y").run()?; - cmd!(sh, "unzip qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; + cmd!(sh, "unzip -qo qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; cmd!(sh, "sudo rm -rf qsv-4.0.0-aarch64-unknown-linux-gnu.zip").run()?; //cmd!(sh, "sudo mv ./qsvdp_glibc-2.31 /usr/local/bin/qsvdp").run()?; cmd!(sh, "sudo mv ./qsvdp /usr/local/bin/qsvdp").run()?; @@ -385,7 +385,7 @@ fn main() -> Result<()> { "ckan config-tool /etc/ckan/default/ckan.ini -s app:main ckan.plugins={ckan_plugins}" ) .run()?; - cmd!(sh, "ckan config-tool /etc/ckan/default/ckan.ini -s app:main scheming.dataset_schemas=ckanext.datapusher_plus:dataset-druf.yaml").run()?; + // cmd!(sh, "ckan config-tool /etc/ckan/default/ckan.ini -s app:main scheming.dataset_schemas=ckanext.datapusher_plus:dataset-druf.yaml").run()?; // app_main_section.insert("ckan.plugins", ckan_plugins); // app_main_section.insert( // "scheming.dataset_schemas",